1.소프트웨어 설계

 1.3 애플리케이션 설계

  1.3.3 객체지향 설계


- 객체지향 설계

 

1. 객체지향(OOP)

 

1.1 객체지향(Object Orient)

 

1. 객체지향의 개념

실 세계의 개체를 속성과 메소드가 결합된 형태의 객체로 표현하는 개념으로 구현대상을 하나의 객체로 보고 객체와 객체들 간의 관계를 모델링하는 방법을 의미한다.

2. 객체지향의 등장배경

개발측면에서 소프트웨어 위기 해결을 위한 대안과 생산성 저하에 따른 재사용성, 확장성의 필요에 의해 등장하였다.

사용측면에서 컴퓨팅 환경에 대한 보다 많은 기능, 단순성, 사용편의성 요구가 증대되었다.

 

1.2 객체지향 프로그래밍(Object Oriented Programming)

 

1. 객체지향 프로그래밍의 개념

컴퓨터 프로그래밍의 패러다임 중 하나로 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러 개의 독립된 단위, 즉 "객체"들의 모임으로 파악하고자 하는 것이다. 각각의 객체는 메시지를 주고받고, 데이터를 처리할 수 있다.

프로그램을 유연하고 변경이 용이하게 만들기 때문에 대규모 소프트웨어 개발에 많이 사용된다. 또한 프로그래밍을 더 배우기 쉽게하고 소프트웨어 개발과 보수를 간편하게하며 보다 직관적인 분석을 가능하게 하는 장점이 있다.

 

2. 객체지향의 구성요소

구분 내용
클래스 같은 종류의 집단에 속하는 속성과 행위를 정의한것이다.
객체지향 프로그램의 기본적인 사용자 정의 데이터형이다.
객체 클래스의 인스턴스(실제로 메모리에 할당된 것)이다.
자신 고유의 데이터를 가지며 클래스에서 정의한 행위를 수행한다.
속성 객체의 데이터이다.
메소드 객체의 행위(함수,메서드) 이다.
클래스로부터 생성된 객체를 사용하는 방법이다.
메시지 객체 간의 통신을 말한다.

3.객체지향 기법

특징 상세내용
캡슐화 속성(데이터)과 메소드(연산)을 하나로 묶어서 객체로 구성한다.
Readability 향상 : 유지보수가 용이하다.
재사용성이 높은 SW 개발이 가능하다.
정보은닉으로 내부자료의 일관성이 유지된다.
객체간 인터페이스를 이용, 종속성을 최소화한다.
추상화 공통 성질을 추출하여 수퍼클래스로 구성한다.
객체 중심의 안정된 모델을 구축한다.
현실 세계를 자연스럽게 표현한다.
분석의 초점이 명확해진다.
다형성 동일한 이름의 여러 오퍼레이션을 다른 사양으로 정의 가능하다.
오버로딩 : 매개변수의 수 또는 타입을 달리하여 구분한다.
오버라이딩 : 부모클래스의 메소드를 재정의 한다.
정보은닉 캡슐화된 항목을 다른 객체로부터 숨긴다.
메시지 전달에 의해 다른 클래스 내의 메소드가 호출된다.
상속성 부모클래스의 속성과 메소드를 상속받아 사용한다.
부모와 자식 클래스 간의 관계가 수퍼클래스와 서브클래스로 유지된다.
부모클래스는 추상적이며, 자식클래스는 구체적 성질을 가진다.

4.다형성과 상속성 비교

구분 다형성 상속성
개념 동일 인터페이스에 대해 서로 다른 처리 방식으로 구현 가능한 특성이다. 부모 클래스의 메소드,속성을 물려 받는 특성이다.
특징 통적 Binding 정적Binding
구조 수직/수평적 구조 수직적구조
장점 명령의 단순화, 메모리 절약, 높은 응집도 실현이 가능하다. 재사용성 향상, 중복제거, 유지보수성이 향상된다.
단점 코드 중복 재발 가능성 과도한 상속의 결합도 상승 요인

5.다형성의 오버로딩과 오버라이딩

구분 오버라이딩 오버로딩
개념 상속관계에서 상위 클래스의 메소드를 하위클래스에서 재정의한다. 하나의 클래스 내에서 같은 이름으로 여러 개의 메소드를 정의한다.
메소드 명 상속관계 내 동일 특정클래스 내 동일
매개변수 개수, 타입 반드시 동일 개수 또는 타입이 다름
리턴 타입 기본적으로 동일 상관없음
접근제한 범위가 같거나 넓어야함 상관없음

 

1.3 객체지향 설계원칙

 

1. 단일 책임의 원칙

객체는 하나의 책임만 맡아야 한다.(낮은 결합도, 높은 응집도 추구)

 

2. 개방 폐쇄 원칙

소프트웨어 Entity는 확장에는 열려있고 수정 시에는 닫혀있어야 한다.

 

3. 리스코프 치환의 원칙

