객체지향언어를 사용하여 프로젝트를 제작할 때 객체지향적으로 설계하라는
말을 자주 듣는다. 하지만 객체지향이 무엇이고 어떤 방법으로 구성해야 할지
구체적으로 모르는 경우가 많기 때문에 이러한 개념을 정리하여 확실히 숙지하고자 한다.
객체지향이란?
객체 지향이란 가장 작은 단위의 객체를 독립적으로 구성하여 객체들이 서로
상호작용하여 원하는 동작을 수행하게 하는 것이다.
객체지향 프로그래밍 OOP (Object Oriented Programming)
OOP란 객체지향 프로그래밍을 뜻하며 객체지향의 개념을 프로그래밍에 적용하여
사용하는 것이다.
객체 지향의 특징
공통적인 특성을 파악한 후 하나의 묶음을 클래스로 정의하는 추상화
관련있는 기능을 묶어 외부로부터 정보은닉을 하는 캡슐화
상위 클래스의 기능을 하위클래스가 물려받는 상속
하나의 객체가 상황에 따라 다른 방식으로 동작 가능한 다형성
이렇게 4가지의 특징이 있다.
SOLID 원칙이란?
객체지향 설계의 5대 원칙인 SRP, OCP, LSP, ISP, DIP의 앞 글자를 따서
만든 원칙이다.
단일 책임 원칙(SRP) : 작성된 클래스는 하나의 기능만 가져야 하며 하나의 책임을 수행해야 한다.
개방-폐쇄 원칙(OCP) : 소프트웨어의 구성요소인 컴포넌트, 클래스, 모듈, 함수는 확장에는 열려있으며
변경에는 닫혀있어야 한다.
리스코프 치환 원칙(LSP) : 서브타입은 언제나 기반타입으로 교체할 수 있어야 한다. 여기서 교체란
자식 클래스는 최소한 자신의 부모 클래스에서 가능한 행위를 보장할 수 있어야 한다는 의미다.
인터페이스 분리 원칙(ISP): 인터페이스를 범용적으로 제작하는 것이 아닌 구체적으로 사용에 맞게 제작
해야 한다. 인터페이스의 단일 책임 원칙이라고 보면 된다.
의존관계 역전 원칙(DIP): 객체에서 어떤 클래스를 참조해야 하는 경우가 생길 경우 클래스를 직접 참조하는
것이 아닌 대상 클래스의 상위 요소에 접근하여 참조해야 한다. 요약하자면 추상성이 낮은 클래스보다는 추상성이
높은 클래스를 참조하는 것이 좋다는 것이다.
'TIL > C#' 카테고리의 다른 글
[C#] 인터페이스와 추상클래스에 대하여 (1) | 2023.11.15 |
---|---|
[C#] 오버로딩과 오버라이딩 (0) | 2023.11.14 |
[C#] 스택, 힙 메모리란 무엇인가 (0) | 2023.11.10 |
[C#] 정렬 알고리즘 (선택 정렬, 버블 정렬) (0) | 2023.11.09 |
[C#] Callback은 무엇인가? (0) | 2023.11.08 |