UML 클래스 다이어그램 표기법 (UML Class Diagram)

Similar documents
UML 인터랙션 다이어그램 표기법 (UML Interaction Diagram)

소프트웨어개발방법론

01-OOPConcepts(2).PDF

JAVA PROGRAMMING 실습 08.다형성

Something that can be seen, touched or otherwise sensed

PowerPoint Presentation

UML

C# Programming Guide - Types

객체들이책임을가지고협력하는것을어떻게설계할것인가? applying OO Design principles and the UML 책임을할당하고객체들사이의협력을설계하는것은, 설계시에가장중요하고창조적인작업이다. 2/55

Design Issues

gnu-lee-oop-kor-lec06-3-chap7

제11장 프로세스와 쓰레드

PowerPoint Presentation

슬라이드 1

JVM 메모리구조

JUNIT 실습및발표

PowerPoint Presentation

thesis

1

슬라이드 1

소프트웨어공학 Tutorial #2: StarUML Eun Man Choi

Microsoft PowerPoint - 2강

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

JAVA PROGRAMMING 실습 05. 객체의 활용

슬라이드 1

09-interface.key

PowerPoint 프레젠테이션

유니티 변수-함수.key

PowerPoint Presentation

쉽게 풀어쓴 C 프로그래밍

Microsoft PowerPoint - Lect04.pptx

Microsoft PowerPoint - 06_ClassDiagram(2010).ppt [호환 모드]

(8) getpi() 함수는정적함수이므로 main() 에서호출할수있다. (9) class Circle private double radius; static final double PI= ; // PI 이름으로 로초기화된정적상수 public

쉽게 풀어쓴 C 프로그래밍

시스템 순차도

example code are examined in this stage The low pressure pressurizer reactor trip module of the Plant Protection System was programmed as subject for

PowerPoint 프레젠테이션

제목

비긴쿡-자바 00앞부속

Microsoft PowerPoint - 04-UDP Programming.ppt

쉽게 풀어쓴 C 프로그래밍

소프트웨어공학개론 강의 5: 객체지향개념 최은만동국대학교컴퓨터공학과

자바 프로그래밍

class Sale void makelineitem(productspecification* spec, int qty) SalesLineItem* sl = new SalesLineItem(spec, qty); ; 2. 아래의액티비티다이어그램을보고 Java 또는 C ++,

PowerPoint 프레젠테이션

Microsoft PowerPoint 자바-기본문법(Ch2).pptx

PowerPoint Template

논리적 구조 설계: 패키지도

예제 2) Test.java class A intvar= 10; void method() class B extends A intvar= 20; 1"); void method() 2"); void method1() public class Test 3"); args) A

PowerPoint Presentation

Orcad Capture 9.x

02 C h a p t e r Java

05-class.key

Microsoft PowerPoint - 04_OOConcepts(2010).pptx

step 1-1

MVVM 패턴의 이해

소프트웨어공학개론 강의 7: 시퀀스다이어그램 최은만동국대학교컴퓨터공학과

#KM560

OOP 소개

PowerPoint 프레젠테이션

자바GUI실전프로그래밍2_장대원.PDF

Mobile Service > IAP > Android SDK [ ] IAP SDK TOAST SDK. IAP SDK. Android Studio IDE Android SDK Version (API Level 10). Name Reference V

q 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2

소프트웨어공학개론 강의 11: UML 코드매핑 최은만동국대학교컴퓨터공학과

슬라이드 1

#KM-250(PB)

PowerPoint 프레젠테이션

ilist.add(new Integer(1))과 같이 사용하지 않고 ilist.add(1)과 같이 사용한 것은 자바 5.0에 추가된 기본 자료형과 해당 객체 자료 형과의 오토박싱/언박싱 기능을 사용한 것으로 오토박싱이란 자바 컴파일러가 객체를 요구하는 곳에 기본 자료형

07 자바의 다양한 클래스.key

Microsoft PowerPoint - 13_UMLCoding(2010).pptx

Microsoft PowerPoint - Supplement-03-TCP Programming.ppt [호환 모드]

Slide 1

PowerPoint Presentation

PowerPoint 프레젠테이션

강의10

제8장 자바 GUI 프로그래밍 II

Microsoft PowerPoint - 1주차 UML의 구성과 도구

adfasdfasfdasfasfadf

