자격증/정보처리산업기사

Part 01. 정보시스템 기반 기술 | Chapter 06. 객체지향 기술

devvnn 2022. 2. 4. 20:59
Section 01. 객체지향 기술의 개념
1. 객체 지향의 기본 요소 중에서 유사한 객체를 묶어 하나의 공통된 특성을 표현하는 요소?
- Class

# Ingeritance(상속) : 상위 클래스의 모든 기능을 하위 클래스에서 사용할 수 있음
# Instance(인스턴스) : 클래스에서 정의된 객체
# Message(메세지) : 메시지를 통하여 객체 간의 상호 작용을 함(객체간의 통신을 의미)

 

2. 객체 지향 기법에서 연산이 같더라도 클래스가 다르면 전혀 다르게 수행되는 연산의 성질?
- 다형성(오버라이딩/오버로딩)

# 오버라이딩 : 서로 다른 클래스에서 동일한 메소드명을 갖는 메소드가 클래스마다 다르면 수행되는 연산 기능
# 오버로딩 : 같은 클래스에서 동일한 메소드명을 갖는 메소드가 전혀 다르게 수행되는 연산 기능

 

3. 객체 지향 프로그램에서 데이터를 추상화하는 단위?
- 클래스

 

4. 객체지향에서 정보 은닉과 가장 밀접한 관계가 있는 것?
- Encapsulation(캡슐화)

 

5. 객체지향 소프트웨어 공학에서 하나 이상의 유사한 객체들을 묶어서 하나의 공통된 특성을 표현한 것?
- 클래스

# 트랜잭션 : 데이터베이스의 현재 상태를 하나의 일관된 상태에서 또 다른 일관된 상태로 변환시키는 논리적인 연산의 집합, 일 처리 단위를 의미
# 시퀀스(다이어그램) : 객체 간에 주고 받는 메시지의 순서를 시간의 흐름에 따라 보여줌
# 서브 루틴 : 함수, 서브 프로그램, 메소드를 의미

 

Section 02. 객체지향 개발 순서
1. 객체지향 개발 순서
- 계획 -> 분석 -> 설계 -> 구현 -> 테스트 및 검증

 

2. 람바우의 객체지향 분석 절차
- 객체 모형 -> 동적 모형 -> 기능 모형

 

3. Coad와 Yourdon 방법
- 객체지향 분석 방법론 중 E-R 다이어그램을 사용하여 객체의 행위를 모델링하며, 객체 식별, 구조 식별, 주체 정의, 속성 및 관계 정의, 서비스 정의 등의 과정으로 구성되는 것

# Booch 방법 : 미시적 개발 프로세스, 거시적 개발 프로세스로 접근
# Jacobson 방법 : 사용자가 제품 또는 시스템과 어떻게 상호작용하는지를 서술한 시나리오로 접근
# Wirfs-Brocks 방법 : 고객 명세의 평가로 시작하여 설계로 끝나는 연속적인 프로세스로 접근

 

4. LSP(Liskov Substitution Principle)
- 객체 지향 설계 원칙 중, 서브 타입(상속받은 하위 클래스)은 어디에서나 자신의 기반 타입(상위 클래스)으로 교체할 수 있어야 함을 의미하는 원칙

# ISP(Interface Segregation Principle) : 인터페이스 분리 원칙, 한 개의 일반적인 인터페이스보다 구체적이고 안전한 여러 개의 인터페이스가 좋다
# DIP(Dependency Inversion Principle) : 의존성 뒤집기의 원칙. 추상화 클래스에 의존하게 함
# SRP(Single Responsibility Principle) : 단일 책임의 원칙, 객체는 하나의 책임만 맡아 처리할 수 있게 해야 함

 

5. 람바우 객체지향 분석 기법에서 동적 모델링에 활용되는 다이어그램은?
-상태도, 상태 다이어그램 활용

 

6. 인터페이스 분리 원칙(객체지향 설계 원칙 중 하나)
- 클라이언트는 자신이 사용하지 않는 메소드와 의존 관계를 맺으면 안됨
- 클라이언트가 사용하지 않는 인터페이스 때문에 영향을 받으면 안됨

# 단일 책임의 원칙 : 객체는 하나의 책임만 맡아 처리할 수 있게 해야함
# 개방 폐쇄 원칙 : 소프트웨어 개체는 확장에는 열고, 수정시에는 닫혀있게 해야 함
# 리스코프 치환의 원칙 : 서브 타입은 어디에서나 자신의 기반 타입으로 교체할 수 있어야 함

 

Section 03. UML 다이어그램
1. UML 모델에서 사용하는 Structural Diagram에 속하는 것?
- Class, Object, Component

# Activity 다이어그램은 행위 다이어그램에 속함(Behavior diagram)

 

2. UML에서 시퀀스 다이어그램의 구성 항목
- 객체, 생명선, 실행, 메시지, 시간

 

3. UML에서 활용되는 다이어그램 중, 시스템의 동작을 표한하는 행위(Behavioral) 다이어그램에 해당하는 것
- 유스케이스 다이어그램, 상태 다이어그램, 활동 다이어그램, 시퀀스 다이어그램, 통신 다이어그램, 상호 작용 다이어그램, 타이밍 다이어그램

