<TIL> 103. 객체지향

YUJIN LEE·2023년 4월 19일
1

개발log

목록 보기
96/149

객체지향 4가지 특징

  1. 추상화(Abstraction)
  • 불필요한 부분을 제거함으로써 필요한 핵심만 나타낸 것.
  • 일반화, 단순화
  • 목적: 복잡성을 낮추기 위한 도구
  1. 다형성(Polymorphism)
  • 다양한 형태를 가지는 것
  • 하나의 타입으로 여러 종류의 객체를 참조.
  1. 캡슐화(Encapsulateion)
  • 객체 내부의 세부사항을 외부로부터 감추는 것
  • 목적: 인터페이스만 공개해서 변경하기 쉬운 코드를 만드는 것
  1. 상속(Inheritance)
  • 부모로부터 물려받는 것.

객체지향의 5가지 설계 원칙(SOLID)

  1. SRP: Single Responsibility Principle(단일 책임의 원칙)
    • 하나의 책임을 가진다
  2. OCP: Open/Closed Principle(개방 폐쇄의 원칙)
    • 확장에는 열려있고, 변경에는 닫혀있다.
    • 기존 코드를 변경하지 않고 기능을 추가할 수 있어야한다.
  3. LSP: Liskov's Substitution Principle(리스코프 치환의 원칙)
    • 상위타입의 객체를 하위타입의 객체로 치환해도 문제가 없어야 한다.
  4. ISP: Interface Segregation Principle(인터페이스 분리의 원칙)
    • 많은 기능을 가진 인터페이스를 작은 단위로 분리시킴으로써 클라이언트에게 필요한 인터페이스들만 구현하는 개념
  5. DIP: Dependency Inversion Principle(의존성 역전의 원칙)
    • 의존관계를 맺을 때 변경이 거의 일어나지 않는 쪽에 의존.

객체지향 패러다임

  • 적절한 객체에게 적절한 책임을 할당해 서로 메시지를 주고 받으며 협력하도록 하는 것.
  • 점점 증가하는 SW복잡도를 낮추기 위해 객체지향 패러다임 대두
    - 클래스가 아닌 객체에 초점을 맞추는 것
    • 객체들에게 얼마나 적절한 역할과 책임을 할당하는지

절차지향 프로그래밍 vs 객체지향 프로그래밍

  • 책임이 한곳에 집중돼 있는 방식(getter)
  • 책임이 여러 객체로 적절히 분산돼 있는 방식

객체지향 설계 -> high cohesion, loose coupling 높은 응집도, 낮은 결합도

어떠한 곳에 문제가 생겼을 때 다른 곳에 문제가 되지 않는다.

객체지향 설계를 하는 이유는 어떤 문제가 생겼을 때 빠르고, 유연하게 대응할 수 있어서.

객체지향 설계의 순서

  1. 도메인을 구성하는 객체에는 어떤 것들이 있는지 고민
  2. 객체들 간의 관계를 고민
  3. 동적인 객체를 정적인 타입으로 추상화해서 도메인 모델링 하기
  4. 협력을 설계
  5. 객체들을 포괄하는 타입에 적절한 책임을 할당
  6. 구현하기

참고 - 객체지향은 모든 객체가 능동적인 존재.

profile
인정받는 개발자가 되고싶습니다.

0개의 댓글