- 우리가 주변의 실세계에서 사물을 인지하는 방식을 프로그래밍에 접목하려는 사상을 의미한다.
- 함수들의 집합 혹은 단순한 컴퓨터의 명령어들의 목록이라는 전통적인 절차지향 프로그래밍과는 다른, 관계성있는 객체들의 집합이라는 관점으로 접근하는 소프트웨어 디자인으로 볼 수 있다.
- 보다 유연하고 유지보수하기 쉬우며 확장성 측면에서서도 유리한 프로그래밍을 하도록 의도되었다.
OOP
의 네 가지 주요 개념을 통해 재사용성을 얻을 수 있다.
- 데이터와 기능을 하나의 단위로 묶는 것
은닉(hiding)
: 구현은 숨기고, 동작은 노출시킴느슨한 결합(Loose Coupling)
에 유리 : 언제든 구현을 수정할 수 있음
-느슨한 결합
: 코드 실행 순서에 따라 절차적으로 코드를 작성하는 것이 아니라, 코드가 상징하는 실제 모습과 닮게 코드를 모아 결합하는 것
코드가 복잡하지 않게 만들고, 재사용성을 높인다.
- 내부 구현은 아주 복잡한데, 실제로 노출되는 부분은 단순하게 만든다는 개념
코드가 복잡하지 않게 만들고, 단순화된 사용으로 변화에 대한 영향을 최소화한다.
- 부모 클래스의 특징을 자식 클래스가 물려받는 것
불필요한 코드를 줄여 재사용성을 높인다.
다형성으로 인해 동일한 메서드에 대해 if/else if와 같은 조건문 대신 객체의 특성에 맞게 달리 작성하는 것이 가능해진다.