OOP, SOLID, 디자인 패턴용어2025. 1. 5. 16:57
Table of Contents
OOP의 기본 개념 정리
(Object-Oriented Programming)
주요 개념 :
• 객체(Object):
|
데이터와 이를 조작하는 메서드의 집합.
|
• 클래스(Class):
|
객체를 생성하기 위한 설계도.
|
• 캡슐화(Encapsulation):
|
데이터를 숨기고 공개된 메서드로만 접근하도록 제한.
|
• 상속(Inheritance):
|
기존 클래스의 특성과 동작을 재사용.
|
• 다형성(Polymorphism):
|
동일한 인터페이스로 다양한 동작을 수행.
|
• 추상화(Abstraction):
|
불필요한 세부 사항을 숨기고 중요한 것만 드러냄.
|
학습 방법:
• ‘자바의 정석’ 책에서 관련 챕터를 다시 읽고, 직접 코드 예제를 작성.
• 각 개념을 설명하는 5줄 이하의 코드를 스스로 작성하며 이해 확인.
SOLID 원칙
OOP의 설계 원칙을 체계적으로 정리한 것으로, 좋은 객체 지향 설계를 돕습니다.
1. SRP (Single Responsibility Principle):
|
||
• 클래스는 하나의 책임만 가져야 합니다.
|
||
• 한 클래스의 변경 사유는 하나뿐이어야 합니다.
|
||
• 예제: User 클래스는 사용자 데이터만 관리하고, 로그 출력은 별도의 Logger 클래스에서 처리.
|
||
2. OCP (Open/Closed Principle):
|
||
• 클래스는 확장에는 열려 있어야 하고, 수정에는 닫혀 있어야 합니다.
|
||
• 예제: 인터페이스나 추상 클래스를 사용해 새로운 기능을 추가.
|
||
3. LSP (Liskov Substitution Principle):
|
||
• 자식 클래스는 부모 클래스의 행위를 대체할 수 있어야 합니다.
|
||
• 예제: Rectangle 클래스가 Square로 대체되어도 정상 작동해야 함.
|
||
4. ISP (Interface Segregation Principle):
|
||
• 인터페이스는 사용하지 않는 메서드가 포함되지 않도록 분리.
|
||
• 예제: 대규모 인터페이스 대신 작은 인터페이스로 나눔.
|
||
5. DIP (Dependency Inversion Principle):
|
||
• 고수준 모듈은 저수준 모듈에 의존하지 않고 추상화에 의존해야 함.
1. 고수준 모듈 (High-Level Module) : 핵심 로직을 담고 있는 부분. 예: 앱에서 사용자가 입력한 값을 처리하거나 계산하는 비즈니스 로직. 2. 저수준 모듈 (Low-Level Module) : 실제로 동작을 수행하는 구체적인 구현. 예: 데이터를 저장하는 DB 연결 코드, 특정 API 호출. |
||
• 예제: 구체 클래스 대신 인터페이스에 의존.
추상 클래스란, 공통적인 동작을 정의한 틀(인터페이스나 추상 클래스). 구체 클래스란, 저 추상화를 실제로 '구현'하는 클래스. |
||
결론 : 고수준 모듈이 직접 저수준 모듈을 사용하지 않고, 추상화(인터페이스)를 통해 연결되게 만들기
|
디자인 패턴
• 소프트웨어 설계 문제를 해결하기 위한 재사용 가능한 설계 템플릿.
• 흔히 겪는 문제에 대한 해결책을 정리해 둔 것.
1. 생성 패턴 (Creational Patterns)
|
|
객체를 생성하는 방법과 관련.
|
|
• Singleton: 인스턴스를 하나만 만들고 공유할 때 사용.
|
|
• Factory: 객체 생성을 별도의 메서드로 분리해 관리.
|
|
2. 구조 패턴 (Structural Patterns)
|
|
클래스나 객체 간의 관계를 조직적으로 설계.
|
|
• Adapter: 서로 다른 인터페이스를 연결.
|
|
• Composite: 객체를 트리 구조로 구성.
|
|
3. 행위 패턴 (Behavioral Patterns)
|
|
객체 간의 상호작용과 책임 분리를 다룸.
|
|
• Observer: 한 객체의 변화가 다른 객체들에게 알림.
|
|
• Strategy: 행동을 캡슐화하고 동적으로 교체 가능.
|
학습 방법:
• 각 원칙에 대해 이해한 뒤, 이를 적용한 간단한 코드 예제를 작성.
• 기존에 작성한 코드에서 SOLID 원칙이 어긋난 사례를 찾아 수정.
OOP와 관련된 개념들을 트리 구조로 큰 그림 잡기
• 기본 원칙
|
|
• 캡슐화 | |
• 상속 | |
• 다형성 | |
• 추상화 | |
• SOLID 원칙
|
|
• SRP | |
• OCP | |
• LSP | |
• ISP | |
• DIP | |
• 디자인 패턴
|
|
• 생성 패턴: Singleton, Factory
|
|
• 구조 패턴: Adapter, Composite
|
|
• 행위 패턴: Observer, Strategy
|
학습 방법:
1. 온라인 강의
• 유튜브: “나도코딩” 또는 “동빈나”의 객체 지향 강의.
• 인프런: 객체 지향 설계와 SOLID 강의 추천.
2. 추천 도서
• ‘Effective Java’ by Joshua Bloch
• ‘객체 지향의 사실과 오해’ by 조영호
3. 프로젝트로 연습
• 간단한 애플리케이션(예: To-Do List)에서 객체 지향 원칙을 적용해보기.
'용어' 카테고리의 다른 글
URI, URL, URN (0) | 2024.09.24 |
---|---|
여러 컴퓨터 ‘클러스터링’ (0) | 2024.08.22 |
컨테이너, 쿠버네티스 Kubernetes (0) | 2024.08.22 |
AOP (0) | 2022.01.31 |
JSP의 jstl (0) | 2022.01.31 |