본문 바로가기
정보처리기사

[소프트웨어 설계] 19. 코드&디자인패턴

by reve5 2022. 2. 28.

7. 코드화 대상 항목의 중량, 면적, 용량 등의 물리적 수치를 이용하여 만든 코드는?
① 순차 코드
② 10진 코드
③ 표의 숫자 코드
④ 블록 코드

>> 정답 3번

순차 = 순서대로 일련번호

10진 = 10의 자리. 1자리에 의미가 있다

표의 숫자 = 코드화 대상 항목에 관련된 중량, 면적, 용량, 거리, 부피, 성능 등의 구체적인 수치를 직접 코드에 적용시키는 방법

블록 = 묶은 후 순차 코드


5. 코드 설계에서 일정한 일련번호를 부여하는 방식의 코드는?
① 연상 코드 ② 블록 코드
③ 순차 코드 ④ 표의 숫자 코드

>> 정답 3번

일련코드 > 순서대로 순차코드를 말한다.

 

연상 = 제품을 보고 떠오르는 코드

 

 

19. GoF(Gangs of Four) 디자인 패턴 분류에 해당하지 않는 것은?
① 생성 패턴 ② 구조 패턴
③ 행위 패턴 ④ 추상 패턴

>> 정답 4번

디자인 패턴 = 서브 시스템 설계 
3가지 패턴 = 생성, 구조, 행위


8. 디자인 패턴 사용의 장٠단점에 대한 설명으로 거리가 먼 것은?
① 소프트웨어 구조 파악이 용이하다.
② 객체지향 설계 및 구현의 생산성을 높이는데__ 적합하다.
③ 재사용을 위한 개발 시간이 단축된다.
④ 절차형 언어와 함께 이용될 때 효율이 극대화된다.

>> 정답 4번


4. GoF(Gangs of Four) 디자인 패턴의 생성패턴에 속하지 않는 것은?
① 추상 팩토리(Abstract Factory)
② 빌더(Builder)
③ 어댑터(Adapter)
④ 싱글턴(Singleton)


>> 정답 3번

 

디자인 패턴 생성패턴
1. 추상 팩토리 abstract factory
2. 팩토리 메소드 factory method
3. 빌더 builder
4. 프로토 타입 prototype
5. 싱글톤 singleton

 

 

3번 어댑터는 구조 패턴에 속한다.



15. 디자인 패턴을 이용한 소프트웨어 재사용으로 얻어지는 장점이 아닌 것은?
① 소프트웨어 코드의 품질을 향상시킬 수 있다.
② 개발 프로세스를 무시할 수 있다.
③ 개발자들 사이의 의사소통을 원활하게 할 수 있다.
④ 소프트웨어의 품질과 생산성을 향상시킬 수 있다.


>> 정답 2번

 

 



2. 다음 내용이 설명하는 디자인 패턴은?

- 객체를 생성하기 위한 인터페이스를 정의 하여 어떤 클래스가 인스턴스화 될 것인지는 서브클래스가 결정하도록 하는 것
- Virtual-Constructor 패턴이라고도 함

① Visitor패턴
② Observer패턴
③ Factory Method 패턴
④ Bridge 패턴


>> 정답 3번

 

Factory Method 패턴 = 팩토리 메소드
객체를 생성하기 위해 인터페이스를 만듭니다. 어떤 클래스의 인스턴스를 만들지를 서브클래스에서 결정하도록 합니다. 팩토리 메소드를 이용하면 인스턴스를 만드는 일을 서브클래스로 미룰 수 있습니다

 

factory 클래스를 통해 객체를 생성한다.

 

 

옵저버 패턴(observer pattern)은 한 객체의 상태가 바뀌면 그 객체에 의존하는 다른 객체들한테 연락이 가고 자동으로 내용이 갱신되는 방식으로 일대다 의존성을 정의합니다.

 

 Visitor패턴 방문자와 방문 공간을 분리하여 방문공간에 방문자를 맞이 할 떄 이후에 대한 행동을 방문자에게 위임하는 패턴 따라서 이 패턴을 이용하여 수행 로직을 분리할 수 있다. 


Bridge 패턴 = 기능과 구현을 분리하여 각자 독립적으로 변형이 가능하고 각각의 클래스로 구현한다.



8. 디자인 패턴 중에서 행위적 패턴에 속하지 않는 것은?
① 커맨드(Command) 패턴
② 옵저버(Observer) 패턴
③ 프로토타입(Prototype) 패턴
④ 상태(State) 패턴