<4D F736F F F696E74202D2036C0CFC2B05FB0B4C3BCC1F6C7E2C7C1B7CEB1D7B7A1B9D62E707074>

17장 클래스와 메소드

초보자를 위한 자바 2 21일 완성 - 최신개정판

PowerPoint 프레젠테이션

1. auto_ptr 다음프로그램의문제점은무엇인가? void func(void) int *p = new int; cout << " 양수입력 : "; cin >> *p; if (*p <= 0) cout << " 양수를입력해야합니다 " << endl; return; 동적할

제목

Network Programming

Spring Boot

Microsoft PowerPoint - 03-TCP Programming.ppt

슬라이드 1

슬라이드 1

11 템플릿적용 - Java Program Performance Tuning (김명호기술이사)

No Slide Title

Contents Contents 2 1 Abstract 3 2 Infer Checkers Eradicate Infer....

Microsoft PowerPoint - java1-lab5-ImageProcessorTestOOP.pptx

Secure Programming Lecture1 : Introduction

untitled

쉽게 풀어쓴 C 프로그래밍

06.AnalysisModeling.key

04-다시_고속철도61~80p

PowerPoint Presentation

어댑터뷰

Transcription:

UML 클래스다이어그램표기법 (UML Class Diagram)

Objectives 자주사용되는 UML 클래스도를그릴수있다. 2

소개 클래스도 (Class Diagram) 클래스, 인터페이스및이들의연관관계를표현한도식 정적객체모델링에사용 이장의내용 모델링관점을떠나클래스도표기법자체만을다룸 참고자료로만활용 중요한것 도식을그리는기법보다 객체지향핵심원칙은무엇인가 가더중요 3

. UML 적용하기 : 클래스다이어그램의일반적표기법 3 common compartments. classifier name 2. attributes 3. operations an interface shown with a keyword «interface» Runnable run () SuperclassFoo or SuperClassFoo { abstract } - classorstaticattribute : Int + publicattribute : String - privateattribute assumedprivateattribute isinitializedattribute : Bool = true acollection : VeggieBurger [ * ] attributemaylegallybenull : String [ 0.. ] finalconstantattribute : Int = 5 { readonly } / derivedattribute + classorstaticmethod() + publicmethod() assumedpublicmethod() - privatemethod() # protectedmethod() ~ packagevisiblemethod() «constructor» SuperclassFoo (Long ) methodwithparms(param:string, param2:float) methodreturnssomething(): VeggieBurger methodthrowsexception () { exception IOException } abstractmethod () abstractmethod 2 () { abstract } // alternate finalmethod () { leaf }// no override in subclass synchronizedmethod () { guarded } officially in UML, the top format is used to distinguish the package name from the class name unofficially, the second alternative is common dependency java. awt :: Font or java. awt. Font plain : Int = 0 { readonly } bold : Int = { readonly } name : String style : Int = 0 getfont ( name : String ) : Font getname () : String Fruit interface implementation and subclassing run () SubclassFoo - ellipsis means there may be elements, but not shown - a blank compartment officially means unknown but as a convention will be used to mean no members association with multiplicities order PurchaseOrder 4

2. 정의 : 설계클래스도 설계클래스도 (DCD: Design Class Diagram) 소프트웨어객체의정적모델 Domain Model conceptual perspective Register Captures Sale time iscomplete : Boolean / total Register Sale Design Model DCD ; software perspective endsale () enteritem () makepayment () currentsale time iscomplete : Boolean / total makelineitem () 5

3. 정의 : 분류자 분류자 (classifier) 의정의 행위적이고구조적인특색을표현하는모델의요소 예 ) 클래스, 인터페이스, 유스케이스, 액터등을지칭 6

4. 속성의표기 : 속성텍스트및연관관계선 분류자의속성 (structural property) 의연관관계표기 currentsale:sale 과같은속성텍스트 (property text) 표기법 가시성속성이름 : 타입다중성 = 초기값 { 프로퍼티 - 문자열 } 보통가시성은 private 임. 연관관계선표기법 두가지혼합 Register 가 Sale 객체의참조를갖고있음ㅇ르표시하기위해속성텍스트로표현 Register currentsale : Sale Sale Register 가 Sale 객체를참조하고있음을시각적으로강조하고있음 Register currentsale Sale Register 객체가단하나의 Sale 객체와연관되었음을강조 중복적으로연관관계를나타내고있음. Register currentsale : Sale currentsale Sale 7

