본문 바로가기
IT License/정처기필기-1과목

2024 #정보처리기사 필기요약 #1-3. 객체지향/GoF 디자인 패턴

by 시뮝 2024. 7. 5.
728x90

제 1과목 소프트웨어 설계 > 객체지향 설계


객체지향(Object Oriented)

  • 객체지향은 실세계의 개체를 속성과 메서드가 결합한 형태의 객체로 표현하는 기법
  • 소프트웨어를 개발하기 위한 비즈니스(업무)를 객체와 속성, 클래스와 멤버, 전체와 부분 등으로 나누어서 분석해 내는 기법 [2021년 1회]


객체지향 구성요소 (클객메 메인속)

래스(Class) / 체(Object)/ 서드(Method) / 시지(Message) / 스턴스(Instance) / 성(Property)

구성요소 설명
클래스(Class) 하나 이상의 유사한 객체들을 묶어 공통된 특성을 표현한 데이터 추상화
공통된 속성과 연산(행위)을 갖는 객체의 집합 
[2020년 1회, 2회, 3회] [2022년 1회] [2023년 2회]
객체(Object) 자신 고유의 데이터를 가지며 클래스에서 정의한 행위를 수행
객체는 상태, 동작, 고유 식별자를 가진 모든 것이라 할 수 있다.
객체의 상태는 속성값에 의해 정의된다.
데이터와 데이터를 처리하는 메소드를 묶어 놓은 하나의 소프트웨어 모듈 [2023년 3회]
메서드(Method) 클래스로부터 생성된 객체를 사용하는 방법, 객체에 명령을 내리는 메시지 [2021년 2회]
메시지(Message) 객체에게 어떤 행위를 하도록 지시하는 명령 [2022년 3회, 2023년 1회]
인스턴스(Instance) 클래스에 속한 각각의 객체 [2021년 2회]
속성(Property) 한 클래스 내에 속한 객체들이 가지고 있는 데이터 값들을 단위별로 정의

 

객체지향 기법 (캡상다추정관) [2021년 3회]

기법 설명
슐화
(Encapsulation)
[2021년 3회]
- 서로 관련성이 많은 데이터와 이와 관련된 함수들을 한 묶음으로 처리하는 기법.
- 속성과 관련된 연산(Operation)을 클래스 안에 묶어서 하나로 취급하는 것을 의미 [2022년 2회]
- 외부와 경계를 만들고 필요한 인터페이스만을 밖으로 드러내는 과정 [2021년 1회]  [2022년 3회]
- 정보 은닉과 밀접한 관계가 있다. [2020년 2회, 3회]
-인터페이스가 단순화된다, 소프트웨어 재사용성이 높아진다, 변경 발생 시 오류의 파급효과가 적다. [2020년 3회, 4회]
속성
(Inheritance)
상위 클래스의 속성과 메소드를 하위 클래스에서 재정의 없이 물려받아 사용하는 기법 [2022년 1회]
형성
(Polymorphism)
- 하나의 메시지에 대해 각 객체가 가지고 있는 고유한 방법으로 응답할 수 있는 능력
- 다형성은 현재 코드를 변경하지 않고 새로운 클래스를 쉽게 추가할 수 있게 한다.
- 여러 가지 형태를 가지고 있다는 의미로, 여러 형태를 받아들일 수 있는 특징을 말한다.
- 메소드 오버라이딩(Overriding)은 상위 클래스에서 정의한 일반 메소드의 구현을 하위 클래스에서 무시하고 재정의할 수 있다.
- 메소드 오버로딩(Overloading) 메소드명은 같지만 매개 변수의 개수나 타입을 다르게 함으로써 구현, 구분할 수 있다. [2022년 2회]
상화
(Abstraction)
공통 성질을 추출하여 클래스를 설정하는 기법
보은닉
(Information Hiding)
코드 내부 데이터와 메소드를 숨기고 공개 인터페이스르 통해서만 접근이 가능하도록 하는 코드 보안 기술
계성(연관성)
(Relationship)
두 개 이상의 엔티티 형에서 데이터를 참조하는 관계를 나타내는 기법

