소프트웨어 공학 (software engineering ) 객체지향 설계 문양세 강원대학교 it...

31
소소소소소 소소 (Software Engineering) 소소소소 소소 소소소 소소소소소 IT 소소 소소소소소소소

Upload: anne-tate

Post on 03-Jan-2016

68 views

Category:

Documents


0 download

DESCRIPTION

소프트웨어 공학 (Software Engineering ) 객체지향 설계 문양세 강원대학교 IT 대학 컴퓨터과학전공. 학습 목표. 객체지향 분석과 설계 객체지향 개념 UML 2.0 다이어그램 정적 모델링 , 동적 모델링 , 디자인 패턴 ( 간략히 설명 ). 객체지향 기술. 절차적인 방법은 조그만 변화에도 영향이 큼  최근에는 객체지향 설계 , 언어가 매우 일반화된 추세임 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 소프트웨어 공학  (Software Engineering ) 객체지향 설계 문양세 강원대학교  IT 대학 컴퓨터과학전공

소프트웨어 공학 (Software Engineer-ing)

객체지향 설계

문양세강원대학교 IT 대학 컴퓨터과학전공

Page 2: 소프트웨어 공학  (Software Engineering ) 객체지향 설계 문양세 강원대학교  IT 대학 컴퓨터과학전공

학습 목표

2

객체지향 분석과 설계

객체지향 개념

UML 2.0 다이어그램

정적 모델링 , 동적 모델링 , 디자인 패턴 ( 간략히 설명 )

Page 3: 소프트웨어 공학  (Software Engineering ) 객체지향 설계 문양세 강원대학교  IT 대학 컴퓨터과학전공

객체지향 기술

절차적인 방법은 조그만 변화에도 영향이 큼 최근에는 객체지향 설계 , 언어가 매우 일반화된 추세임

함수와 자료를 함께 클래스로 묶음으로 여러 장점을 얻을 수 있음( 예제 : 스크롤러 – 여러 환경에 적용되며 , 독립적인 수정 / 관리가 가능 )

장점 추상화 , 모듈화 , 정보은닉 등 설계 원리에 충실 복잡함을 잘 다룰 수 있음

특징 유사성을 이용하는 방법을 제공 ( 클래스 도출 ) 뚜렷하게 구별되는 단위로 분할 코드 재사용에 의하여 생산성을 높임 빠른 속도로 적용 , 산업계 표준화

3

Page 4: 소프트웨어 공학  (Software Engineering ) 객체지향 설계 문양세 강원대학교  IT 대학 컴퓨터과학전공

6.1 객체지향 분석과 설계

객체지향 분석 및 설계의 특징 분석과 설계의 과정이 순차적 ( 절차적 ) 이 아님 분석과 설계 과정을 명확히 구분하기는 어려움 한번의 싸이클로 작업이 끝나지 않고 , 반복적인 싸이클로 완성

분석은 문제 영역 , 설계는 솔루션 영역을 다룸

4 문제 자체의 이해 구현 기술도 고려

Page 5: 소프트웨어 공학  (Software Engineering ) 객체지향 설계 문양세 강원대학교  IT 대학 컴퓨터과학전공

객체지향 분석 설계 과정

뚜렷한 표준 프로세스는 없음 ( 경험적 요소에 상당히 의존적임 )

사용사례는 맨 처음 , 최종 목표는 클래스 다이어그램

5“ 객체”

( 클래스 )

Page 6: 소프트웨어 공학  (Software Engineering ) 객체지향 설계 문양세 강원대학교  IT 대학 컴퓨터과학전공

객체지향 모델

여러 다양한 관점에서 시스템을 모델링

객체지향에서는 크게 세 가지 관점의 모델을 작성 기능적 모델 : 사용자에게 보이는 외부 기능을 중심으로 모델 작성 정적 모델 : 시스템을 구성하는 요소인 객체들의 관계를 모델링 동적 모델 : 객체의 상태 변화 등 시간적 요소가 고려된 모델

6

Page 7: 소프트웨어 공학  (Software Engineering ) 객체지향 설계 문양세 강원대학교  IT 대학 컴퓨터과학전공

학습 목표

7

객체지향 분석과 설계

객체지향 개념

UML 2.0 다이어그램

정적 모델링 , 동적 모델링 , 디자인 패턴 ( 간략히 설명 )

Page 8: 소프트웨어 공학  (Software Engineering ) 객체지향 설계 문양세 강원대학교  IT 대학 컴퓨터과학전공

