[Java/Kotlin] 객체 지향 5대 원칙(SOLID)

Jay·2021년 3월 23일
0

Java&Kotlin

목록 보기
29/30
post-thumbnail

SRP (Single Responsibility Principle)

  • 단일 책임 원칙
  • 클래스나, 함수는 단 하나의 책임(기능)만을 가져야 한다.
  • 클래스, 함수가 비대해지면 이를 분리시킬 필요가 있다.
  • 산탄총 수술
    • 하나의 책임이 여러 개의 클래스로 분산되어 있는 경우
    • 요구 사항이 변경 될 때, 분산된 책임을 가지고 있는 모든 부분을 봐야 한다.

OCP (Open-Closed Principle)

  • 개방-폐쇄 원칙
  • 기존 코드 변경에는 닫혀있고, 추가나 확장에는 열려 있어야 한다.
  • 자주 변경 될 수 있는 내용은 수정하기 쉽게 설계 해야 하고,
    자주 변경되지 않을 내용은 수정에 영향 받지 않게 설계해야 한다.

LSP (Liskov Substitution Principle)

  • 리스코프 치환 원칙
  • 자식 클래스는 부모 클래스에서 가능한 행위를 수행할 수 있어야 한다.
  • 파생 클래스를 만들 때, 이게 정말 올바른 상속의 관계를 갖는지 생각해봐야 한다.
  • ex) Rectangle, Square 클래스

DIP (Dependency Inversion Principle)

  • 의존 역전 원칙
  • 변화하기 쉬운 것 = 구체적인 것 (클래스, 서브 클래스 인스턴스)
    변화하기 어려운 것 = 추상적인 것 (추상 클래스, 인터페이스)
  • 즉, {인터페이스 or 추상 클래스} {변수 명} = {서브 클래스 인스턴스} 꼴이 되어야 한다.
  • 의존성 주입(Dependency Injection) 기술

ISP (Interface Segregation Principle)

  • 인터페이스 분리 원칙
  • 클라이언트가 자신이 이용하지 않는 메서드에 의존하지 않아야 한다.
  • 큰 덩어리의 인터페이스들을 구체적이고 작은 단위들로 분리시킴으로써 클라이언트들이 꼭 필요한 메서드들만 이용할 수 있게 한다.
  • 다시 말해, 인터페이스를 클라이언트에 특화되도록 분리시키라는 설계 원칙.

객체지향을 다루다보니 아래 내용도 살짝 다루는 게..

객체지향 3대 특징

  • 캡슐화

    • 객체의 필드(속성), 메소드를 하나로 묶고, 실제 구현 내용을 외부에 감추는 것.
    • 정보의 손상과 오용을 방지
    • 다른 객체와의 독립성 유지로 전체적인 코드 유지보수 및 변경에 유연
  • 상속

    • 상속이란 기존 클래스를 재사용하는 것.
    • 개발 시간 절약, 중복 코드 감소 및 유지보수에 용이.
  • 다형성

    • 하나의 타입에 여러 객체를 대입함으로써 다양한 기능을 이용할 수 있도록 하는 것.
    • 구체적으로는, 부모 클래스 또는 인터페이스의 타입 변환, 오버로딩과 오버라이딩
profile
developer

0개의 댓글