티스토리 뷰

728x90
반응형

2022년 정보처리기사 필기

(수제비 2021년 필기책 보고 공부하며 요약한 내용입니다.)

http://www.yes24.com/Product/Goods/96051171

 

1. 소프트웨어 설계

Cp3. 애플리케이션 설계2

 

 


 

 

1. 객체지향

: 실세계의 개체를 속성과 메서드가 결합한 형태의 객체로 표현하는 기법

객체지향 구성요소 설명
클래스 데이터를 추상화하는 단위
하나 이상의 유사한 객체들을 묶어서 하나의 공통된 특성을 표현
속성은 변수의 형태로, 행위는 메서드형태로 선언
객체 객체 행위는 클래스에 정의된 행위에 대한 정의를 공유함으로써 메모리를 경제적으로 사용
객체마다 각 상태와 식별성을 가짐
메서드 클래스로부터 생성된 객체를 사용하는 방법
객체가 메시지를 받아 실행할 객체의 구체적 연산
함수, 프로시저에 해당하는 연산 기능
메시지 객체 간 상호작용을 위한 수단
객체 간 상호작용은 메시지를 통해 이루어짐
메시지는 객체에서 객체로 전달됨
인스턴스 클래스에 속한 각 객체들
실제로 메모리상에 할당
속성 한 클래스 내에 속한 객체들이 가지고 있는 데이터값들을 단위별로 정의
성질, 분류, 식별, 수량, 현재상태 등에 대한 표현 값

 

1-1. 객체지향 기법

1) 캡슐화

: 서로 관련성 많은 데이터와 함수들을 묶음 처리하는 기법

: 결합도가 낮아지고 재사용이 용이

: 인터페이스가 단순화됨

: 정보은닉

: 변경 발생 시 오류 파급 효과가 적음

2) 상속성

: 상위클래스 속성과 메소드를 하위클래스에서 재정의 없이 물려받아 사용하는 기법

3) 다형성

: 한 메시지에 대해 각 객체가 가진 고유방법으로 응답함.

: 오버로딩, 오버라이딩

4) 추상화

: 공통 성질을 추출해 추상 클래스를 설정

: 기능추상화, 자료추상화, 제어 추상화

5) 정보은닉

: 코드 내부 데이터와 메소드를 숨기고 공개 인터페이스를 통해서만 접근이 가능하도록 하는 코드보안 기술

: 고려되지 않은 영향(side-effect)들을 최소화

6) 관계성

: 두개 이상의 엔터티 형에서 데이터를 참조하는 관계를 나타내는 기법

: 종류로는 연관화, 분류화, 집단화, 일반화, 특수화가 있음

관계성 종류 설명
연관화 is-member-of 관계
클래스와 객체의 참조 및 이용관계
같은계층에 속하는 클래스들 사이의 상호의존성을 보여주는 비계층적 관계성을 나타냄
집단화 is part of 관계, part-whole 관계
서로관련있는 객체를 묶어 한 상위 객체를 만드는 특징
상위클래스 성질이 하위클래스로 상속되지 않음
분류화 is-instance-of 관계
공통속성에 의해 정의된 객체 구성원들의 인스턴스
일반화 is-a 관계
클래스간 개념적인 포함관계
상위 클래스 특성을 하위 클래스가 상속받음
특수화 is-a 관계
상위클래스 특성을 상속받으며 하위클래스에서 나름대로 수정을 가하고 자신의 고유특성을 갖는 관계

 

1-2. 객체지향 설계 원칙(SOLID)

1) 단일 책임의 원칙

: 한 클래스는 한 목적을 위해 생성되며 , 클래스가 제공하는 서비스는 한 책임을 수행하는데 집중되어 있어야 함.

: 객체지향 프로그래밍의 5원칙 중 나머지 5원칙의 기초 원칙

2) 개방 폐쇄 원칙

: 소프트웨어 구성요소(컴포넌트, 클래스, 모듈, 함수)는 확장에는 열려있고, 변경에는 닫혀있어야 하는 원칙

3) 리스코프 치환의 원칙

: 서브타입(상속받은 하위 클래스)은 어디서나 자신의 기반 타입(상위클래스)으로 부터 교체할 수 있어야 한다는 원칙

4) 인터페이스 분리의 원칙

: 클래스는 자신이 사용하지 않는 인터페이스는 구현하지 말아야 한다는 원칙

: 클라이언트가 사용하지 않는 인터페이스 때문에 영향을 받아서는 안된다는 원칙

5) 의존성 역전의 원칙

: 실제 사용 관계는 바뀌지 않으며, 추상을 매개로 메시지를 주고받음으로써 관계를 최대한 느슨하게 만드는 원칙

 

1-3. 객체지향 방법론의 종류

종류 만든이 설명 특징
OOSE(object oriented software enginnering) 야콥슨(jacobson) 유스케이스에 의한 접근방법으로 유스케이스를 모든 모델의 근간으로 활용 분석, 설게, 구현 단계로 구성
기능적 요구사항 중심의 시스템
OMT(object modeling technology) 럼바우(rumbaugh) 객체지향 분석, 시스템설계, 오브젝트 설계 및 구현의 4단계로 구성
1) 객체모델링
: 시스템 정적구조 표현
2) 동적모델링
: 객체의 제어흐름/상호 반응 표현
3) 기능모델링
: 데이터 값의 변화 과정 표현
복잡한 대형 프로젝트에 유용
모델링 편리 및 상요자와 의사소통 편리

