- 객체지향 프로그래밍이란 인간 중식점 프로그래밍 패러다임
- 현실 세계를 프로그래밍으로 옮겨와 프로그래밍하는 것
- 현실 세계의 사물을 객체라고 보고, 그 객체로부터 개발하고자 하는 애플리케이션에 필요한 특징들을 뽑아와 프로그램하는 것 = 추상화
- 특징
- 이미 작성한 코드에 대한 재사용성이 높음
- 자주 사용되는 로직을 라이브러리로 만들어두면 계속해서 사용할 수 있으며 그 신뢰성을 확보할 수 있음
- 또한 라이브러리를 각종 예외상황에 맞게 잘 만들어두면 개발자가 사소한 실수를 하더라도 그 에러를 컴파일 단계에서 잡아낼 수 있으므로 버그 발생이 줄어듬
- 생산성이 높아짐
- 객체 단위로 코드가 나눠져 작성되기 때문에 디버깅이 쉽고 유지보수가 용이
- 데이터 모델링을 할 때 객체와 매핑하는 것이 수월하기 때문에 요구사항을 보다 명확하게 파악하여 프로그래밍할 수 있음
객체 지향적 설계 원칙
- 단일 책임 원칙(SPR; Single Responsibility Principle)
- 클래스는 단 하나의 책임을 가져야 하며, 클래스를 변경하는 이유는 단 하나의 이유여야 한다.
- 개방-폐쇄 원칙(OCP; Open-Close Principle)
- 확장에는 열려 있어야 하고 변경에는 닫혀 있어야 한다.
- 리스코프 치환 원칙(LSP; Liskov Substitution Principle)
- 상위 타입의 객체를 하위 타입의 객체로 치환해도 상위 타입을 사용하는 프로그램은 정상적으로 동작해야 함
- 인터페이스 분리 원칙(ISP; Interface Segregation Principle)
- 인터페이스는 그 인터페이스를 사용하는 클라이언트를 기준으로 분리해야 함
- 의존 역전 원칙(DIP; Dependency Inversion Principle)
- 고수준 모듈은 저수준 모듈의 구현에 의존해서는 안됨
관련 단어 정리
객체 지향 프로그래밍 정의
- 객체 지향의 가장 기본은 객체이며, 객체의 핵심은 기능을 제공하는 것
- 실제로 객체를 정의할 때 사용하는 것은 객체가 제공해야 할 기능이며, 객체가 내부적으로 어떤 데이터를 갖고 있는지로는 정의되지 않음
- 이런 기능들을 오퍼레이션이라고 부름
시그니처