>> 정답 3번

 

 

 



프로토 타입은 생성 패턴에 속한다.

 

디자인 패턴 중 행위 패턴
1. 책임연쇄 chain of responsibility
2. 커맨드 command
3. 인터프리터 interpreter
4. 반복자 iterator
5. 중재자 mediator
6. 메멘토 memento
7. 옵저버 observer
8. 상태 state
9. 전략 strategy
10. 템플릿 메소드 template method
11. 방문자 vistor



19. GoF(Gangs of Four) 디자인 패턴 중 생성패턴으로 옳은 것은?
① singleton pattern ② adapter pattern
③ decorator pattern ④ state pattern

>> 정답 1번

 

디자인 패턴 생성패턴
1. 추상 팩토리 abstract factory
2. 팩토리 메소드 factory method
3. 빌더 builder
4. 프로토 타입 prototype
5. 싱글톤 singleton

 

2. 어댑터 패턴 = 구조 3. 데코레이션 패턴 = 구조 4. 상태 패턴 = 행위




6. GoF(Gangs of Four) 디자인 패턴에 대한 설명으로 틀린 것은?
① factory method pattern은 상위클래스에서 객체를 생성하는 인터페이스를 정의하고, 하위클래스에서 인스턴스를 생성하도록 하는 방식이다. (팩토리 메소드)
② prototype pattem은 prototype을 먼저 생성하고 인스턴스를 복제하여 사용하는 구조이다. (프로토 타입)
③ bridge pattem은 기존에 구현되어 있는 클래스에 기능 발생 시 기존 클래스를 재사용할 수 있도록 중간에서 맞춰주는 역할을 한다.
④ mediator pattem은 객체 간의 통제와 지시의 역할을 하는 중재자를 두어 객체지향의 목표를 달성하게 해준다. (중재자)


>> 정답 3번
3번은 브릿지 패턴이 아니라 어댑터 패턴의 뜻이다.

어댑터 패턴 = 기존에 구현되어 있는 클래스에 기능 발생 시 기존 클래스를 재사용할 수 있또록 중간에서 맞춰주는 역할을 한다. 

 

브릿지 패턴 = 기능의 클래스 계층과 구현의 클래스 계층을 연결하고 구현부에서 추상 계층 분리하여 추상화된 부분과 실제 구현 부분을 독립적으로 확장할 수 있는 디자인 패턴

 



1. GoF(Gang of Four)의 디자인 패턴에서 행위 패턴에 속하는 것은?
① Builder ② Visitor
③ Prototype ④ Bridge

>> 정답 2번

 

디자인 패턴 중 행위 패턴
1. 책임연쇄 chain of responsibility
2. 커맨드 command
3. 인터프리터 interpreter
4. 반복자 iterator
5. 중재자 mediator
6. 메멘토 memento
7. 옵저버 observer
8. 상태 state
9. 전략 strategy
10. 템플릿 메소드 template method
11. 방문자 vistor

 

 

1번 빌더, 3번 프로토 타입은 생성패턴 4번 브릿지는 구조 패턴에 속한다.


14. GoF(Gang of Four) 디자인 패턴과 관련한 설명으로 틀린 것은?
① 디자인 패턴을 목적(Purpose)으로 분류할 때 생성, 구조, 행위로 분류할 수 있다.
② Strategy 패턴은 대표적인 구조 패턴으로 인스턴스를 복제하여 사용하는 구조를 말한다.
③ 행위 패턴은 클래스나 객체들이 상호작용하는 방법과 책임을 분산하는 방법을 정의한다.
④ Singleton 패턴은 특정 클래스의 인스턴스가 오직 하나임을 보장하고, 이 인스턴스에 대한 접근 방법을 제공한다.


>> 정답 2번

프로토 타입 패턴의 설명이다. 프로토 타입은 생성 패턴에 속한다.

전략 패턴은 행위 패턴에 속하며 캡슐화된 클래스를 필요할때 서료 교환해서 사용할 수 있게 하는 패턴

 

 

 

참조 사이트

https://velog.io/@poiuyy0420/%EB%94%94%EC%9E%90%EC%9D%B8-%ED%8C%A8%ED%84%B4-%EA%B0%9C%EB%85%90%EA%B3%BC-%EC%A2%85%EB%A5%98

 

디자인 패턴 개념과 종류

