객체지향 이론

가장 기본적인 객체지향 이론과 객체지향 개발 방식에 대해 알아보자.

  1. 정의 및 특징

    • 나오는 키워드 : ‘추상화, 캡슐화, 상속, 다형성..’, ‘붕어빵 틀, 붕어빵’
    • 객체 지향이란 코드 간에 서로 관계를 맺어줌으로써, 유기적으로 프로그램을 구성하는 것이며 코드의 재사용성, 관리가 용이 하다는 특징을 가지고 있다.
  2. 객체지향 5대 원칙(SOLID)

    • ‘클린코드’의 저자 로버트 마틴이 설명한 원칙

    • SOLID - 5대 원칙

      • 단일 책임 원칙(Single responsibility principle)

      • 개방 폐쇄 원칙(Open/closed principle)

      • 리스코프 치환 원칙(Liskov substitution principle)

      • 인터페이스 분리 원칙(Interface segregation principle)

      • 의존관계 역전 원칙(Dependency inversion principle)

        +이 내용은 코드로 좀 더 확인을 하자.

  3. 객체지향적 개발 방식 3가지

    • ORR (One Responsibility Rule)
      • 클래스와 메소드는 한가지 종류의 책임만을 다음과 같이 수행해야만 한다.
      • 그 책임에 해당하는 일을 빠짐없이 모두 해야 한다.
      • 그 일을 자신만이 유일하게 한다.
      • 이 원리는 높은 응집도와 밀접한 관련이 있다. 이것을 따르면 자연스럽게 프로그램은 응집도가 높아진다
    • OCP (Open Closed Principle)
      • 재사용 가능한 클래스는 확장을 할 수 있지만 수정해서는 안된다.
      • 새로운 기능을 추가할 때 기존 클래스의 소스코드를 수정하지 않고 기존 클래스를 상속받은 하위 클래스를 새롭게 정의함으로 가능해야 한다. 혹은 기존 코드를 재사용한다.
    • LoD(Law of Demeter)
      • 클래스의 메소드는 다음 객체들의 메소드만 호출해야 한다.
      • (자기 자신 / 상위 클래스)
      • (클래스의 속성객체)
      • (메소드의 패러미터로 넘겨지는 객체)
      • (내부에서 직접 생성된 객체)
      • (다른 클래스의 메소드 안에서 생성되어 반환된 객체)
      • 이 원리는 낮은 결합도와 밀접한 관련이 있다. 이것을 따르면 프로그램은 자연스럽게 결합도가 낮아지게 된다.