6.2 객체지향 개념

8

객체지향에서는 주어진 문제 영역을 그 안에 존재하는 “객체의 집합”으로 보며 , 객체들은 서로 정보를 주고받아 “상호작용”한다 여긴다 .

객체지향 개념에서는 소프트웨어를 여러 개의 객체의 모임으로 생각하며 , 객체는 데이터와 관련 함수를 모아 놓은 것이다 .

Page 9: 소프트웨어 공학  (Software Engineering ) 객체지향 설계 문양세 강원대학교  IT 대학 컴퓨터과학전공

객 체

객체의 정의 소프트웨어 모듈 ( 객체 ) = 자료구조 + 함수

객체는 상태 (state), 능력 (behavior), 정체성 (identity) 을 가진다 . 상태 : 자료구조가 객체 ( 인스턴스 ) 고유의 값을 가짐 능력 : 연산 (operation) 을 수행 할 수 있는 능력 정체성 : 구별 가능성 ( 사과들도 각기 모양이 구분됨 , 쌍둥이도 구별됨 )

객체 인스턴스 (instance) = 객체

비슷한 객체의 구조와 행동은 공통 클래스로 선언

9

Page 10: 소프트웨어 공학  (Software Engineering ) 객체지향 설계 문양세 강원대학교  IT 대학 컴퓨터과학전공

클래스 (Class) [1/2]

클래스 (class) vs 인스턴스 (instance) 클래스 : 객체의 타입 (object type) 인스턴스 : 클래스에 속하는 개개의 객체

클래스의 속성 (attribute) 예 : 직원 클래스

• 속성 : 이름 , 직위 , 월급 , 전화 번호 등 • 함수 : 진급 , 월급 인상 , 전화 변경 등

직원클래스

홍길동 객체

10

Page 11: 소프트웨어 공학  (Software Engineering ) 객체지향 설계 문양세 강원대학교  IT 대학 컴퓨터과학전공

클래스 (Class) [2/2]

클래스는 유사한 개념의 객체 ( 클래스 ) 들을 그룹핑하는 효과

클래스는 객체들이 갖는 속성과 적용 연산을 정의하고 있는 틀 (template) Employee Hong_kildong(); Employee* Hone_kildong = new Emplyoee();

11

Page 12: 소프트웨어 공학  (Software Engineering ) 객체지향 설계 문양세 강원대학교  IT 대학 컴퓨터과학전공

캡슐화 (Encapsulation)

캡슐화의 정의 관련된 항목을 모아서 갭슐을 씌움

• 예 > 학사 관리 시스템• 데이터 : 학번 , 이름 , 주소의 캡슐화• 함수 : 평점 계산 , 주소 변경 , 수강 신청의 캡슐화

추상화의 수단 세부사항은 차후에 생각

정보은닉 (information hiding) 외부의 직접적 접근 불가 , 일종의 블랙박스

구현에 따라 선택 가능 문법 : public, private, protected

12

Page 13: 소프트웨어 공학  (Software Engineering ) 객체지향 설계 문양세 강원대학교  IT 대학 컴퓨터과학전공

객체 사이의 관계

객체는 일반적으로 상호작용하여 동작 객체에 있는 서비스를 호출하면 두 객체는 관계가 맺어져야 함 상호작용할 필요가 있는지 찾아내는 작업이 필요

연관 (association) 서로 상대의 존재를 알 수 있도록 관련이 맺어진 것 예 ) 책과 출판사

집합 관계 (set relationship) 전체 개념과 부분 개념 사이의 관계격납 (containment) 의 의미 예 ) 디스크 트랙 섹터

13

Publisher Book1 *

Page 14: 소프트웨어 공학  (Software Engineering ) 객체지향 설계 문양세 강원대학교  IT 대학 컴퓨터과학전공

상속 (inheritance) [1/2]

상속의 의미 상위 클래스의 속성과 연산을 물려 받음

슈퍼클래스 (superclass), 서브 클래스 (subclass) 예 )

• 직원 : 슈퍼클래스 • 관리자 : 서브클래스

14

Page 15: 소프트웨어 공학  (Software Engineering ) 객체지향 설계 문양세 강원대학교  IT 대학 컴퓨터과학전공

상속 (inheritance) [2/2]

복수상속 (multiple inheritance) 두 개 이상의 수퍼클래스에서 상속 받음

인사대상

교원학 생

