본문 바로가기
자격증/정보처리기사

준비정보처리기사 실기 2021년 3회 실기 정답및 개념정리

by 말린밴댕이_공부 2022. 11. 10.
반응형

1. 다음 Java 코드에 대한 알맞는 출력값을 쓰시오.

class Connection {
  private static Connection _inst = null;
  private int count = 0;
    static public Connection get() {
      if(_inst == null) {
      _inst = new Connection();
      return _inst;
      }
    return _inst;
    }
  public void count() { count ++; }
  public int getCount() { return count; }
}

public class testcon {
  public static void main(String[] args) {
    Connection conn1 = Connection.get();
    conn1.count();
    Connection conn2 = Connection.get();
    conn2.count();
    Connection conn3 = Connection.get();
    conn3.count();

    System.out.print(conn1.getCount());
  }
}

2. 다음은 정보 보호 기술인 AAA에 대한 설명이다. 각 설명에 맞는 용어를 적으시오.

(1) 시스템을 접근하기 전에 접근 시도하는 사용자의 신원을 검증
(2) 검증된 사용자에게 어떤 수준의 권한과 서비스를 허용
(3) 사용자의 자원(시간,정보,위치 등)에 대한 사용 정보를 수집

3. 데이터 제어어(DCL) 중 GRANT 에 대하여 설명하시오.

4. 다음은 스푸핑 공격에 대한 설명이다. 괄호안에 들어갈 알맞은 답안을 작성하시오.

( ) 스푸핑은 근거리 통신망 하에서 ( ) 메시지를 이용하여 상대방의 데이터 패킷을 중간에서 가로채는 중간자 공격 기법이다. 이 공격은 데이터 링크 상의 프로토콜인 (  )를 이용하기 때문에 근거리상의 통신에서만 사용할 수 있는 공격이다.

5. 다음은 Coupling에 대한 설명이다. 설명에 대한 Coupling 종류를 영문으로 작성하시오.

어떤 모듈이 다른 모듈의 내부 논리 조직을 제어하기 위한 목적으로 제어 신호를 이용하여 통신하는 경우의 결합도이다. 하위 모듈에서 상위 모듈로 제어 신호가 이동하여 상위 모듈에게 처리 명령을 부여하는 권리 전도 현상이 발생할 수 있다.

6. OSI 7 Layer에 대한 설명이다. 다음 각 설명에 해당되는 계층을 적으시오.

(1) 물리계층을 통해 송수신되는 정보의 오류와 흐름을 관리하여 안전한 정보의 전달을 수행할 수 있도록 도와주는 역할
(2) 데이터를 목적지까지 가장 안전하고 빠르게 전달하는 기능
(3) 수신자에서 데이터의 압축을 풀수 있는 방식으로 된 데이터 압축

7. 다음 객체지향 추상화에 대한 설명 중 괄호 안에 들어갈 알맞은 용어를 적으시오.

(  A  )은/는 클래스들 사이의 전체 또는 부분 같은 관계를 나타내는 것이고, (  B  )은/는 한 클래스가 다른 클래스를 포함하는 상위 개념일 때 IS-A관계라하며, 일반화 관계로 모델링한다.

8. 다음은 테스트케이스의 구성요소에 대한 설명이다. 괄호 ( ) 안에 들어갈 알맞는 보기를 고르시오.

 

9. 아래에서 설명하는 테스트 기법은 무엇인가?

입력 자료 간의 관계와 출력에 영향을 미치는 상황을 체계적으로 분석 후 효용성이 높은 테스트 케이스를 선정해서 테스트하는 기법

10. 다음에서 설명하는 블록 암호 알고리즘을 적으시오.

이것은 미국 NBS (National Bureau of Standards, 현재 NIST)에서 국가 표준으로 정한 암호 알고리즘으로, 64비트 평문을 64비트 암호문으로 암화하는 대칭키 암호 알고리즘이다. 키는 7비트마다 오류검출을 위한 정보가 1비트씩 들어가기 때문에 실질적으로는 56비트이다. 현재는 취약하여 사용되지 않는다.

11. 다음 Java 코드에 대한 알맞는 출력값을 쓰시오.

public class testco {
 public static void main(String[] args) {
  int a = 3, b = 4, c = 3, d = 5;
  if((a == 2 | a == c) & !(c > d) & (1 == b ^ c != d)) {
   a = b + c;
    if(7 == b ^ c != a) {
     System.out.println(a);
    } else {
    System.out.println(b);
    }
  } else {
    a = c + d;
    if(7 == c ^ d != a) {
    System.out.println(a);
    } else {
    System.out.println(d);
    }
  }
 }
}

