본문 바로가기

CS 정리

탑싯_1_소프트웨어 개발_7_객체 지향 설계

1. 객체 지향 분석과 모델링 개념

 객체 지향은 문제영역을 실세계 안에 존재하는 객체의 집합으로 보고 객체들 사이의 상호작용을 나타낸 것

모델링: 대상 시스템의 성능, 동작과정을 표현하는 방식

 

- 모델링의 3가지 관점

 1) 기능 관점: 소프트웨어가 어떠한 기능을 수행하는지의 관점 (입력->출력)

 2) 동적 관점: 소프트웨어 동작과 제어에 초점을 맞춘 관점(상태와 상태변화 요인) 

 3) 정보 관점: 시스템에 사용되는 정보 객체를 찾아 객체들 간의 관계를 규명

 

유즈케이스

고객과 시스템 개발자 사이에 의사소통을 원활히 해주고, 고객의 요구사항을 알기 위한 기법

각 유즈케이스에 대하여 시나리오를 작성한다.

 

정보 모델링

유스케이스를 바탕으로 행위자와 시스템이 주고받는 정보를 찾을 수 있다. UML의 클래스 다이어그램!!

클래스를 식별하고 클래스 간의 연관성을 나타내고 그 속성을 알아낸다.

 

동적 모델링

시스템을 구성하는 객체의 상태나 동작의 변화 혹은 객체들 사이의 상호적용을 찾는 과정

시퀀스 다이어그램을 사용

 

기능 모델링

시퀀스 다이어그램에서 도출한 사건을 수행하기 위한 액티비티 다이어그램

 

2. 객체 지향 설계와 원리

1. 객체와 클래스

 유사한 객체들의 모임. 실세계의 사물, 객체를 나타냄

 각 객체는 속성의 모임에 의해 기술되고 속성값들에 의하여 다른 객체와 구별된다.

 

2. 캡슐화

 이해하기 쉽고 수정하기 쉬운 소프트웨어를 만드는 것.

 독립성을 갖고 있는 모듈들을 설계하는 것이 중요하다.

 

3. 상속

 클래스들의 공통점이 있을 때 유사성을 모아 하나의 새로운 클래스를 정의하는 것. 상위 클래스/ 하위 클래스

 

4. 다형성

 동일한 이름의 메소드도 클래스에 따라 다르게 동작하는 것. 하나의 함수 이름이나 연산자가 여러 목적으로 사용할 수 있게 해준다.

오버라이딩: 상위 클래스에서 정의된 메소드를 하위클래스에서 재정의하는 것

오버로딩: 같은 이름의 메소드에서 매개변수 타입과 갯수에 따라 서로 다른 메소드로 가는 것

 

3. 정적 모델링과 동적 모델링

1. 정적 모델링

 시간의 개념이 개입되지 않은 객체의 정적인 정보만 밝힌다.

 데이터 베이스에서 기본적인 객체를 찾아 객체의 속성, 객체들 사이의 연관성을 나타내는 것.

 

2. 동적 모델링

 정적 모델링에 더해서 객체들 사이의 상호 작용을 통해 클래스의 오퍼레이션을 도출

 메시지에 의해 요청된 기능을 수행하기 위해 정의. UML의 시퀀스 다이어그램.

 시간의 흐름에 따라 객체들이 주고받는 메세지를 강조.

 

4. 디자인 패턴

생성 목적에 따라 나눈 기준

 - 생성패턴: 객체의 생성과정에서 관여

 - 구조패턴: 클래스 객체의 합성에 관한 패턴

 - 행위패턴: 클래스나 객체들이 상호작용하는 방법이나 책임을 분산

 

범위에 따라 나눈 기준

 - 클래스패턴

 - 객체패턴

 

 

문제

Q1. 모델링의 3가지 관점이 아닌것은?

 

 1) 기능 관점

 2) 동적 관점 

 3) 유저 관점

 4) 정보 관점

 

Q2. 객체 지향 설계와 원리에 대한 내용으로 옳지 않은 것은?

1) 상속은 클래스들의 공통점이 있을 때 유사성을 모아 하나의 새로운 클래스를 정의하는 것이고 상위 클래스/ 하위 클래스가 있다

2) 오버로딩을 통해 상위 클래스에서 정의된 메소드를 하위클래스에서 재정의한 것이다

3) 다형성을 사용하면 동일한 이름의 메소드도 클래스에 따라 다르게 동작하는 것이다.

4) 캡슐화를 사용하면 이해하기 쉽고 수정하기 쉬운 소프트웨어를 만들어 준다