객체 지향 설계 원칙 - SOLID
요약
정보처리기사 실기 단골 문제인 객체 지향 설계 원칙 SOLID를 표로 요약하여 쉽게 암기하는 방법을 알아봅니다. 정처기 대비를 위한 주관식 문제가 포함되어 있습니다.
용어 | 키워드 |
---|---|
SOLID | 객체 지향 설계 원칙, 유지보수성, 확장성, 재사용성 |
단일 책임 원칙(SRP) | 하나의 책임, 클래스 분리, 기능 분리 |
개방-폐쇄 원칙(OCP) | 확장에 대해 열려있고, 변경에 대해 닫혀있어야 함 |
리스코프 치환 원칙(LSP) | 서브타입, 기반 타입, 교체 가능 |
인터페이스 분리 원칙(ISP) | 특정 기능, 인터페이스, 사용하지 않는 메소드, 의존 관계 |
의존성 역전 원칙(DIP) | 고수준 모듈, 저수준 모듈, 추상화 |
SOLID 원칙이란?
SOLID는 객체 지향 프로그래밍과 설계에서 중요한 5가지 원칙을 나타내는 약어입니다. 이 원칙들은 소프트웨어의 유지보수성, 확장성, 재사용성을 높이기 위해 개발되었습니다.
단일 책임 원칙 (SRP - Single Responsibility Principle)
단일 책임 원칙은 "하나의 클래스는 하나의 책임만 가져야 한다"는 원칙입니다. 클래스가 여러 개의 책임을 가지면 변경 사유가 많아지고, 한 기능의 변경이 다른 기능에 영향을 줄 수 있습니다.
핵심 키워드: 하나의 책임, 클래스 분리, 기능 분리
클래스의 책임이 너무 많다면 해당 클래스를 여러 개로 분리하여 각 클래스에 하나의 책임만을 부여해야 합니다. 클래스에서 수행하는 기능을 분리하고, 클래스가 하나의 책임을 수행하기 위해 여러 개의 기능을 수행한다면 해당 기능을 다른 클래스로 분리하는 것이 좋습니다.
개방-폐쇄 원칙 (OCP - Open-Closed Principle)
개방-폐쇄 원칙은 "소프트웨어 개체는 확장에 대해 열려 있어야 하고, 수정에 대해서는 닫혀 있어야 한다"는 원칙입니다. 즉, 새로운 기능을 추가할 때는 기존 코드를 수정하지 않고 확장할 수 있어야 합니다.
핵심 키워드: 확장에 대해 열려있고, 변경에 대해 닫혀있어야 함
이 원칙을 통해 기존 코드의 안정성을 유지하면서도 새로운 기능을 추가할 수 있습니다.
리스코프 치환 원칙 (LSP - Liskov Substitution Principle)
리스코프 치환 원칙은 "서브타입은 언제나 기반 타입으로 교체할 수 있어야 한다"는 원칙입니다. 즉, 부모 클래스의 인스턴스를 자식 클래스의 인스턴스로 대체해도 프로그램이 정상적으로 동작해야 합니다.
인터페이스 분리 원칙 (ISP - Interface Segregation Principle)
인터페이스 분리 원칙은 "클라이언트는 자신이 사용하지 않는 메소드와 의존 관계를 맺으면 안 된다"는 원칙입니다. 클라이언트가 사용하지 않는 인터페이스 때문에 영향을 받아서는 안 됩니다.
핵심 키워드: 특정 기능, 인터페이스, 사용하지 않는 메소드, 의존 관계
객체를 설계할 때 특정 기능을 위한 인터페이스는 그 기능과 관련 없는 부분이 변경되어도 영향을 받지 않아야 합니다. 예를 들어, 복합기 객체가 있고 프린터, 복사기, 스캐너 기능을 각각 사용하는 사용자가 있다면, 프린터 기능의 인터페이스는 복사기나 스캐너 기능이 변경되어도 문제가 없어야 합니다.
의존성 역전 원칙 (DIP - Dependency Inversion Principle)
의존성 역전 원칙은 "고수준 모듈은 저수준 모듈에 의존하면 안 되고, 둘 다 추상화에 의존해야 한다"는 원칙입니다. 즉, 구체적인 클래스보다는 추상화(인터페이스나 추상 클래스)에 의존해야 합니다.
SOLID 원칙의 장점
- 유지보수성 향상: 코드 변경 시 영향 범위를 최소화
- 확장성 증대: 새로운 기능 추가가 용이
- 재사용성 증대: 모듈화된 코드로 재사용 가능
- 테스트 용이성: 각 원칙이 독립적으로 테스트 가능
문제를 불러오는 중...
문제를 불러오는 중...
문제를 불러오는 중...
문제를 불러오는 중...