4. 속성의표기 2: 속성텍스트및연관관계선 도메인모델의연관 vs. DCD 모델의연관관계표시 지침 출발지로부터목적지로의화살표 화살표끝점에표기된다중성 끝점에표기된역할이름 (rolename) : 참조한변수의이름이됨 the association name, common when drawing a domain model, is often excluded (though still legal) when using class diagrams for a software perspective in a DCD UP Domain Model conceptual perspective id : Int Register Captures-current-sale Sale time : DateTime UP Design Model DCD software perspective id: Int Register currentsale Sale time: DateTime 8

4. 속성의표기 3: 데이터타입 데이터타입 (Data Type) 중요하지않은클래스들 예 ) Boolean, Date, Number, Character, String, Time, Address, Color, Geometrics(Point, Rectangle), Phone Number, SSN, UPC, ZIP, 나열형등 데이터타입객체들은속성에표현하고, 중요한클래스에대한참조속성들은연관으로표기한다. applying the guideline to show attributes as attribute text versus as association lines id: Int Register currentsale Sale time: DateTime public class Register { private int id; private Store location; private Sale currentsale; Register has THREE attributes:. id 2. currentsale 3. location location Store address: Address phone: PhoneNumber } 9

4. 속성의표기 3: 연관관계의끝점표기법 다중성 역할명 {ordered} {ordered, List} 같은프로퍼티문자열 Sale SalesLineItem time: DateTime lineitems : SalesLineItem [..*] or lineitems : SalesLineItem [..*] {ordered} Two ways to show a collection attribute public class Sale { private DateTime time; private List<SalesLineItem> lineitems = new ArrayList<SalesLineItem>; } Sale time: DateTime..* lineitems {ordered, List} notice that an association end can optionally also have a property string such as {ordered, List} SalesLineItem 0

5. 노트 : 메모, 주석, 제약사항, 메소드몸체 노트기호 어디에든붙일수있음 설명하고자하는대상과노트기호와는점선으로연결 노트의사용 주석, 메모 UML 제약사항 : 항상 {} 로묶어서나타낸다. 메소드몸체 = UML 오퍼레이션의구현을표기 «method» // pseudo - code or a specific language is OK public void enteritem ( id, qty ) { ProductDescription desc = catalog. getproductdescription ( id ); sale. makelineitem ( desc, qty ); } Register endsale () enteritem ( id, qty ) makenewsale () makepayment ( cashtendered )

6. 오퍼레이션과메소드 연산 클래스박스안의세번째구획 오퍼레이션의시그너쳐만을표기 시그너쳐표기법 가시성이름 ( 매개변수목록 } : 반환타입 { 프로퍼티문자열 } 지침 가시성은기본적으로 public 으로가정 프로퍼티문자열은예외처리나추상함수여부를표현 예 ) +getplayer(name: String) : Player {exception IOException} Java 구현 public Player getplayer(string name) throws IOException 예 2) +getplayer(name: String) : Player {abstract} C++ 구현 public: virtual Player getplayer(string name) 메소드 연산을구현한것 표기법 인터랙션다이어그램에서메시지의세부내용을기술 클래스도에서 UML 노트를사용하여기술 2

6. 오퍼레이션과메소드 2 DCD 에서연산에대한논의점 Create 연산 C++, Java 에서의 new 연산자호출하는것으로구현됨 파라미터타입에맞는생성자가수행됨 속성에접근하는연산들 (setter, getter 연산들 ) DCD에는가급적나타내지않음 N 개의속성이있으면 2N개의접근연산이필요 불필요하게클래스도가복잡해지므로생략 3

7. UML 키워드 (Keyword) UML 키워드란? 모델요소들을범주로나누기위해 UML 에서미리정해놓은용어 를사용 키워드의미사용예 <<actor>> 액터이다. 분류자의이름위에 <<interface>> 인터페이스이다. 클래스이름위에 {abstract} 추상화된요소이며인스턴스를만들수없다. 클래스이름위또는연산이름끝에표기 {ordered} 순서있는객체의집합연관관계끝점에표기 4