OOD(object oriented design) 부치(booch) 설계 부분만 존재
설계 문서화를 강조해 다이어그램 중심으로 개발하는 방법론
미시적(micro) 개발 프로세스와 거시적(macro) 개발 프로세스를 모두 사용하는 분석 방법
분석과 설계 분리 불가능
분석하는 데 이용된 객체 모델의 설계 시 적용
Coad와 yourdon 방법론   E-R 다이어그램을 사용해 객체 행위를 모델링하며, 객체식별, 구조식별, 주체 정의, 속성 및 관계 정의, 서비스 정의 등의 과정으로 구성되는 객체지향 분석 방법  
wirfs-brock 방법론   분석과 설계 간 구분이 없고 고객 명세서를 평가해서 설계 작업까지 연속적으로 수행하는 분석 방법  

 

2. 디자인 패턴

: 소프트웨어공학의 소프트웨어 설계에서 공통적으로 발생하는 문제에 대해 자주 쓰이는 설계방법을 정리한 패턴

; 개발 효율성과 유지보수성, 운용성 등의 품질이 높아지며, 최적화에 도움이 됨

 

2-1. 디자인패턴 구성요소

1) 패턴이름: 디자인 패턴 이름과 유형

2) 문제 및 배경: 패턴이 사용되는 분야, 배경, 문제

3) 솔루션: 디자인 패턴을 이루는 요소들, 관계, 협동 과정

4) 사례: 간단한 적용 사례

5) 결과: 디자인 패턴 사용 후 얻게 되는 이점, 영향

6) 샘플코드: 적용된 코드

 

2-2. 디자인패턴 유형

구분 디자인패턴 유형 설명
목적 생성 객체 인스턴스 생성에 관여, 클래스 정의와 객체 생성 방식을 구조화, 캡슐화를 수행하는 패턴
구조 더 큰 구조 형성 목적으로 클래스나 객체의 조합을 다루는 패턴
행위 클래스나 객체들이 상호작용하는 방법과 역할 분담을 다루는 패턴
범위 클래스 클래스간 관련성(상속관계를 다루는 패턴)
컴파일 타임에 정적으로 결정
객체 객체 간 관련성을 다루는 패턴
런타임에 동적으로 결정

 

2-3. 디자인 패턴 종류

구분 패턴 설명
생성
패턴
builder 생산단계를 캡슐화하여 구축공정을 동일하게 이용하도록 하는 패턴
prototype 복사하여 새 개체를 생성할 수 있도록 하는 패턴
factory method 객체 생성을 위한 인터페이스를 정의하여 어떤 클래스가 인스턴스화 될 것인지는 서브클래스가 결정하도록 하는 패턴
abstract factory 생성군들을 하나에 모아놓고 팩토리 중에서 선택하게 하는 패턴
singleton 유일한 하나의 인스턴스를 보장하도록 하는 패턴
구조
패턴
bridge 추상과 구현을 분리하여 결합도를 낮춘 패턴
decorator 소스를 변경하지 않고 기능을 확장하도록 하는 패턴
facade 하나의 인터페이스를 통해 느슨한 결합을 제공하는 패턴
flyweight 대량의 작은 객체들을 공유하는 패턴
proxy 대리인이 대신 그 일을 처리하는 패턴
composite 개별객체와 복합 객체를 클라이언트에서 동일하게 사용하도록 하는 패턴
adapter 인터페이스로 인해 함께 사용하지 못하는 클래스를 함께 사용하도록하는 패턴
행위
패턴
interpreter 언어 규칙 클래스를 이용
template method 알고리즘 골격의 구조를 정의
chain of responsibility 객체들끼리 연결 고리를 만들어 내부적으로 전달
command 요청자체를 캡슐화하여 파라미터로 넘기는 패턴
iterator 내부 표현은 보여주지 않고 순회하는 패턴
mediator 객체 간 상호작용을 캡슐화한 패턴
memento 상태 값을 미리 저장해두었다가 복구하는 패턴
observer 상태가 변할 때 의존자들에게 알리고, 자동 업데이트 하는 패턴
state 객체 내부 상태에 따라서 행위를 변경하는 패턴
strategy 다양한 알고리즘을 캡슐화하여 알고리즘 대체가 가능하도록 한 패턴
visitor 오퍼레이션을 별도의 클래스에 새롭게 정의한 패턴

 

2-4. 디자인 패턴의 장단점

1) 장점

: 요구사항 변경에 따른 소스 코드 변경을 최소화할 수 있게 해줌

: 설계 변경 요청에 대한 유연한 대처가 가능

: 범용적인 코딩 스타일 적용 가능

: 개발자 간의 원활한 의사소통 가능

: 재사용을 통한 개발 시간 단축 가능

: 소프트웨어 구조 파악 용이

: 객체지향 설계 및 구현의 생산성을 높이는 데 적합

 

2) 단점

: 객체지향 설계/구현 위주로 사용

: 초기 투자 비용의 부담

 

728x90
반응형
댓글