연관성 종류
- is member of
  : 연관화(Association), 2개 이상의 객체가 상호 관련되어 있음
- is instance of
  : 분류화(Classfication), 동일한 형의 특성을 갖는 객체들을 모아 구성
- is part of
  : 집단화(Aggregation), 관련 있는 객체들을 묶어 하나의 상위 객체를 구성 [2020년 1회]
- is a
  : 일반화(Generalization): 공통적인 성질들로 추상화한 상위 객체를 구성하는 것
  : 특수화/상세화(Specialization): 상위 객체를 구체화하여 하위 객체를 구성하는 것

 

정보 은닉(Information Hiding)

  • 필요하지 않은 정보는 접근할 수 없도록 하여 한 모듈 또는 하부 시스템이 다른 모듈의 구현에 영향을 받지 않게 설계되는 것을 의미한다. [2021년 2회]
  • 모듈들 사이의 독립성을 유지시키는 데 도움이 된다.
  • 설계에서 은닉되어야 할 기본 정보로는 IP 주소와 같은 물리적 코드, 상세 데이터 구조 등이 있다.
  • 모듈이 독립성을 갖게 해주므로, 요구사항 등 변화에 따른 수정, 시험, 유지보수가 용이하다. [2021년 3회]

 

객체지향 설계 원칙(SOLID) [2020년 2회, 4회] [2022년 1회, 3회] [2023년 1회, 2회]

원칙 설명
단일 책임의 원칙 (SRP)
(Single Responsibility Principle)
하나의 클래스는 하나의 목적을 위해 생성
개방 폐쇄 원칙 (OCP)
(Open Close Principle)
소프트웨어의 구성요소는 확장에는 열려 있고 변경에 대해 닫혀 있어야 한다는 원칙
리스코프 치환의 원칙 (LSP)
(Liskov Subsitution)
서브 타입(상속받은 하위 클래스)은 어디서나 자신의 기반 타입(상위 클래스)으로 교체할 수 있어야 한다는 원칙
인터페이스 분리의 원칙 (ISP)
(Interface Segregation Principle)
클라이언트는 자신이 사용하지 않는 메서드와 의존관계를 맺으면 안된다.
클라이언트가 사용하지 않는 인터페이스 때문에 영향을 받아서는 안된다.

의존 역전 원칙 (DIP)
(Dependency Inversion Principle)
실제 사용 관계는 바뀌지 않으며, 추상을 매개로 메시지를 주고받음으로써 관계를 최대한 느슨하게 만드는 원칙


객체지향 방법론 종류

종류 만든이(방법론) 설명 특징
OOSE
(Object Oriented Software Engineering)
Jacobson
(야콥슨)방법론
유스케이스에 의한 접근방법으로 유스케이스를 모든 모델의 근간으로 활용 분석, 설계, 구현 단계로 구성

기능적 요구사항 중심의 시스템
OMT
(Object Modeling Technology)
Rumbaugh
(럼바우)방법론
객체지향 분석, 시스템 설계, 오브젝트 설계 및 구현의 4단계로 구성

럼바우의 객체지향 분석 절차 (객동기)

체 모델링 → 적 모델링 → 능 모델링
[2020년 1회, 2회, 3회, 4회] [2021년 2회] [2022년 1회] [2023년 3회]
복잡한 대형 프로젝트에 유용,

기업 업무의 모델링 편리 및 사용자와 의사소통 편리
OOD
(Object Oriented Design)

Booch
(부치)방법론
설계 부분만 존재

설계 문서화를 강조하여 다이어그램 중심으로 개발하는 방법론

미시적(Micro) 개발 프로세스와 거시적(Macro) 개발 프로세스를 모두 사용하는 분석 방법
분석과 설계 분리 불가능