# 구조 다이어그램 : 클래스 다이어그램, 객체 다이어그램, 패키지 다이어그램, 컴포넌트 다이어그램, 복합 구조 다이어그램, 배치 다이어그램

 

4. UML의 기본 구성 요소
- Things, Relationship, Diagram

 

Section 04. 디자인 패턴
1. 디자인 패턴의 정의
- 유사한 문제를 해결하기 위해 설계들을 분류하고 각 문제 유형별로 가장 적합한 설계를 일반화하여 체계적으로 정리해놓은 것으로 소프트웨어 개발에서 효율성과 재사용성을 높일 수 있음

 

2. GoF(Gang of Four)의 디자인 패턴에서 행위 패턴에 속하는 것
- Chain of Responsibility/Command/Interpreter/Iterator/Mdiator/Memento/Observer/State/Strategy/Template Method/Visitor

# 생성 패턴 : Abstract Factory/Factory Method/Builder/Prototype/SingleTone
# 구조 패턴 : Adapter/Bridge/Composite/Decorator/Facade/Flyweight/Proxy

 

3. 객체지향 소프트웨어 설계 시 디자인 패턴을 구성하는 요소
- 패턴의 이름과 구분, 문제 및 배경, 솔루션 사례, 결과, 샘플 코드

 

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

# Visitor 패턴 : 기존 객체의 구조를 수정하지 않고 새로운 기능을 추가할 수 있는 패턴
# Observer 패턴 : 의존적이고 종속된 다른 객체들의 변화를 통지받고 자동으로 갱신해주는 패턴
# Bridge 구조 : 추상과 구현을 분리하여 결합도를 낮춘 패턴

 

예상문제
 1. 객체지향 프로그램 기술 중 소프트웨어 개발 생산성에 가장 영향을 주는 요소 -> 재사용성

클래스로 객체를 정의하여 객체를 생성한다.
객체는 무한히 생성할 수 있으며, 객체 간의 상호 작용을 통해서 소프트웨어는 개발된다
객체를 무한히 생성하는 것은 객체를 재사용하는 기술로 객체의 핵심 기술이다

 

3. 다형성(오버라이딩) : 서로 다른 클래스에서 동일한 메소드명을 갖는 메소드, 클래스마다 다르게 수행되는 연산 기능

 

4. 람바우 기법은 객체지향 분석 기법 중 가장 대표적인 기법으로 객체 모형, 동적 모형, 기능 모형을 생성하여 분석함

 

5. 다형성 vs 상속성
- 상속성은 정적 바인딩을 함
- 다형성은 수평, 수직 구조를 모두 사용
- 다형성은 명령이 단순하고, 응집도가 높음
- 상속성은 재사용성이 좋지만 결합도가 강해진다

 

6.
오버라이딩 : 동일한 메소드명이 다른 클래스에 존재
오버로딩 : 동일한 메소드명이 같은 클래스에 존재(메소드의 파라미터 캐수나 타입이 다름, 파라미터=인수)

 

7. 람바우의 객체지향 분석모델링에서 시스템의 상태가 시간에 따라 어떻게 변화하는지를 나타내는 모델링 -> 동적 모델링

# 객체 모델링 : 객체를 식별, 동적 모델링 : 상태도, 기능 모델링 : 자료 흐름도

 

9. 객체 지향 설계의 원칙 : 단일 책임의 원칙, 개방 폐쇄 원칙, 리스코프 치환의 원칙, 인터페이스 분리의 원칙, 의존성 뒤집기의 원칙

 

10. 클래스들을 이용하여 조직화하고, 관련성있는 객체들을 모으는 다이어그램?
- Sequence 다이어그램

# Component Diagram : 시스템을 구성하는 컴포넌트 사이에 의존관계를 표현 -> 정적 구조인 구조 다이어그램
# Composite Structure Diagram : 컴포넌트나 클래스의 내부 연결 형태를 표현
# Collaboration Diagram : 객체 간에 상호 작용을 관계 형태의 메시지 전달로 표현

 

12. 

# 클래스 다이어그램 : 클래스를 표현
# 컴포넌트 다이어그램 : 컴포넌트를 표현
# 배치 다이어그램 : 객체와 연결 경로를 배치하는 물리적인 컴포넌트를 표현
(구성요소는 노드, 컴포넌트, 연결(connection), 의존관계(dependency))

 

14. 디자인 패턴의 장단점
- 객제지향 개발 위주로만 사용가능
- 초기 비용이 많이 든다
- 개발자들 간의 원활한 의사소통 가능
- 재사용성과 확장성이 좋아 개발 시간을 단축시킬 수 있음

 

15. Observer는 행위 패턴에 속하고 Adaptor, Decorater, Flyweight는 구조 패턴

 

16. 디자인 구조 패턴
# Adapter : 인터페이스가 호환되지 않는 클래스들을 함께 이용할 수 있도록 함
# Bridge : 구현 클래스와 기능 클래스를 연결
# Decorator 패턴 : 객체에 독립적인 기능을 계속해서 추가, 확장할 때 유용
# Flyweight 패턴 : 많은 유사한 객체를 공유해서 비용을 절감할 수 있음