12. 다음 C언어 코드에 대한 알맞는 출력값을 쓰시오.

#include
int main(){
  int *arr[3];
  int a = 12, b = 24, c = 36;
  arr[0] = &a;
  arr[1] = &b;
  arr[2] = &c;

  printf("%dn", *arr[1] + **arr + 1);
}

 

13. 다음은, 테이블에서 조건값을 실행한 화면이다. 이에 대한 알맞는 결과값을 작성하시오.

 

14. 다음 파이썬 코드의 알맞는 출력값을 쓰시오.

a,b = 100, 200
print(a==b)

15. 다음은 UML의 다이어그램에 대한 설명이다. 어떤 다이어그램에 대한 설명인가?

이 다이어그램은 문제 해결을 위한 도메인 구조를 나타내어 보이지 않는 도메인 안의 개념과 같은 추상적인 개념을 기술하기 위해 나타낸 것이다.
또한 소프트웨어의 설계 혹은 완성된 소프트웨어의 구현 설명을 목적으로 사용할 수 있다. 이 다이어그램은 속성(attribute)과 메서드(method)를 포함한다.

16. 다음 보기에서 설명하는 객체지향 디자인 패턴은 무엇인가?

부모(상위) 클래스에 알려지지 않은 구체 클래스를 생성하는 패턴이며, 자식(하위) 클래스가 어떤 객체를 생성할지를 결정하도록 하는 패턴이기도 하다.  부모(상위) 클래스 코드에 구체 클래스 이름을 감추기 위한 방법으로도 사용한다.

17. 다음 C언어 코드에 대한 알맞는 출력값을 쓰시오.

#include

struct jsu {
  char nae[12];
  int os, db, hab, hhab;
};

int main(){
  struct jsu st[3] = {{"데이터1", 95, 88},
                    {"데이터2", 84, 91},
                    {"데이터3", 86, 75}};
  struct jsu* p;

  p = &st[0];

  (p + 1)->hab = (p + 1)->os + (p + 2)->db;
  (p + 1)->hhab = (p+1)->hab + p->os + p->db;

  printf("%dn", (p+1)->hab + (p+1)->hhab);
}

18. 다음은 파일 구조(File Structures)에 대한 설명이다. 괄호 ( ) 안에 들어갈 알맞는 답을 작성하시오.

파일구조는 파일을 구성하는 레코드들이 보조기억장치에 편성되는 방식으로 접근 방식에 따라 방식이 달라진다. 접근 방법중, 레코드들을 키-값 순으로 정렬하여 기록하고, 레코드의 키 항목만을 모은 (  )을 구성하여 편성하는 방식이 있으며, 레코드를 참조할 때는 (   ) 이 가르키는 주소를 사용하여 직접 참조할 수 있다. 파일 구조에는 순차 접근, (  ) 접근,  해싱 접근이 있다.

19. 다음 설명에 대한 알맞는 답을 영문약어로 작성하시오.

(  )는 사용자가 그래픽을 통해 컴퓨터와 정보를 교환하는 환경을 말한다. 이전까지 사용자 인터페이스는 키보드를 통해 명령어로 작업을 수행시켰지만 (   )에서는 키보드 뿐만 아니라 마우스 등을 이용하여 화면의 메뉴 중 하나를 선택하여 작업을 수행한다.
화면에 아이콘을 띄어 마우스를 이용하여 화면에 있는 아이콘을 클릭하여 작업을 수행하는 방식이다.
대표적으로는 마이크로소프트의 Windows, 애플의 Mac 운영체제 등이 있다.

20. 다음은 소프트웨어 통합 테스트에 대한 설명이다. 괄호 ( ) 안에 들어갈 알맞는 답을 작성하시오.

(   A  ) 방식은 하위 모듈부터 시작하여 상위 모듈로 테스트를 진행하는 방식이며, 이 방식을 사용하기 위해서는 (  C  )가 필요하다. (   C   )는 이미 존재하는 하위 모듈과 존재하지 않은 상위 모듈에 대한 인터페이스 역할을 한다.

 

 

정답 및 해설

1. 3

2. Authentication, Authorization, Accounting

3. 데이터베이스 사용자에게 사용 권한을 부여하는데 사용하는 명령어