💻 우리가 기능구현을 할 때 실제로 모든 케이스가 이렇게 미리 알려진 디자인패턴에 들어맞을리는 없지만, 그래도 어느정도 '교과서' 같이 정의되고 분류된 패턴들이다.이번에는 개념과 종류

velog.io


https://www.youtube.com/watch?v=R_w93dlp_Do&list=PLKpxllD6C8CnkSWfqRJsHOYtbBFnvtrcY&index=20 


코드 = 일정한 규칙에 따라 만들어진 기호
식별 분류 배열의 기능이 있다.

종류

1. 순차
일련번호과 같다 다른 개념에 더하여 사용한다.
2. 블록
우선 구역을 구분한뒤 순차 코드를 붙인다
3. 10진 
항목들은 10진분할 > 필요할 때까지 반복하여 코드 부여
4. 그룹분류
- 로 구분하고 2자리 이상의 일련번호 부여가 가능한다.
5. 연상
코드만 봐도 어떤 제품인지 연상되는 코드
6. 표의숫자
해당 제품의 수치를 코드에 적용, 유효 숫자 코드라고 함


디자인 패턴
아키텍처 패턴 = 시스템 구조
디자인 패턴 = 서브 시스템 상세 구현
패턴 = 공식

생성 5개
구조 7개
행위 11개


1. 생성패턴 > 객체 생성

갭슐화
유연성

추상팩토리 abstract factory
객체 생성 코드가 상위클래스에 존재, 하위(구체화) 클래스가 받아 씀

상위 클래스이 코드가 변경되면 상속받은 하위 클래스도 변경된다 

팩토리 메소드 factory method
객체 생성코드를 하위 클래스에서 구체화, 상위 클래스는 인터페이스만 제공한다.
각각의 클래스가 서로 다른 작업이 가능함

빌더 builder
분리 된 인스턴스를 조합하여 객체 생성
생성과 표현을 분리하여 같은 객체를 생성해도 다른 결과를 도출할 수 있다.

프로토 타입 prototype
원본 복제, 비용 저렴

싱글톤 singleton
클래스 내 인스턴스 하나뿐임을 보장, 동시 참조 불가능
 

2. 구조 패턴 : 복잡한 구조의 시스템 개발에 필요하다

어댑터 adapter
일치 하지 않는 인터페이스 변환

브릿지 bridge
추상층(기능)과 구현층(구체화)을 분리하여 독립적 확장

컴포지트 composite
단일 객체와 복합 개체를 구분 없이 다룸
트리 구조로 구성

데코레이터 decortor
클래스에 기능 추가를 위해 다른 객체를 덧붙임

 퍼사드 facade
서브 클래스들의 통합 인터페이스를 제공 (wrapper 객체) 하는 상위 클래스 구성

플라이웨이트 flyweight
다수의 유사 객체 생성이 필요할 떄 최대한 공유해서 사용(메모리 절약)

프록시 proxy
접근이 어려운 객체에 접근할 수 있도록 인터페이스 역할 수행

3. 행위 패턴 : 상호 작용, 책임 분배, 결합도는 최소화

책임연쇄 chain of responsibility
둘 이상 객체가 연결(chain)되어 책임이 차례로 넘어감

커맨드 command
요청에 필요한 명령어 캡슐화(추상과 구체), 로그에 기록한다
 
인터프리터 interpreter
문법 표현 정의, 맞춤법 검사

반복자 iterator
접근이 갖은 객체는 동일한 인터페이스 사용하도록 한다. 순차 접근이 가능하다.

디렉토리 주소에서 반복적으로 사용되는 기호같은 것이다. 이 기호를 통해 목적지 까지 순차적으로 접근할 수 있다.

중재자 Mediator
복잡한 상호작용 캡슐화 > 결합도를 낮춤

메멘토 Memento
특정 시점의 상태 객체화, 되돌리기

옵저버 observer
이벤트 발행과 구독, 상태 변화 전달

카톡의 읽음 표시 같은 느낌

상태 state
이벤트를 객체 상태에 따라 동작을 다르게 처리

전략 strategy
동일 계열 알고리즘 개별적으로 객체화하여  상호 교환. 독립적 사용

템플릿 메소드 template method
상위에서 인터페이스 정의. 하위에서 구체화(유지보수)
코드의 유지 보수가 쉬워진다. 
생성패턴의 팩토리 메소드와 비슷한 개념

방문자 vistor
처리 기능을 별도의 클래스로 구성
데이터 구조와 기능을 분리하는 형태이다.

댓글