LECTURE 6 UML 클래스다이어그램 클래스다이어그램은 UML 의중심 최은만, CSE 4039 소프트웨어공학
목차 UML 이란? UML 의역사 UML 클래스다이어그램 Exercise 클래스다이어그램설계 최은만, CSE 4039 소프트웨어공학 2
UML 분석, 설계를비주얼화, 문서화하기위한그래픽언어 Unified 이전의 OO 방법들의통합 Modeling 객체지향분석설계를위한비주얼모델링 Language 모형화된지식 ( 의미 ) 을표현 최은만, CSE 4039 소프트웨어공학 3
UML 은이다. 시스템에대한지식을찾고표현하기위한언어 시스템을개발하기위한탐구도구 비주얼모델링도구 근거가잘정리된가이드라인 분석, 설계작업의마일스톤 실용적표준 최은만, CSE 4039 소프트웨어공학 4
UML 은이아니다. 비주얼프로그래밍언어환경 데이터베이스표현도구 개발프로세스 (SDLC) 모든문제의해결책 품질보증방안 최은만, CSE 4039 소프트웨어공학 5
Every h/w engineer understands curcuit diagram. UML Every s/w engineer WILL understand d UML diagrams. 최은만, CSE 4039 소프트웨어공학 6
UML 의역사 연도 방법 ( 버전 ) 비고 89~ 94 춘추전국 20개이상의객체지향분석설계방법 (OMT, Booch, Fusion, Jacobson, Yourdon) 1994 UM 0.8 OMT+Booch 방법 1996. 6 UML 0.9 OMT+Booch+OOSE(Jacobson), Feedback 1997. 1 UML 1.0 여러업체의참여, OMG 에제출 1997. 9 UML 1.11 OMG 릴리스 ( 새로참여한업체의의견반영 ) 2001. 4 UML 1.4 오류수정 2003. UML 2.0 Superstructure(notation, semantic) Diagram interchange 2007. 9 sysml 시스템엔지니어링으로확장 최은만, CSE 4039 소프트웨어공학 강좌 3: UML 과프로세스개요 7
UML 의진화 최은만, CSE 4039 소프트웨어공학 강좌 3: UML 과프로세스개요 8
UML 2.0 다이어그램체계 최은만, CSE 4039 소프트웨어공학 강좌 3: UML 과프로세스개요 9
UML 클래스다이어그램 UML 클래스다이어그램 객체지향시스템에존재하는클래스, 클래스안의필드, 메소드, 서로협력하거나상속하는클래스사이의연결관계를나타내 는그림 나타내지않는것 클래스가서로어떻게상호작용하는지 자세한알고리즘 특정한동작이어떻게구현되는지 최은만, CSE 4039 소프트웨어공학 10
클래스나타내기 박스위에클래스이름 추상클래스는이탤릭체 인터페이스클래스는 <<interface>> 추가 속성 객체가가지는모든필드를포함 오퍼레이션 / 메소드 아주흔한메소드 (get/set) 는생략 상속된메소드도포함할필요없음 최은만, CSE 4039 소프트웨어공학 11
클래스속성 속성 ( 필드, 인스턴스변수 ) visibility name: type[count] = default value visibility: + public # protected - private ~ package( 디폴트 ) / derived Underline static variable 파생된속성 : 저장되지않고다른속성값으로부터계산됨 최은만, CSE 4039 소프트웨어공학 12
클래스오퍼레이션 / 메소드 오퍼레이션 / 메소드 visibility name(prameters) : return_type visibility: + public # protected - private ~ package( 디폴트 ) Underline e static method 파리메타타입 (name: type) 생성자나리턴타입이 void인경우는 return_typetype 생략 최은만, CSE 4039 소프트웨어공학 13
클래스사이의관계 일반화 (generalization): 상속 (isa) 관계 클래스사이의상속 인터페이스구현 연관 (association): 사용 (usage) 관계 (3 종류 ) 의존 집합 (aggregation): 어떤클래스가다른클래스의모임으로구성 합성 (composition): 포함된클래스가컨테이너클래스가없이는 존재할수없는집합관계의변형 최은만, CSE 4039 소프트웨어공학 14
일반화관계 일반화 ( 상속 ) 부모를향한화살표로표시되는하향계층관계 선 / 화살표는부모클래스의종류에따라다름 클래스 : 실선 / 검은헤드화살표 추상클래스 : 실선 / 흰헤드화살표 인터페이스 : 점선 / 흰헤드화살표 최은만, CSE 4039 소프트웨어공학 15
연관관계 연관 (association): 어떤클래스의인스턴스가작업을수행하기위하여다른클래스를알아야하는함 1. 다중도 (multiplicity) * 0, 1, or more 1 정확히 1 개 2..4 2개내지 4개 3.. * 3개이상 2. 이름 객체들의관계이름 3. 방향성 (navigability) 질의의방향, 객체사이의선으로표시하며양쪽방향인경우는화살표시없음 최은만, CSE 4039 소프트웨어공학 16
연관관계의다중도 1 대 1 학생 1명이학생증 (id card) 한개만을가진다. 1 대다 학생 1 명이여러클래스를수강할수있다. 최은만, CSE 4039 소프트웨어공학 17
Example square-list 라는클래스를추가하고 square 클래스와연관시키시오. 연관의양끝에다중도를표시하라. * 0, 1, or more 1 정확히 1개 2..42 4 2 개내지 4 개 3.. * 3 개이상 최은만, CSE 4039 소프트웨어공학 18
연관의타입 집합 (aggregation): contains 포함하고있는클래스쪽에하얀다이아몬드표시 합성 (composition): 이목적을위하여만포함됨 집합보다더끈끈한관계 부분은전체가살고죽느냐에좌우죔 포함하고있는클래스쪽에검은다이아몬드로표시 의존 (dependency): 일시적사용 점선으로표시 최은만, CSE 4039 소프트웨어공학 19
합성 / 집합관계의예 영화관이없어지면 매표소도없어짐 합성 그러나영화는아직존재 집합 최은만, CSE 4039 소프트웨어공학 20
클래스다이어그램예 최은만, CSE 4039 소프트웨어공학 21
클래스다이어그램예 #2 Visibility 를추가해보시오. 최은만, CSE 4039 소프트웨어공학 22
UML Square Visibility 에오류가있 는것은? 생성자타입의오류? 최은만, CSE 4039 소프트웨어공학 23
전파 (propagation) 현상 전체개념의오퍼레이션이부분개념의오퍼레이션에의하여구현되는현상 동시에부품의속성이전체개념에전파되는현상 전파 (propagation) 과전체부분개념의관계는상속과일반화관계와유사 중요한차이는 상속은묵시적인메커니즘 전파는필요할때프로그램 최은만, CSE 4039 소프트웨어공학 24
패키지다이어그램 패키지탭 Subsystem A "Subsystem A 로부르기로한패키지의외부관점 패키지는서브시스템으로부름 Subsystem A Subsystem B Subsystem C 서브시스템 A 는세개의다른패키지 서브시스템 B, C, D 를그루핑, 확장된패키지의이름은패키지탭에표기. Subsystem D 최은만, CSE 4039 소프트웨어공학 25
패키지사이의관계 Subsystem A Subsystem B Subsystem C Subsystem G Subsystem E Subsystem D Subsystem F 서브시스템 B 는 C 에의존한다. 서브시스템 D는 B와 G에의존서브시스템 E와 F는 D의상세화된것. 서브시스템 G 를제외한모든패키지는서브시스템 A 안에존재. 최은만, CSE 4039 소프트웨어공학
설계연습문제 #1 항공권예약문제 예약의기록은항상탑승객한명단위로이루어짐. 탑승객이없는예약은없음 예약에탑승객이여러명인경우는없음 탑승객이다수의예약을할수있음 탑승객이예약이하나도없을수있음 최은만, CSE 4039 소프트웨어공학
설계연습문제 #2 자동판매기를객체지향으로개발하기로하였다. 자판기 안에있는여러컴포넌트들의관계를나타내는 UML 클 래스다이어그램을완성하시오. 자판기에는동전을일정시간넣지않으면자동으로동전을 내뱉기위하여클락이내장되어있다. 음료수선택을위한버튼 동전슬롯 Shelf 센서와배출구 최은만, CSE 4039 소프트웨어공학 28
클래스다이어그램작성과정 반복, 점증적방법 초벌로작성후계속추가, 삭제 최은만, CSE 4039 소프트웨어공학
참고문헌 Practical UML: A hands on introduction for developers http://dn.codegear.com/article/31863 UML 에관련된많은서적과웹튜토리얼이있음 UML Distilled, by Martin Fowler. 최은만, CSE 4039 소프트웨어공학 30