8. 스테레오타입, 프로파일, 태그 UML 프로파일 특정도메인이나플랫폼에자주사용되는스테레오타입, 태그, 제약사항을정의해놓은집합 예 ) 프로젝트관리용, 데이터모델링용프로파일 스테레오타입 <<>> 로표기하는것은키워드와같다. 도메인에서자주사용되는용어로미리정해져있거나사용자가정의 UML 확장메커니즘의하나 태그 스테레오타입의 { 속성 - 값 } 의쌍을태그라고함 스테레오타입의정의 UML extension relationship to a basic UML metamodel term Element 스테레오타입의사용 a tool will probably allow a popup to fill in the tag values, once an element has been stereotyped with «authorship» «metaclass» Element «stereotype» Authorship «authorship» Square «authorship» author = craig status = tested author : String status : String 5

9. UML 프로퍼티및프로퍼티문자열 Property? 한요소의특징을표시하는명명된값이다. 예 ) 연산의가시성프로퍼티 : UML 에서미리정해진특징 문자열표기법 {name=value,name2=value2} {abstract,visibility=public} {abstract} == {abstract=true} 6

0. 일반화, 추상클래스, 추상오퍼레이션 일반화 Superclass 에서서브클래스로이어지는실선및빈화살촉으로표현 도메인모델 : 부분집합 DCD : 상속을의미 최종클래스및최종연산은 {leaf} 태그사용 추상클래스는 {abstract} 또는이탤릭체 Polygon Rectangle Polygon {abstract} Rectangle 7

. 의존관계 의존관계 어떤도식에서도사용가능 클래스도, 패키지도에서주로사용 의존관계의정의 클라이언트요소 ( 클래스, 패키지, UC) 가서비스를제공하는공급자요소의정보를가지고있어, 공급자요소의변화가클라이언트에도영향을주는관계로정의함. 의존관계선은클라이언트에서공급자에게로점선화살표로연결함. 의존관계는결합도 (coupling) 의한형태로인식할수있음 의존관계의일반적형태 : 클라이언트 A 는공급자 B 에의존한다. A 가공급자 B 타입의속성을가졌을때 A 가공급자 B 로메시지를보낼때 ( 연관 ) A 의함수가공급자타입의매개변수를받을때 공급자 B 가 A 의슈퍼클래스일때 ( 상속 / 일반화관계 ) 특수한형태의의존관계는해당표기법을사용 상속, 복합연관, 집합연관 지침 클래스도에서는객체들간의전역변수, 매개변수, 지역변수, 정적메소드의의존관계를표시할때에사용 8

