객체 지향 프로그래밍(Object Oriented Programming)


→ 컴퓨터 프로그램을 객체들의 모임으로 보는 프로그래밍 패러다임(현실 세계의 개체를 소프트웨어 개체로 모델링)

  • 추상화 - 복잡한 현실 세계의 개체나 개념을 단순화하여 중요한 특성에 초점을 맞추는 프로세스
  • 캡슐화 - 데이터와 해당 데이터를 조작하는 함수를 하나의 객체로 묶어 외부로부터 접근을 제어하는 것 ⇒ 정보 은닉 & 보안
  • 상속 - 하위 클래스가 상위 클래스의 특성과 동작을 상속받는 개념 ⇒ 코드 일관성 및 유지보수 향상
  • 다형성 - 같은 이름의 메서드나 연산자가 다양한 객체에 대해 다르게 작동할 수 있도록 하는 능력 ⇒ 인터페이스 통일성 유지



필요성

  • 현실 세계의 복잡성을 모델링하는 데 도움
  • 클래스와 상속을 통해 코드 재사용을 촉진 → 개발 시간 단축 및 일관성 유지
  • 모듈화를 통해 독립적으로 개발 & 테스트
  • 보안 강화 및 부작용 최소화
  • 객체, 메서드, 속성 등의 의미 있는 용어를 사용하여 가독성 향상



설계 원리 (SOLID)

  • SRP(Single Responsibility Principle): 단일 책임 원칙
  • OCP(Open Closed Principle): 개방 폐쇄 원칙
  • LSP(Liskov Substitution Principle): 리스코프 치환 원칙
  • ISP(Interface Segregation Principle): 인터페이스 분리 원칙
  • DIP(Dependency Inversion Principle): 의존 역전 원칙