[시나공] 객체지향 설계 & SOLID 원칙 완전 정리

2026. 3. 3. 04:00Certifications/정보처리기사 실기

1️⃣ 객체지향 개념 정리

✅ 객체지향(Object-Oriented)

  • 객체(Object)를 중심으로 소프트웨어를 구성하는 개발 방법
  • 객체 = 데이터 + 데이터를 처리하는 함수(메서드)

🔎 객체지향 구성요소 3가지
객체, 클래스, 메시지


객체지향 특징 4가지
캡슐화, 상속, 다형성, 연관성


✅ 클래스(Class)

  • 공통 속성과 연산을 가지는 객체의 집합
  • 객체를 생성하기 위한 설계도

🔎 클래스에 속한 각각의 객체
인스턴스(Instance)


“유사 객체들의 공통 특성 정의”
→ 클래스


✅ 객체(Object)

  • 데이터와 이를 처리하기 위한 함수를 묶어 놓은 소프트웨어 모듈

🔹 구성 요소

  • 데이터(Data)
  • 함수(Function = Method, Operation)

🔎 “데이터와 이를 처리하는 메서드를 묶은 것”
→ 객체


✅ 메시지(Message)

  • 객체 간 상호작용 수단
  • 객체의 동작을 유도하는 외부 요청

🔎 “객체에 어떤 행위를 하도록 지시하는 명령”
→ 메시지


2️⃣ 객체지향 특징 4대 요소

구성 요소 의미
캡슐화 내부 구현을 숨기고 인터페이스만 제공
상속 속성과 연산을 물려받음
다형성 같은 메시지에 다른 동작 수행
연관성 객체 간 상호 참조 관계

✅ 캡슐화(Encapsulation)

  • 데이터와 메서드를 하나로 묶음
  • 외부 접근 제한 → 인터페이스만 공개

🎯 포인트

  • 외부 변경 영향 최소화
  • 결합도 감소
  • 정보 은닉

✅ 상속(Inheritance)

  • 상위 클래스의 속성과 연산을 하위 클래스가 물려받음

🎯 포인트

  • 코드 재사용
  • 확장성 증가
  • 하위 클래스는 속성 추가 가능

✅ 다형성(Polymorphism)

  • 동일한 메시지에 대해 객체마다 다른 방식으로 응답
  • 오버라이딩(Overriding)을 통해 구현

🔹 예시

  • "+" 연산자 → 숫자에서는 덧셈
  • 문자열에서는 연결

🔎 “하나의 메시지, 여러 형태의 응답”
→ 다형성


✅ 연관성(Relationship)

  • 두 개 이상의 객체가 상호 참조하는 관계
  • 객체지향의 관계(Relationship)를 의미

🔹 관계 유형

  • 연관(Association)
  • 집합(Aggregation)
  • 포함(Composition)
  • 일반화(Generalization)

🎯 포인트

  • Whole-Part 관계 → 집합 / 포함
  • is-a 관계 → 일반화

3️⃣ 객체지향 분석 & 설계 기법

✅ 객체지향 분석(OA)

  • 요구사항 기반으로 객체, 속성, 연산, 관계 정의

🔎 “요구사항을 객체 중심으로 분석”
→ 객체지향 분석


✅ 럼바우(Rumbaugh) 분석 기법 (OMT = 객체 모델링 기법, Object-Modeling Technique)

🔹 3가지 모델

  • 1) 객체 모델링 → 객체 다이어그램
  • 2) 동적 모델링 → 상태 다이어그램
  • 3) 기능 모델링 → 자료 흐름도(DFD)

🎯 포인트

  • OMT = Object Modeling Technique
  • DFD 사용 → 기능 모델링

📌 럼바우 = “객·동·기”


4️⃣ 객체지향 설계 원칙 (SOLID) ⭐⭐⭐⭐

✅ S : 단일 책임 원칙 (SRP)

  • 클래스는 하나의 책임만 가져야 한다

🎯 포인트

  • “변경 이유는 하나여야 한다” → SRP

✅ O : 개방-폐쇄 원칙 (OCP)

  • 확장에는 열려 있고
  • 수정에는 닫혀 있어야 한다

🎯 포인트

  • 기존 코드 변경 없이 기능 확장

✅ L : 리스코프 치환 원칙 (LSP)

  • 자식 클래스는 부모 클래스를 대체 가능해야 한다

🎯 포인트

  • 부모 타입 자리에 자식 객체 사용 가능

✅ I : 인터페이스 분리 원칙 (ISP)

  • 사용하지 않는 인터페이스에 의존하면 안 된다

🎯 포인트

  • “불필요한 인터페이스 의존 제거” → ISP

✅ D : 의존 역전 원칙 (DIP)

  • 고수준 모듈이 저수준 모듈에 의존하면 안 된다
  • 추상화에 의존해야 한다

🎯 포인트

  • 구체 클래스 X → 인터페이스 의존

📊 시험 포인트 정리

🔥 1. SOLID 약자 → 반드시 암기 ⭐

구성 요소 의미
SRP
(단일 책임 원칙)
객체는 단 하나의 책임만 가져야 함
OCP
(개방-폐쇄 원칙)
기존의 코드를 변경하지 않고 기능을 추가할 수 있도록 설계
LSP
(리스코프 치환 원칙)
자식 클래스는 최소한 부모 클래스의 기능은 수행할 수 있어야 함
ISP
(인터페이스 분리 원칙)
자신이 사용하지 않는 인터페이스와 의존 관계를 맺거나 영향을 받지 않아야 함
DIP
(의존 역전 원칙)
의존 관계 성립 시 추상성이 높은 클래스와 의존 관계를 맺어야 함

🔥 2. ISP / DIP 구분 문제

🔥 3. 다형성 정의형 문제

🔥 4. 캡슐화 = 정보 은닉

🔥 5. OMT 3가지 모델링

🔥 6. 클래스 vs 객체 구분 문제


📌 암기 핵심 요약

  • SOLID 5원칙
  • 다형성 정의 문장
  • 럼바우 3모델
  • 캡슐화 특징(결합도 감소)





2025 시나공 퀵이지 정보처리기사 실기 단기완성
(저자: 강윤석, 김용갑, 김우경, 김종일 | 출판사: 길벗)

※ 본 글은 위 교재를 참고하여 학습 목적으로 재정리한 내용입니다.