하위 클래스 및 타입들은 상위 타입들이 사용되는 곳에 대체될 수 있어야 하는 설계 원칙이다.

 

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

하나의 일반적인 인터페이스보다 구체적인 여러 개의 인터페이스가 낫다.

 

5.의존성 뒤집기의 원칙

추상화된 것에 의존하게 만들고 구체클래스에 의존하도록 만들지 않도록 한다.

 

2. 디자인 패턴(Design Pattern)

 

2.1 디자인 패턴의 개념

디자인 패턴은 반복적으로 나타나는 문제들을 해결해 온 전문다들의 경험을 모아서 정리한 일관된 솔루션으로 설계의 재사용을 통해 생산성 향상을 위한 기법이라 할 수 있다.

소프트웨어 프로그래머들이 유용하다고 생각되는 객체들간의 일반적인 상호작용 방법들을 모은 목록이라 할 수 있다.

디자인 패턴은GoF(Gang of Four)의 븐류가 많이 활용되고 있으며 GoF는 에릭 감마, 리처드 헬름, 랄프 존슨, 존 블리스데스로 알려져 있다.

 

2.2 디자인 패턴의 구성

1. 패턴이름

설계의 의도를 표현하며 한 두단어로 설계문제와 해법을 서술한다.

2. 문제

해결해야할 문제와 그 배경을 설명하며 언제 패턴을 사용하는 지를 서술한다.

3. 해법

설계의 구성 요소와 그 요소들 간의 관계, 책임, 협력관계를 서술한다.

4. 결과

디자인 패턴을 적용해서 얻는 결과와 장점/단점을 서술한다.

 

2.3 GoF 디자인 패턴의 분류

1. 패턴이 수행하는 목적에 따른 분류

2. 패턴이 다루는 영역에 따른 분류

2.4 MVC(Model View Controller)패턴

 

1. MVC패턴의 개념

소프트웨어 공학에서 사용되는 소프트웨어 디자인 패턴으로 사용자 인터페이스로부터 비즈니스 로직을 분리하여 애플리케이션의 시각적 요소나 그 이면에서 실행되는 비즈니스 로직을 서로 영향없이 쉽게 고칠 수 있는 애플리케이션을 만들 수 있다.

MVC에서 모델은 애플리케이션의 정보를 나타내며, 뷰는 텍스트, 체크박스 항목 등과 같은 사용자 인터페이스 요소를 나타내고, 컨트롤러는 데이터와 비즈니스 로직 사이의 상호동작을 관리한다.

 

2. MVC패턴의 구성

컨트롤러는 모델에 명령을 보냄으로써 모델의 상태를 변경할 수 있다. 또, 컨트롤러가 관련된 뷰에 명령을 보냄으로써 모델의 표시 방법을 바꿀 수 있다.

모델은 모델의 상태에 변화가 있을 때 컨트롤러와 뷰에 이를 통보한다. 이와 같은 통보를 통해서 뷰는 최신의 결과를 보여줄 수 있고, 컨트롤러는 모델의 변화에 따른 적용 가능한 명령을 추가,제거,수정할 수 있다. 어떤 MVC 구현에서는 통보 대신 뷰나 컨트롤러가 직접 모델의 상태를 읽어 오기도 한다.

뷰는 사용자가 볼 결과물을 생성하기 위해 모델로부터 정보를 얻어온다.


오답풀이

 

객체지향 모형에서 기능 모형의 설계 순서로 가장 옳은것은?

a. 기능의 내용을 상세히 기술

b. 자료흐름도 작성

c. 입출력 결정

d. 제약사항을 결정하고 최소화

정답 : c-b-a-d

 

객체지향 분석 방법론 중 E-R다이어그램을 사용하여 객체의 행위를 모델링하며, 객체식별, 구조식별, 주제정의, 속성과 인스턴스 정의, 연산과 메시지 연결 정의 등의 과정으로 구성되는것은?

1.Coad와 Yourdon방법 (정답)

2.Booch 방법

3.Jacobson 방법

4.Wifs-Brock 방법

 

Booch 방법 

미시적 개발 프로세스와 거시적 개발 프로세스 모두 사용하는 분석 방법이다. 클래스와 객체를 분석, 식별하고 클래스의 속성과 연산을 정의한다.

 

Jacobson 방법

Use Case를 강조하여 사용하는 분석 방법이다. 

 

Wifs-Brock

분석과 설계의 구분이 없으며 고객 명세서를 평가하여 설계 작업까지 연속적으로 수행하는 기법이다.

 

 

'자격증 > 정보처리기사' 카테고리의 다른 글

정보처리기사 9일차  (0) 2021.01.04
정보처리기사 8일차  (0) 2020.12.31
정보처리기사 6일차  (0) 2020.12.29
정보처리기사 5일차  (0) 2020.12.28
정보처리기사 4일차  (0) 2020.12.25

+ Recent posts