반응형
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)
반응형
'Computer Science' 카테고리의 다른 글
JVM 메모리 구조 (JVM Memory structure) (0) | 2017.09.30 |
---|---|
DB 트랜잭션 (Transaction)의 ACID 속성과 분산시스템 BASE 속성 (0) | 2017.09.30 |
Java 자료구조 비교 (0) | 2017.09.30 |
TCP vs UDP (0) | 2017.09.30 |
TCP 3 Way-Handshake & 4 Way-Handshake (0) | 2017.09.30 |
OSI 7 계층 (OSI 7 Layer) (0) | 2017.09.29 |
프로세스와 스레드(Process vs Thread) (0) | 2017.09.29 |
64비트와 32비트의 차이 (0) | 2017.09.29 |
퀵 정렬, 퀵 소트(Quick Sort) (0) | 2017.09.21 |
계수정렬, 카운팅 소트(Counting Sort) (0) | 2017.09.21 |