CS

객체지향 5대원칙 SOLID by ChatGPT

파지티브헌 2023. 2. 21. 08:42

요즘 챗지피티를 활용하면서 느낀점은, 양질의 정보를 빠르게 얻을수 있다는것이다.

기존의 검색방식은 우리가 원하는 지식을 일반화시켜, 그 안에서 핵심단어를 뽑아낸 후 

그 단어를 검색, 그리고 검색된 수 많은 결과물 중에서 우리가 원하는것을 골라야하는 여러 프로세스를 거쳤다.

 

하지만 ChatGPT가 등장한 이후로는 우리가 원하는 지식 그대로만 입력하면 거기에 맞는 해답을 얻을 수 있었다.

개인적으로 현재 만족하고있다.

 

그래서 종종 ChatGPT에서 검색한 내용들을 블로그에 올릴 예정이다

 

SOLID는 객체지향 프로그래밍에서 안정적이고 유지보수가 쉬운 소프트웨어를 개발하기 위한 다섯 가지 원칙입니다. SOLID는 다음과 같은 약어를 이루며, 각각의 약어는 다음과 같은 원칙을 의미합니다.

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

이제 각각의 원칙에 대해 간략히 설명해보겠습니다.

  1. 단일 책임 원칙 (SRP)

하나의 클래스는 하나의 책임만 가져야 합니다. 클래스가 가진 책임이 많아지면 유지보수가 어렵고, 변경에 대한 위험이 높아집니다. 따라서, 클래스는 하나의 책임만을 가지고 있어야 합니다.

  1. 개방-폐쇄 원칙 (OCP)

소프트웨어 요구사항이 변경될 때, 기존 코드를 변경하지 않고 확장할 수 있어야 합니다. 이를 위해, 기존 코드는 변경되면 안되며, 확장을 위한 인터페이스나 추상화된 클래스를 제공해야 합니다.

  1. 리스코프 치환 원칙 (LSP)

서브 클래스는 언제나 자신의 슈퍼 클래스로 대체될 수 있어야 합니다. 이를 위해, 슈퍼 클래스에서 정의된 메서드와 속성은 서브 클래스에서 재정의되거나 변경되면 안 됩니다.

  1. 인터페이스 분리 원칙 (ISP)

클라이언트는 자신이 사용하지 않는 메서드에 의존하면 안 됩니다. 이를 위해, 인터페이스는 클라이언트가 필요로 하는 메서드만 제공해야 합니다.

  1. 의존관계 역전 원칙 (DIP)

추상화된 것은 구체적인 것에 의존하면 안 됩니다. 대신에, 구체적인 것은 추상화된 것에 의존해야 합니다. 이를 위해, 의존관계는 추상화된 인터페이스나 추상 클래스를 통해 이루어져야 합니다.

 

 

SRP(Single Responsibility Principle) 단일 책임 원칙 한 클래스는 한 가지 책임만 가져야 한다.
OCP(Open-Closed Principle) 개방-폐쇄 원칙 기존의 코드를 변경하지 않으면서 기능을 추가할 수 있도록 설계되어야 한다.
LSP(Liskov Substitution Principle) 리스코프 치환 원칙 상위 클래스의 인스턴스는 하위 클래스의 인스턴스로 대체 가능해야 한다.
ISP(Interface Segregation Principle) 인터페이스 분리 원칙 클라이언트는 자신이 사용하지 않는 메서드에 의존하도록 강요받지 않아야 한다.
DIP(Dependency Inversion Principle) 의존 역전 원칙 추상화된 것은 구체적인 것에 의존하면 안 되며, 구체적인 것이 추상화된 것에 의존해야 한다.