객체 지향 프로그래밍 (OOP : Object Oriented Programming) 개념 및 활용
객체 지향 프로그래밍(OOP)의 핵심 개념인 추상화, 캡슐화, 상속, 다형성, 동적 바인딩을 예시와 함께 알아봅니다.
객체 지향 프로그래밍이란?
컴퓨터 프로그램을 하나의 ‘객체’들의 모임으로 파악하고자 하는 패러다임.
각 객체들은 서로 메세지를 주고 받을 수 있으며 데이터를 처리할 수 있다.
객체 지향 프로그래밍의 장점
프로그램 유지,보수에 유리하다.
직관적인 코드 분석이 가능하다.
강한 응집력, 약한 결합력
응집력 : 프로그램의 한 요소가 해당 기능을 수행하기 위해 얼마만큼의 연관된 책임과 아이디어가 뭉쳐있는지를 나타내는 정도. 프로그램의 한 요소가 특정 목적을 위해 밀접하게 연관된 기능들이 모여서 구현되어 있고, 지나치게 많은 일을 하지 않으면 그것을 응집력이 높다고 표현한다.
결합력 : 프로그램 코드의 한 요소가 다른 것과 얼마나 강력하게 연결되어 있는지, 얼마나 의존적인지를 나타내는 정도. 결합력이 낮다는 것은 한 요소가 다른 요소들과 관계를 크게 맺고 있지 않은 상태를 의미한다.
객체 지향 프로그래밍의 특징
추상화
- oop에서 클래스는 객체들의 어떤 특징이 있어야 한다고 정의하는 추상화된 개념이다.
캡슐화
- 접근제어자와 같은 방법으로 정보 접근을 제어한다.
상속
부모클래스와 자식 클래스가 존재한다.
코드의 재사용에 유리하다.
다형성
오버라이딩(Overriding): 부모 클래스의 메서드를 자식 클래스에서 재정의하여 다른 기능을 수행하게 한다.
오버로딩(Overloading): 같은 이름의 메서드를 매개변수의 타입이나 개수를 다르게 하여 여러 개 정의한다.
API가 많아질수록 복잡성은 증가하기 때문에 다형성은 유용하다.
동적 바인딩
실행 시간 중에 일어나거나 실행 과정에서 변경될 수 있는 바인딩으로 컴파일 시간에 완료되어 변화하지 않는 정적 바인딩과 대비되는 개념이다.
동적 바인딩은 프로그램의 한 개체나 기호를 실행 과정에 여러 속성이나 연산에 바인딩함으로써 다형 개념을 실현한다.
<참고자료>
https://velog.io/@cyranocoding/