분석하는 데 이용된 객체 모델의 설계시 적용
Wirfs-Brock
방법론
고객 명세서를 평가해서 설계 작업까지 연속적으로 수행하는 분석방법 분석과 설계 간의 구분이 없다
OOA
(Object Oriented Analysis)
Coad와 Yourdon
방법론
객체 식별, 구조 식별, 주체 정의, 속성 및 관계 정의, 서비스 정의 등의 과정으로 구성되는 객체 지향 분석방법
[2020년 1회] [2021년 1회]  [2023년 3회]
E-R 다이어그램을 사용하여 객체의 행위를 모델링

 

※ 객체/동적/기능 모델링에 활용되는 다이어그램 상세 바로가기

https://simuing.tistory.com/entry/2021-정보처리기사-필기요약-UML

 

2021 #정보처리기사 필기요약 #1-1. UML

2021년 NCS기반 정처기 필기입니다. 이기적2020과 수제비2021 수험서를 함께 보고 공부한 기록입니다. 제 1과목 소프트웨어 설계 > 요구사항 확인 > UML UML(Unified Modeling Language)의 개념 UML은 객체지향

simuing.tistory.com

 

럼바우(Rumbaugh) 분석 기법

객체 모델링(Object Modeling)

  • 정보 모델링이라고 하며, 시스템에서 요구되는 객체를 찾아내어 속성과 연산 식별 및 객체들 간의 관계를 규정하여 객체 다이어그램으로 표시 [2021년 1회]
  • 분석 활동의 세 가지 모델 중 가장 중요하며 선행되어야 할 모델링

동적 모델링(Dynamic Modeling)

  • 상태 다이어그램(상태도)을 이용하여 시간의 흐름에 따른 객체들 간의 제어 흐름, 상호 작용, 동작 순서 등의 동적인 행위를 표현하는 모델링 [2020년 3회]

기능 모델링(Functional Modeling)

  • 자료 흐름도(DFD)를 이용하여 다수의 프로세스들 간의 자료 흐름을 중심으로 처리 과정을 표현한 모델링 [2021년 3회]

 


디자인 패턴

소프트웨어 설계에서 자주 발생하는 문제에 대한 일반적이고 반복적인 해결 방법 [2022년 1회]

디자인 패턴 사용의 장단점

  • 소프트웨어 구조 파악이 용이하다.
  • 객체지향 설계 및 구현의 생산성을 높이는데 적합하다.
  • 재사용을 위한 개발 시간이 단축된다.
  • 절차형 언어보다는 객체지향 언어와 함께 이용될 때 효율이 극대화된다. [2020년 3회]

디자인 패턴 구성요소 (패문솔 사결샘)

턴 이름 / 제 및 배경 / 루션 / 례 / 과 / 플 코드  [2020년 2회]

디자인 패턴 유형 (생구행)

목적: 성 / 조 / 

범위: 클래스 / 객체

 

GoF(Gangs of Four) 디자인 패턴 종류

생성 패턴 / 구조 패턴 / 행위 패턴으로 분류된다. [2020년 3회] [2023년 2월]

성 패턴 (생빌 프로 팩앱싱) [2021년 1회, 2회] [2022년 1회]

더 / 로토타입 / 토리 메서드 / 스트랙 팩토리 / 글톤
Builder / Prototype / Factory Method / Abstract Factory / Singleton
→ 생더블 날빌을 프로브 안뽑고 하길래 팩토리 애(앱)드온해서 싱나게 두들겼다.

 

조 패턴 (구 브데 퍼플 프록 컴 어) [2022년 2회] [2023년 1회, 3회]

리지 / 코레이터 / 지사이드 / 라이 웨이트 / 록시 / 포지트 / 댑터
Bridge / Decorator / Facade / Flyweight / Proxy / Composite / Adapter
→ 9(구) 부대(브데) 퍼플(보라색) 프로(록)토스 컴퓨터 병력이 어디있지?

 