4. ARP

5. 제어(Control Coupling)

6. 데이터링크, 네트워크 , 표현

7. Aggregation, Generalization

8. 테스트 조건, 테스트 데이터, 예상결과

9. Cause Effect Graph (원인 결과 그래프)

10. DES

11. 7

12. 37

13. 4

14. False

15. 클래스 다이어그램

16. 팩토리

17. 501

18. 인덱스(또는 색인)

19. GUI

20. 상향식, 테스트 드라이버

 

 

 

AAA

  1. Authentication , Authorization, Accounting

Data Control Language; 데이터 제어어

데이터베이스에 접근하거나 객체에 권한을 주는등의 역할을 하는 언어

  • 데이터를 제어하는 언어 입니다.
  • 데이터의 보안, 무결성, 회복, 병행 수행제어 등을 정의하는데 사용합니다.

종류 역할

GRANT 특정 데이터베이스 사용자에게 특정 작업에 대한 수행권한 부여 합니다.
REVOKE 특정 데이터베이스 사용자에게 특정 작업에 대한 수행 권한을 박탈, 회수 합니다.
COMMIT 트랜잭션의 작업을 성공적으로 종료하는 역할을 합니다.
ROLLBACK 트랜잭션의 작업을 취소 및 원래대로 복구하는 역할을 합니다.

ARP 스푸핑

- 로컬에서 통신하고 있는 서버와 클라이언트의 MAC주소를 공격자의 MAC주소로 속인다.

- 주로 스니핑에 이용된다.

결합도

자료 결합도 < 스탬프 결합도 < 제어 결합도 < 외부 결합도 < 공통 결합도 < 내용 결합도

  • 자료 결합도(Data Coupling)
    • 모듈간의 인터페이스 전달되는 파라미터를 통해서만 모듈간의 상호 작용이 일어나는 경우
    • 깔끔한 Call by value
  • 스탬프 결합도(Stamp Coupling)
    • 모듈간의 인터페이스로 배열이나 오브젝트, 스트럭쳐등이 전달되는 경우
  • 제어 결합도(Control Coupling)
    • 단순히 처리를 해야할 대상인 값만 전달되는게 아니라 어떻게 처리를 해야 한다는 제어 요소(DCD, Flag등)이 전달되는 경우.
    • 어떤 모듈이 다른 모듈의 내부 논리 조직을 제어하기 위한 목적으로 제어신호를 이용하여 통신하는 경우이며, 하위 모듈에서 상위 모듈로 제어신호가 이동하여 상위 모듈에게 처리 명령을 부여하는 권리 전도현상이 발생하게 됨.(정처기 20년 3회 기출)
  • 외부 결합도(External Coupling)
    • 어떤 모듈에서 반환한 값을 다른 모듈에서 참조해서 사용하는 경우
  • 공통 결합도(Common Coupling)
    • 파라미터가 아닌 모듈 밖에 선언되어 있는 전역 변수를 참조하고 전역변수를 갱신하는 식으로 상호작용하는 경우
  • 내용 결합도(Content Coupling)
    • 다른 모듈 내부에 있는 변수나 기능을 다른 모듈에서 사용 하는 경우

응집도

우연적 응집도 < 논리적 응집도 < 시간적 응집도 < 절차적 응집도 < 교환적 응집도 < 순차적 응집도 < 기능적 응집도[1]

  • 기능적 응집도(Functional Cohesion)
    • 모듈 내부의 모든 기능이 단일한 목적을 위해 수행되는 경우
  • 순차적 응집도(Sequential Cohesion)
    • 모듈 내의 한 활동으로부터 나온 출력값을 모듈 내의 다른 활동이 사용할 경우
  • 교환적 응집도(Communication Cohesion)
    • 서로 다른 기능을 수행하지만 동일한 입력과 출력을 사용하는 활동들이 모여있을 경우
  • 절차적 응집도(Procedural Cohesion)
    • 모듈 안의 구성요소들이 서로 다른 기능을 하지만 그 기능을 순차적으로 수행할 경우
  • 시간적 응집도(Temporal Cohesion)
    • 연관된 기능이라기 보단 특정 시간에 처리되어야 하는 활동들을 한 모듈에서 처리할 경우
  • 논리적 응집도(Logical Cohesion)
    • 실제와 달리 논리적으로만 같은 그룹으로 분류되는 처리 요소들이 한 모듈에서 처리되는 경우
  • 우연적 응집도(Coincidental Cohesion)
    • 모듈 내부의 각 구성요소들이 연관이 없을 경우

 

