객체 지향 프로그래밍(Object Oriented Programming)
→ 컴퓨터 프로그램을 객체들의 모임으로 보는 프로그래밍 패러다임(현실 세계의 개체를 소프트웨어 개체로 모델링)
추상화
- 복잡한 현실 세계의 개체나 개념을 단순화하여 중요한 특성에 초점을 맞추는 프로세스캡슐화
- 데이터와 해당 데이터를 조작하는 함수를 하나의 객체로 묶어 외부로부터 접근을 제어하는 것 ⇒ 정보 은닉 & 보안상속
- 하위 클래스가 상위 클래스의 특성과 동작을 상속받는 개념 ⇒ 코드 일관성 및 유지보수 향상다형성
- 같은 이름의 메서드나 연산자가 다양한 객체에 대해 다르게 작동할 수 있도록 하는 능력 ⇒ 인터페이스 통일성 유지
필요성
- 현실 세계의 복잡성을 모델링하는 데 도움
- 클래스와 상속을 통해 코드 재사용을 촉진 → 개발 시간 단축 및 일관성 유지
- 모듈화를 통해 독립적으로 개발 & 테스트
- 보안 강화 및 부작용 최소화
- 객체, 메서드, 속성 등의 의미 있는 용어를 사용하여 가독성 향상
설계 원리 (SOLID)
- SRP(Single Responsibility Principle): 단일 책임 원칙
- OCP(Open Closed Principle): 개방 폐쇄 원칙
- LSP(Liskov Substitution Principle): 리스코프 치환 원칙
- ISP(Interface Segregation Principle): 인터페이스 분리 원칙
- DIP(Dependency Inversion Principle): 의존 역전 원칙