행위 패턴 [2020년 1회, 2회]

Command, Observer, State, Visitor, Interpreter, Template Method, Chain of Responsibility, Iterator, Mediator, Memento,Strategy

 

 

디자인 패턴 설명 더보기를 클릭하면 보입니다.

더보기

 

구분 패턴 설명
생성 패턴 Builder 생산 단계를 캡슐화하여 구축 공정을 동일하게 이용하도록 하는 패턴
Prototype 복사하여 새 개체를 생성할 수 있도록 하는 패턴  [2021년 3회]
Factory Method 객체를 생성하기 위한 인터페이스를 정의하여 어떤 클래스가 인스턴스화 될 것인지는 서브 클래스가 결정하도록 하는 패턴, Virtual-Constructor 패턴이라고도 함
[2020년 2회, 3회, 2023년 3회]
Abstract Factory 생성군들을 하나에 모아놓고 팩토리 중에서 선택하게 하는 패턴
Singleton 유일한 하나의 인스턴스를 보장하도록 하는 패턴
하나의 객체를 생성하면 생성된 객체를 어디서든 참조할 수 있지만, 여러 프로세스가 동시에 참조할 수는 없는 패턴 [2022년 3회, 2023년 2회]
구조 패턴 Bridge 추상과 구현을 분리하여 결합도를 낮춘 패턴
Decorator 소스를 변경하지 않고 기능을 확장하도록 하는 패턴
Facade 하나의 인터페이스를 통해 느슨한 결합을 제공하는 패턴
Flyweight 대량의 작은 객체들을 공유하는 패턴
Proxy 대리인이 대신 그 일을 처리하는 패턴
Composite 개별 객체와 복합 객체를 클라이언트에서 동일하게 사용하도록 하는 패턴
Adapter 인터페이스로 인해 함께 사용하지 못하는 클래스를 함께 사용하도록 하는 패턴
기존에 구현되어 있는 클래스에 기능 발생 시 기존 클래스를 재사용할 수 있도록 중간에서 맞춰주는 역할을 한다. [2021년 3회] [2023년 1회]
행위 패턴 Interpreter 언어 규칙 클래스를 이용하는 패턴
Template Method 알고리즘 골격의 구조를 정의한 패턴
알고리즘은 상위 클래스에서 정의하고 나머지는 하위 클래스에서 구체화하는 패턴 [2023년 2회]
Chain of Responsibility 객체들끼리 연결 고리를 만들어 내부적으로 전달하는 패턴
Command 요청 자체를 캡슐화하여 파라미터로 넘기는 패턴
Iterator 내부 표현은 보여주지 않고 순회하는 패턴
Mediator 객체 간 상호작용을 캡슐화한 패턴
Memento 상태 값을 미리 저장해 두었다가 복구하는 패턴
Observer 상태가 변할 때 의존자들에게 알리고, 자동 업데이트하는 패턴
State 객체 내부 상태에 따라서 행위를 변경하는 패턴
Strategy 다양한 알고리즘을 캡슐화하여 알고리즘 대체가 가능하도록 한 패턴 [2021년 3회]
Visitor  오퍼레이션을 별도의 클래스에 새롭게 정의한 패턴 [2020년 1회]

 

디자인 패턴의 장단점 [2020년 4회]

장점

  • 요구사항 변경에 따른 소스 코드 변경 최소화
  • 설계 변경 요청에 대한 유연한 대처 가능
  • 범용적인 코딩 스타일 적용 가능
  • 개발자 간의 원활한 의사소통 가능
  • 재사용을 통한 개발 시간 단축 가능
  • 소프트웨어 구조 파악 용이
  • 객체지향 설계 및 구현의 생산성을 높임

단점

  • 객체지향 설계/구현 위주로 사용
  • 초기 투자 비용의 부담

 

728x90

댓글