의존관계의예 public class Sale { public void updatepricefor(productdescription desc) { Money baseprice = desc.getprice(); // } private SalesLineItem lineitems; // } public class Foo { public void dox() { System.runFinalization(); // } // } the dox method invokes the runfinalization static method, and thus has a dependency on the System class System the Sale has parameter visibility to a ProductDescription, and thus some kind of dependency ProductDescription dox() Foo runfinalization() Sale updatepricefor( ProductDescription ) SalesLineItem..* lineitems 파라미터의존 정적메소드호출 9

의존관계레이블 의존관계의특성을표시하고싶을때 스테레오타입으로표현 Window «call» Clock gettime () A «create» B a dependency on calling on operations of the operations of a Clock a dependency that A objects create B objects 20

2. 인터페이스 UML 에서의인터페이스의구현 인터페이스실현 (interface realization) 관계 빈촉을가진점선 인터페이스의표기법 소켓, 원으로표현 socket line notation Window Timer Window uses the Timer interface it has a required interface dependency line notation Window 2 has a dependency on the Timer interface when it collaborates with a Clock 2 object «interface» Timer gettime () Clock 2 gettime () Timer Window 2 Clock Clock implements and provides the Timer interface Clock 3 gettime () gettime () lollipop notation indicates Clock 3 implements and provides the Timer interface to clients Timer is a provided interface Timer Window 3 socket line notation Window 3 has a dependency on the Timer interface when it collaborates with a Clock 3 object 2

3. 집합 (aggregation) 연관과복합 (composition) 연관 집합연관 (aggregation) 약한전체부분관계 부분은자체적으로존재할수있고, 없어질수도있다. 끝이비어있는다이어몬드를가진선으로표기 복합연관 (composition) 강한전체부분관계 부분만으로는존재할수없고항상전체와동시에존재 다음을암시 Square 와같은부분객체는항상 Board 같은복합객체에만속한다. 부분객체는항상복합객체에종속된다. 복합객체가부분객체의생성및삭제를책임진다. 즉, 복합객체가사라지면부분객체도소멸된다. 끝이채워진다이어몬드를가진선으로표기 Hand 0..7 Finger composition means -a part instance (Square) can only be part of one composite (Board) at a time composition -the composite has sole responsibility for management of its parts, especially creation and deletion Board 40 Square Sale..* SalesLineItem 22

4. 제약사항 UML 제약사항 (constraints) UML 요소에대한제한및조건을표시하기위함 중괄호 {} 안에제약조건표시 표기법 3 가지 Stack size : Integer { size > = 0 } three ways to show UML constraints push ( element ) pop () : Object { post condition : new size = old size + } { post condition : new size = old size } 23

5. 한정적연관관계 한정적연관관계 (qualified association) 큰집합에서하나의객체를선택하여관계를한정할때쓰이며, 선택된객체를한정자 (qualifier) 라고한다. 대개의경우다중성이감소함 : 큰집합에서하나를선택하기때문 (a) Product Catalog Contains..* Product Description (b) Product Catalog itemid Contains Product Description qualifier multiplicity reduced to 24

6. 연관관계클래스 연관관계클래스 (association class) 구현 두클래스사이의연관관계를속성으로가진클래스를지칭 예 ) Employment 는 Company 객체와 Person 객체를이어주고, salary 및 startdate 를추가속성으로가짐 연관관계클래스와연관된클래스들간의두개의연관으로분리후구현 Company * Employs * Person a person may have employment with several companies salary startdate Employment 25

7. Singleton 클래스 디자인패턴중 Singleton 패턴에서나오는클래스 한클래스의인스턴스가시스템을통틀어하나만존재할때 UML notation : in a class box, an underlined attribute or method indicates a static ( class level ) member, rather than an instance member instance : ServicesFactory ServicesFactory accountingadapter : IAccountingAdapter inventoryadapter : IInventoryAdapter taxcalculatoradapter : ITaxCalculatorAdapter getinstance () : ServicesFactory UML notation : this ' ' can optionally be used to indicate that only one instance will be created ( a singleton ) getaccountingadapter () : IAccountingAdapter getinventoryadapter () : IInventoryAdapter gettaxcalculatoradapter () : ITaxCalculatorAdapter 26

8. 템플릿클래스및인터페이스 템클릿클래스 (template class) C++, Java 의템플릿또는매개변수화된타입등으로불림 리스트또는맵등의 collection 클래스들의구현방법 예 ) Square 요소를갖는 ArrayList ArrayList<Square> public class Board { private List<Square> squares = new ArrayList<Square> // } parameterized or template interfaces and classes K is a template parameter «interface» List clear () K the attribute type may be expressed in official UML, with the template binding syntax requiring an arrow or in another language, such as Java Board anonymous class with template binding complete ArrayList T squares : List < K Square > or squares : List < Square > ArrayList < T Square > elements : T [*] clear () clear () for example, the elements attribute is an array of type T, parameterized and bound before actual use. there is a chance the UML 2 arrow symbol will eventually be replaced with something else. g e., = 27

9. 사용자정의구획 사용자정의구획 이름, 속성, 연산등 UML 에서정의한구획외에사용자가정의한구획을클래스박스안에추가할수있음 예 ) 책임구획, 예외처리구획을추가하여사용 id : Int dox() DataAccessObject exceptions thrown DatabaseException IOException responsibilities serialize and write objects read and deserialize objects 28

20. 액티브클래스 액티브객체 객체자신의쓰레드 (thread) 를실행하고제어 액티브클래스 액티브객체의클래스 active class «interface» Runnable Clock run () run () 29

2. 인터랙션다이어그램 vs. 클래스다이어그램 어떤관계인가? 클래스및클래스의메소드는동적모델링을하는창의적인설계과정으로부터정제되어드러난다. 순서 동적모델링 정적모델링 병렬적 Agile 방법론에서는상호보완하면서모델링 예 ) 0 분동적모델링후 0 분정적모델링, 이를반복 : Register : Sale makepayment ( cashtendered ) makepayment ( cashtendered ) messages in interaction diagrams indicate operations in the class diagrams Register Sale classes identified in the interaction diagrams are declared in the class diagrams makepayment ( ) currentsale makepayment ( ) 30