대학원생학부생

직 원

15

Page 16: 소프트웨어 공학  (Software Engineering ) 객체지향 설계 문양세 강원대학교  IT 대학 컴퓨터과학전공

다형성 (polymorphism) [1/2]

다형성의 정의 여러 형태를 가지고 있다 (= 여러 형태를 받아들일 수 있다 )

같은 이름의 메시지를 다른 객체 or 서브클래스에서 호출 예 > getArea() 를 도형의 모양이 달라도 호출

16

Page 17: 소프트웨어 공학  (Software Engineering ) 객체지향 설계 문양세 강원대학교  IT 대학 컴퓨터과학전공

다형성 (polymorphism) [2/2]

메소드 : 특정한 클래스를 위하여 오퍼레이션을 구현

하나 이상의 메소드를 가진 오퍼레이션 매개변수나 객체가 속한 클래스의 이름으로 구분

현재 코드를 변경하지 않고 새로운 클래스를 쉽게 추가할 수 있음

In Java, C++ method overloading? method overriding?

17

Page 18: 소프트웨어 공학  (Software Engineering ) 객체지향 설계 문양세 강원대학교  IT 대학 컴퓨터과학전공

학습 목표

18

객체지향 분석과 설계

객체지향 개념

UML 2.0 다이어그램

정적 모델링 , 동적 모델링 , 디자인 패턴 ( 간략히 설명 )

Page 19: 소프트웨어 공학  (Software Engineering ) 객체지향 설계 문양세 강원대학교  IT 대학 컴퓨터과학전공

6.3 UML 이란 ?

객체지향 소프트웨어를 모델링 하는 표준 그래픽 언어 시스템의 여러 측면을 그림으로 모델링 클래스 기술 ( 정의 )뿐 아니라 , 클래스간 상호작용을 표현 하드웨어의 회로도 같은 의미

19

Page 20: 소프트웨어 공학  (Software Engineering ) 객체지향 설계 문양세 강원대학교  IT 대학 컴퓨터과학전공

UML 역사 [1/2]

1980년대 말부터 1990년대 초에 객체지향으로 모델링 하는 과정과 모델링 언어

출현

설계와 표현 방법의 급증으로 혼란을 초래

Rumbaugh 와 Booch 가 1994년 두 가지 방법을 합병하기로 함 Rational Software 라는 회사 설립

1995년 Jacobson 이 팀에 합류 사용 사례를 제안

1997년 Object Management Group(OMG) 이 UML 표준화 추진

UML V1.0

2003년 6 월 UML V2.0 제정

20

Page 21: 소프트웨어 공학  (Software Engineering ) 객체지향 설계 문양세 강원대학교  IT 대학 컴퓨터과학전공

UML 역사 [2/2]

21

Page 22: 소프트웨어 공학  (Software Engineering ) 객체지향 설계 문양세 강원대학교  IT 대학 컴퓨터과학전공

UML 모델의 세 가지 관점

22

기능적 관점 : 사용자 측면에서 본 시스템의 기능 UML 에서는 주로 분석 단계에서 사용하는 사용 사례 다이어그램으로 표현

구조적 관점 ( 정적 모델 )

시간 개념을 포함하지 않음

시스템의 구조적 측면으로 , 클래스 혹은 객체의 관계 , 클래스 그룹의

의존 관계 등을 다이어 그램으로 나타냄

UML: 클래스 다이어그램 , 컴포지트 다이어그램 , 컴포넌트 다이어그램

동적 관점 ( 동적 모델 )

특정 시각의 시스템 동작을 스냅 사진으로 찍어놓은 형태

시스템의 상태 , 기능을 실행하는 순간의 객체들의 협력 등을 나타냄

UML: 인터랙션 다이어그램 , 상태 다이어그램 , 액티비티 다이어그램 등

Page 23: 소프트웨어 공학  (Software Engineering ) 객체지향 설계 문양세 강원대학교  IT 대학 컴퓨터과학전공

UML 다이어그램

다이어그램 이름 개략적인 모양 설 명

사용 사례 (use case) 다이어그램

액터와 사용 사례를 이용하여 시스템의 기능을 모델링

클래스 다이어그램

객체지향 시스템의 가장 근간이 되는 다이어그램으로 시스템의 정적인 구조를 나타냄

패키지 다이어그램

관련된 클래스를 패키지로 그루핑 하여 의존도를 낮추기 위하여 사용

23