UML다이어그램 종류

Use Case 다이어그램 요구 분석 과정에서 시스템과 외부와의 상호작용을 묘사
Activity 다이어그램 업무의 흐름을 모델링하거나 객체의 생명주기를 표현함
Sequence 다이어그램 객체간 메세지 전달을  시간적 흐름으로 분석함
Collaboration 다이어그램 객체과 객체가 주고받는 메세지 중심의 작성
Class 다이어그램 시스템의 구조적인 모습을 그림
Component 다이어그램 소프트웨어 구조를 그림
Deployment 다이어그램 기업 환경의 구성과 컴포넌트들 간의 관계를 그림

 

 

 

OSI 7계층

  1. 물리 - 기계적, 전기적 특성. X.21, 리피터, 허브
  2. 데이터 링크 - 흐름 제어, 오류 검출과 회복, HDLC, MAC, 랜카드, 브리지, 스위치
  3. 네트워크 - 경로 설정(Routing), 트래픽 제어, 패킷, X.25, IP, 라우터
  4. 전송 - 다중화, 오류 제어, 흐름 제어, TCP, UDP, 게이트웨이
  5. 세션 - 송수신 측 간의 관련성을 유지, 대화 제어
  6. 표현 - 데이터 암호화, 데이터 압축, 형식 변환
  7. 응용 - 파일 전송, 전자 사서함(메일), 정보 교환, 가상 터미널

★ 데이터 링크는 노드 사이의 흐름과 오류 제어.

★ 전송은 단말기 사이의 흐름과 오류 제어.

Layer 1 : 물리 계층(Physical layer)

  • 물리적인 장치의 전기적, 전자적 연결에 대한 명세
  • 디지털 데이터를 아날로그적인 전기적 신호로 변환하여 물리적인 전송이 가능하게 한다.
  • 주소 개념이 없으며 물리적으로 연결된 노드간에 신호를 주고 받는다.
- 단위(PDU) : 비트(Bit)
- 주요 프로토콜 :X.21,RS-232 등
- 주요 장비 :허브(HUB),리피터(Repeater)네트워크 카드(NIC : Network Interface Card) 등

Layer 2: 데이터링크 계층(Data link layer)

  • 인접한 노드간의 신뢰성 있는 데이터(단위 : 프레임) 전송을 제어(Nod-To-Nod Delivery)
  • 네트워크 카드의 MAC주소를 통해 목적지를 찾아간다.
  • 신뢰성 있는 전송을 위해 흐름제어(Flow Control), 오류제어(Error Control), 회선제어(Line Control)을 수행한다.
  • 논리링크제어계층, 매체접근제어계층이라는 두 개의 부계층으로 나뉜다.
- 단위(PDU) : 프레임(Frame)
- 주요 프로토콜 :HDLC,X.25,Ethernet,TokenRing,DFFI,FrameRelay 등
- 주요 장비 :브리지(Bridge),L2 Switch 등

Layer 3: 네트워크 계층(Network layer)

  • 종단간 전송을 위한 경로 설정을 담당한다. (End-To-End 혹은 Host-To-Host Delivery)
  • 호스트로 도달하기 위한 최적의 경로를 라우팅 알고리즘을 통해 선택하고 제어한다.
  • 종단간 전송을 위한 주소로 IP주소를 사용한다.
- 단위(PDU) : 패킷(Packet)
- 주요 프로토콜 - IP, ARP, ICMP, IGMP, RIP, RIP v2, OSPF, IGRP, EIGRP, BGP 등
- 주요 장비 :라우터(Router),L3 Switch

Layer 4: 전송 계층(Transport layer)

  • 종단간 신뢰성 있는 데이터 전송을 담당한다. (End-To-End Reliable Delivery)
  • 종단(Host)의 구체적인 목적지(Process)까지 데이터가 도달할 수 있도록 한다. (Process-To-Process Communication)
  • Process를 특정하기 위한 주소로 Port Number를 이용한다.
  • 신뢰성 있는 데이터 전송을 위해 분할과 재조합, 연결제어, 흐름제어, 오류제어, 혼잡제어를 수행한다.
- 단위(PDU) : 세그먼트(Segment)
- 주요 프로토콜 :TCP,UDP
- 주요 장비 : L4 Switch

