SOLID

  • 로버트 마틴이 2000년대 초반에 명명한 객체 지향 프로그래밍 및 설계의 다섯 가지 기본 원칙을 마이클 페더스가 두문자어 기억술로 소개한 것
  • 애자일 소프트웨어 개발 전반적 전략의 일부


 두문자 

 약어

 개념

 S

 SRP

 단일 책임 원칙 (Single responsibility principle)
 한 클래스는 하나의 책임만 가져야 한다.

 O

 OCP

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

 확장에는 열려 있으나 변경에는 닫혀 있어야 한다.

 L

 LSP

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

 프로그램의 객체는 프로그램의 정확성을 깨뜨리지 않으면서 하위 타입의 인스턴스로 바꿀 수 있어야 한다.

 I

 ISP

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

 특정 클라이언트를 위한 인터페이스 여러 개가 범용 인터페이스 하나보다 낫다.

 D

 DIP

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

 추상화에 의존해야지, 구체화에 의존하면 안된다

 의존성 주입은 이 원칙을 따르는 방법 중 하나



OOP 특성

추상화 (Abstraciton)

  • 공통의 속성이나 기능을 묶어 이름을 붙이는 것
  • 객체 지향적 관점에서 클래스를 정의하는 것
  • 추상화는 다른 객체들과 구분되는 핵심적인 특징들에만 집중함으로써, 복잡도를 관리할 수 있도록 함

캡슐화 (Encapsulation)

  • 실제로 구현되는 부분을 외부에 드러나지 않도록 캡슐로 감싸 이용방법만을 알려주는것
  • 데이터 구조와 데이터를 다루는 방법들을 결합 시켜 묶는 것.
  • 변수와 함수를 하나로 묶는 것
  • 또한 데이터를 절대로 외부에서 직접 접근을 하면 안되고 오로지 함수를 통해서만 접근해야하는데 이를 가능하게 해주는 것
  • 내부를 숨김으로써 내부를 좀더 자유롭게 변경할 수 있게 함
  • 정보 은닉Information Hiding) : 내부의 데이터나 함수를 외부에서 참조하지 못하도록 차단하는 개념 (캡슐화 개념)


상속성, 재사용 (Inheritance)

  • 상위 개념의 특징을 하위 개념이 물려받는 것
  • 재사용으로 인해 코드가 줄어듬
  • 하위 클래스에서 속성이나 오퍼레이션을 다시 정의하지 않고 상속받아서 사용함으로써 코드가 줄어듬


다형성 (Polymorphism)

  • 부모클레스에서 물려받은 가상 함수를 자식 클래스 내에서 오버라이딩 되어 사용되는 것
  • 다형성의 일반적인 의미는 '다양한 형태로 나타날 수 있는 능력'
  • 객체지향에서의 다형성은 '여러 클래스들이 동일한 이름의 오퍼레이션을 서비스하도록 하는 것'
  • 메소드 오버라이딩(Method Overriding) : 상위 클래스에 있고 상속받았으나 하위 클래스에서 다시 정의하는 것 (다형성)
  • 메소드 오버로딩(Method Overloading) : 동일한 이름의 메소드가 여러개 정의되어 있는데 단지, 매개변수의 타입에 따라 서로 구분되는 것 (다형성)


DRY 원칙

  • Don't Repeat Yourself
  • 반복하지 말라는 원칙
  • 중복코드를 만들지 말라는 것





Reference

[1] 위키 (https://ko.wikipedia.org/wiki/SOLID)


저작자 표시 비영리 변경 금지
신고

Leave a Comment


to Top