Page 24: 소프트웨어 공학  (Software Engineering ) 객체지향 설계 문양세 강원대학교  IT 대학 컴퓨터과학전공

UML 다이어그램

다이어그램 이름 개략적인 모양 설 명

순차 (sequence) 다이어그램

클래스 사이의 메시지 교환을 시간이 흐름에 따라 나타냄

협동 다이어그램

순차 다이어그램과 같은 내용을 나타내지만 모양이 네트워크 형태임

상태 다이어그램

외부 자극에 대한 시스템의 동적 상태 변화를 나타냄 . 외부 이벤트에 대하여 민감하게 상태를 변화시키는 객체를 모델링

24

Page 25: 소프트웨어 공학  (Software Engineering ) 객체지향 설계 문양세 강원대학교  IT 대학 컴퓨터과학전공

UML 다이어그램

다이어그램 이름 개략적인 모양 설 명

액티비티(activity) 다이어그램

액티비티 단계별로 제어라는 흐름을 모델링 하여 시스템의 동적 특징을 나타냄

컴포넌트 다이어그램

소프트웨어 부품 , 예를 들면 원시코드 , 헌 타임 라이브러리 , 실행 파일 등의 구성을 나타냄

배치 다이어그램

노드 , 컴포넌트 , 커넥터 등 시스템의 물리적 자원 배치를 나타냄

25

Page 26: 소프트웨어 공학  (Software Engineering ) 객체지향 설계 문양세 강원대학교  IT 대학 컴퓨터과학전공

학습 목표

26

객체지향 분석과 설계

객체지향 개념

UML 2.0 다이어그램

정적 모델링 , 동적 모델링 , 디자인 패턴 ( 간략히 설명 )

Page 27: 소프트웨어 공학  (Software Engineering ) 객체지향 설계 문양세 강원대학교  IT 대학 컴퓨터과학전공

6.4 정적 모델링

정적 모델 시간의 개념이 개입되지 않은 모델 클래스 다이어그램이 대표적

클래스 다이어그램 객체 , 클래스 , 속성 , 오퍼레이션 , 연관 등을 표현

27

Page 28: 소프트웨어 공학  (Software Engineering ) 객체지향 설계 문양세 강원대학교  IT 대학 컴퓨터과학전공

6.5 동적 모델링

클래스들의 상호작용이나 클래스의 상태 변화 등 시스템 내부의

동작 동적 모델링의 세가지 다이어그램

인터랙션 다이어그램 상태 다이어그램 액티비티 다이어그램

28

Page 29: 소프트웨어 공학  (Software Engineering ) 객체지향 설계 문양세 강원대학교  IT 대학 컴퓨터과학전공

29

6.6 디자인 패턴

프로그램 개발에 자주 등장하는 문제를 기술하고 같은 작업을 반복하여 설계하지 않고 여러 번 반복하여 사용할 수 있는 문제에 대한 솔루션을 기술한 것

패턴 여러 가지 상환에 적용될 수 있는 템플릿과 같은 것 문제에 대한 설계를 추상적으로 표현한 것 문제를 해결하려는 요소들을 일반화하여 잘 정리한 것 커스텀화된 객체나 클래스의 연결을 나타낸 것

패턴의 구성 요소 패턴의 이름과 구분 : 패턴을 부를 때 사용하는 이름과 패턴의 유형 문제 및 배경 : 패턴이 사용되는 분야 또는 배경 , 해결하는 문제를 의미 솔루션 : 패턴을 이루는 요소들 , 관계 , 협동 과정 사례 : 간단한 적용 사례 결과 : 패턴을 사용하면 얻게되는 이점이나 영향 샘플 코드 : 패턴이 적용된 원시코드

29

Page 30: 소프트웨어 공학  (Software Engineering ) 객체지향 설계 문양세 강원대학교  IT 대학 컴퓨터과학전공

30

자세한 사항은 …

6.4~6.6 의 UML 관련 자세한 사항은 생략 관심있는 학생은 교재의 내용을 참조하시고 , 더 관심 있는 학생은 간단한 온라인 자료를 참조하시기 바랍니다 . 또한 , StarUML 등 UML 저작도구도 있으니 참조 바랍니다 .

http://blog.naver.com/iceprce?Redirect=Log&logNo=150135958399

30

Page 31: 소프트웨어 공학  (Software Engineering ) 객체지향 설계 문양세 강원대학교  IT 대학 컴퓨터과학전공

Questions?