Layer 5: 세션 계층(Session layer)

  • 응용 프로그램간의 논리적인 연결(세션) 생성 및 제어를 담당한다.
- 단위(PDU) : 데이터(Data) 또는 메세지(Message)
- 주요 프로토콜 : 해당사항 없음
- 주요 장비 : 해당사항 없음

Layer 6: 표현 계층(Presentation layer)

  • 데이터 표현방식, 상이한 부호체계 간의 변화에 대해 규정한다.
  • 인코딩/디코딩, 압축/해제, 암호화/복호화 등의 역할을 수행한다.
- 단위(PDU) : 데이터(Data)
- 주요 프로토콜 : 해당사항 없음
- 주요 장비 : 해당사항 없음

Layer 7: 응용 계층(Application layer)

- 단위(PDU) : 데이터(Data)
- 주요 프로토콜 : TELNET, FTP, SMTP, HTTP 등
- 주요 장비 : 해당사항 없음

 

객체지향 연관성

연관화(association)

is-member-of

  • 공통된 의미(semantic)를 서로 연관된 집단으로 표현하는 방법으로 링크(link)와 그 의미가 유사
  • 객체들의 물리적, 또는 개념적 연결을 두 개 이상의 객체와 클래스로 표현
  • 즉, 연관화는 관련되지 않은 클래스들간의 의미적 연결

분류화(classification)

is-instance-of

  • 공통된 속성에 의하여 정의된 객체 및 클래스에 있어 구성원들의 인스턴스
  • 즉, 분류화는 동일한 형의 특성을 갖는 객체들이 모여 클래스를 구성하는 것
    • 여기서, 클래스는 객체들의 본질에 대한 추상화

집단화(aggregation)

is-part-of

  • 서로 관련 있는 여러 개의 객체를 묶어 한 개의 상위 객체 생성
  • 여러 개의 속성을 묶어 사용자 정의형의 엔티티를 만드는 수단으로 사용
  • 한 객체에서 하나 이상의 객체는 사용자 표정의 형이 될 때 복합 객체(composite object)
    • 즉, 복합 객체의 종속 성분을 모델링하기 위해 사용되며, 이들 복합 성분 클래스 관계를 통해 복합 속성 계층(composite attribute hierarchy)을 형성

일반화(generalization)

is-a

  • 일반화는 객체들에 있어 공통적인 성질들을 상위 객체로 정의하고, 특수화(specialization)된 객체들을 하위의 부분형(subtype) 객체로 정의

특수화(specialization)

is-a

  • 일반화와 개념과 같으나, 클래스를 보는 시점에 있어 상위의 클래스에서 하위의 클래스를 보는 관점(특수화의 역은 일반화)
  • 하위 개념으로 내려 갈수록 인스턴스는 특수화
  • 클래스로 모델화되는 실세계 객체들을 겹치지 않는 서브 클래스로 나누거나 상이한 실세계 상황으로 나누기 위해 사용

관계성의 종류 의미 특성

is-member-of 연관화 링크 개념과 유사
is-instance-of 분류화 객체 및 클래스의 인스턴스를 표현
is-part-of 집단화 상향식, 단일 상속, 복합 객체(composite object) 표현에 유용
is-a 특수화, 일반화 하향식, 다중 상속, 복잡한 객체 표현에 유용

GOF디자인패턴

생성 패턴(Creational Pattern)

팩토리 메소드(Factory Method)

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

추상 팩토리(Abstract Factory)

  • 구체적인 클래스에 의존하지 않고, 서로 연관·의존하는 객체들의 그룹으로 생성하여 추상적으로 표현
  • 연관된 서브 클래스를 묶어 한 번에 교체 가능

빌더(Builder)

  • 건축가가 블록을 조립하는 모습
  • 분리된 인스턴스(객체)를 건축하듯이 조합하여 객체를 생성
  • 동일한 객체 생성에서도 다른 결과 나올 수 있음

프로토타입(Prototype)

  • 원본 객체를 복제하는 방법으로 객체를 생성하는 패턴
  • 비용이 큰 경우 주로 이용

싱글톤(Singleton)

  • 객체를 어디서든 참조할 수 있지만, 여러 프로세스가 동시에 참조하는 것은 불가능
  • 인스턴스가 하나뿐이기 때문에 불필요한 메모리 낭비를 최소화 할 수 있음

구조 패턴(Structural Pattern)

어댑터(Adaptor)

  • 호환성을 맞춰주는 변압기
  • 클래스들의 호환성이 맞도록 변환해주는 패턴
  • 기존의 클래스를 이용하고 싶은데 인터페이스가 일치하지 않을 때 사용

브리지(Bridge)

  • 두 섬을 연결하는 다리
  • 서로가 독립적으로 확장할 수 있도록 구성한 패턴
  • 기능과 구현을 별도의 클래스에서 구현

컴포지트(Composite)

  • 폴더와 파일을 합성한 것
  • 복합 객체와 단일 객체를 구분 없이 다루고자 할 때 사용
  • 복합 객체 안에 복합 객체가 포함되는 구조 구현 가능

데코레이터(Decorator)

  • 온갖 것으로 장식된 눈사람
  • 객체 간의 결합으로 기능을 확장할 수 있음
  • 부가적인 기능 추가를 위해 다른 객체들을 덧붙이는 방식

퍼싸드(Facade)

  • 리모컨만으로 복잡한 명령을 수행하는 것
  • 상위에 인터페이스를 구성하여 서브 클래스들의 기능을 수행할 수 있음
  • 서브 클래스들 사이의 통합 인터페이스를 제공하는 Wrapper 객체 필요

플라이웨이트(Flyweight)

  • 부담을 가볍게 하기 위해 물품 공유
  • 인스턴스를 가능한 한 공유해서 사용하여 메모리를 절약
  • 다수의 유사 객체를 생성하거나 조작할 때 유용함

프록시(Proxy)

  • 하기 어려운 업무를 대리로 해주는 사람
  • 접근이 어려운 객체와 여기 접근하려는 객체 사이의 인터페이스 역할
  • 네트워크 연결, 메모리의 대용량 객체로의 접근에 이용

행위 패턴(Behavioral Pattern)

책임 연쇄(Chain of Responsibility)

  • 연속해서 나눠받는 물레방아
  • 한 객체가 처리하지 못하면 다음 객체로 넘어가는 패턴
  • 요청이 해결될 때까지 고리를 따라 책임이 넘어감

커맨드(Command)

  • 명령어를 하나로 합쳐둔 것
  • 요청을 캡슐화하여 재이용하거나 취소할 수 있도록 저장하거나 로그로 남김
  • 추상클래스와 구체클래스로 나뉨

인터프리터(Interpreter)

  • 언어 번역가
  • 언어에 문법 표현을 정의함
  • SQL이나 통신 프로토콜에 사용

반복자(Iterator)

  • 같은 명령의 반복
  • 접근이 잦은 객체에 대해 동일한 인터페이스를 사용하도록 함
  • 내부 표현 방법의 노출 없이 순차적인 접근 가능

중재자(Mediator)

  • 매매를 중개해주는 중개사이트
  • 객체들 간의 복잡한 상호작용을 캡슐화하여 객체로 정의
  • 객체 사이의 결합도를 감소시킴

메멘토(Memento)

  • 기억 속의 그 때로 돌아감.
  • 객체를 특정 시점의 상태로 돌릴 수 있는 기능
  • ctrl+z 와 같은 기능 개발시 사용

옵서버(Observer)

  • 변화를 지켜보고 알려주는 것
  • 한 객체의 상태 변화시 상속되어 있는 다른 객체들에게 알림
  • 시스템간에 이벤트를 생성하고 수신할 때 사용

상태(State)

  • 상태에 따라 다른 방법을 사용함
  • 객체의 상태에 따라 동일한 동작을 다르게 처리해야 할 때 사용
  • 객체 상태를 캡슐화하고 이를 참조함

전략(Strategy)

  • 여러 전략을 정하고 필요할 때 선택하여 씀
  • 동일한 계열의 알고리즘을 캡슐화하여 상호 교환할 수 있게 정의함
  • 원하는 알고리즘을 선택하여 사용하며 클라이언트에 영향 없이 알고리즘 변경 가능

템플릿 메소드(Template Method)

  • 방법들을 큰 틀로 묶는 것
  • 상위 클래스에서 골격 정의, 하위 클래스에서 세부 처리를 구체화
  • 유사한 서브 클래스의 공통된 내용을 상위 클래스에서 정의(유지보수를 용이하게 함)

방문자(Visitor)

  • 책을 만들기 위해 저자, 편집자를 번갈아가며 방문
  • 각 클래스들의 데이터 구조에서 처리 기능을 별도의 클래스로 구성
  • 분리된 기능은 각 클래스를 방문하여 수행
반응형

댓글