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

Similar documents
제11장 프로세스와 쓰레드

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

JAVA PROGRAMMING 실습 05. 객체의 활용

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

JAVA PROGRAMMING 실습 08.다형성

소프트웨어개발방법론

1

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

01-OOPConcepts(2).PDF

비긴쿡-자바 00앞부속

PowerPoint Presentation

PowerPoint Presentation

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

Design Issues

Something that can be seen, touched or otherwise sensed

Microsoft PowerPoint - Lect04.pptx

17장 클래스와 메소드

UML

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

시스템 순차도

PowerPoint Presentation

PowerPoint 프레젠테이션

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

PowerPoint 프레젠테이션

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

Microsoft PowerPoint - 04-UDP Programming.ppt

JVM 메모리구조

쉽게 풀어쓴 C 프로그래밍

PowerPoint Presentation

JUNIT 실습및발표

PowerPoint Presentation

PowerPoint 프레젠테이션

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

JMF3_심빈구.PDF

PowerPoint Presentation

No Slide Title

예제 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

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

슬라이드 제목 없음

Microsoft PowerPoint - 13_UMLCoding(2010).pptx

02 C h a p t e r Java

Microsoft PowerPoint - 06-IPAddress [호환 모드]

오버라이딩 (Overriding)

OOP 소개

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

PowerPoint Template

Ext JS À¥¾ÖÇø®ÄÉÀ̼ǰ³¹ß-³¹Àå.PDF

Spring Data JPA Many To Many 양방향 관계 예제

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

강의10

PowerPoint Presentation

쉽게

설계란 무엇인가?

Page 2 of 5 아니다 means to not be, and is therefore the opposite of 이다. While English simply turns words like to be or to exist negative by adding not,

쉽게 풀어쓴 C 프로그래밍

슬라이드 1

PowerPoint Presentation

Journal of Educational Innovation Research 2017, Vol. 27, No. 2, pp DOI: : Researc

untitled

PowerPoint 프레젠테이션

Contents. 1. PMD ㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍ 2. Metrics ㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍ 3. FindBugs ㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍ 4. ㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍ

PowerPoint Presentation

. 스레드 (Thread) 란? 스레드를설명하기전에이글에서언급되는용어들에대하여알아보도록하겠습니다. - 응용프로그램 ( Application ) 사용자에게특정서비스를제공할목적으로구현된응용프로그램을말합니다. - 컴포넌트 ( component ) 어플리케이션을구성하는기능별요

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

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

thesis

DocsPin_Korean.pages

API - Notification 메크로를통하여어느특정상황이되었을때 SolidWorks 및보낸경로를통하여알림메시지를보낼수있습니다. 이번기술자료에서는메크로에서이벤트처리기를통하여진행할예정이며, 메크로에서작업을수행하는데유용할것입니다. 알림이벤트핸들러는응용프로그램구현하는데있어

PowerPoint Template

step 1-1

유니티 변수-함수.key

5장.key

#SPS/C-5050.B.

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

05-class.key

<32B1B3BDC32E687770>

쉽게 풀어쓴 C 프로그래밍

4 CD Construct Special Model VI 2 nd Order Model VI 2 Note: Hands-on 1, 2 RC 1 RLC mass-spring-damper 2 2 ζ ω n (rad/sec) 2 ( ζ < 1), 1 (ζ = 1), ( ) 1

Microsoft PowerPoint - Java7.pptx

PowerPoint Presentation

Page 2 of 6 Here are the rules for conjugating Whether (or not) and If when using a Descriptive Verb. The only difference here from Action Verbs is wh

C# Programming Guide - Types

목차 BUG offline replicator 에서유효하지않은로그를읽을경우비정상종료할수있다... 3 BUG 각 partition 이서로다른 tablespace 를가지고, column type 이 CLOB 이며, 해당 table 을 truncate

<B3EDB9AEC1FD5F3235C1FD2E687770>

Spring Boot/JDBC JdbcTemplate/CRUD 예제

교육자료

C++ Programming

JAVA PROGRAMMING 실습 05. 객체의 활용

#KM560

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

슬라이드 1

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

슬라이드 1

쉽게 풀어쓴 C 프로그래밍

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

Hi-MO 애프터케어 시스템 편 5. 오비맥주 카스 카스 후레쉬 테이블 맥주는 천연식품이다 편 처음 스타일 그대로, 부탁 케어~ Hi-MO 애프터케어 시스템 지속적인 모발 관리로 끝까지 스타일이 유지되도록 독보적이다! 근데 그거 아세요? 맥주도 인공첨가물이

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

untitled

#Ȳ¿ë¼®

Transcription:

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

Objectives 자주사용되는 UML 순차도와협력도를그릴수있다. 2

소개 동적객체모델링은객체들이메시지를주고받으면서상호작용하는것을표현 Interaction Diagram 을사용 순차도 (sequence diagram) 과협력도 (communication diagram) 으로구분. 표기법보다는객체지향설계의핵심원칙은무엇인가가더중요! 3

1. 순차도와협력도 교류도 순차도 (sequence diagram) 와협력도 표현력은같음 : A myb : B public class A { private B myb = new B(); } public void dodone() { myb.dotwo(); myb.dothree(); } // doone doone : A dotwo dothree 1: dotwo 2: dothree myb : B 4

순차도 vs. 협력도 객체간의메시지통신을표현하며표현력은같다. 순차도장단점 보기에편하다. 많이사용한다. 공간을많이차지 협력도장단점 공간을적게차지하면서객체간의협력관계를볼수있다. 순서는 1,2, 를따라가야하므로순서를보기에는어려움 5

예제 : makepayment : Register : Sale makepayment(cashtendered) makepayment(cashtendered) create(cashtendered) : Payment 1. makpayment 메시지가 Register 객체에도착. 발신자는모름. 2. Register 객체는 Sale 객체에같은메시지를전달. 3. Sale 객체는 Payment 객체를생성 public Sale { private Payment payment; Public void makepayment (Money cashtendered) { payment = new Payment(cashTendered); // } } 6

예제 : makepayment ( 협력도 ) direction of message makepayment(cashtendered) :Register 1: makepayment(cashtendered) :Sale 1.1: create(cashtendered) :Payment 7

2. 초보 UML 모델러는동적모델에충분한관심이없다. 지침 클래스다이어그램을이용한정적객체모델링에만시간을소비하지말고, 인터랙션다이어그램을이용하여동적객체모델링을하는데도시간을할애하라. 8

3. UML 인터랙션다이어그램의일반적표기법 생명선박스를이용한객체표현 lifeline box representing an unnamed instance of class Sale lifeline box representing a named instance lifeline box representing the class Font, or more precisely, that Font is an instance of class Class an instance of a metaclass : Sale s 1 : Sale «metaclass» Font lifeline box representing an instance of an ArrayList class, parameterized ( templatized ) to hold Sale objects lifeline box representing one instance of class Sale, selected from the sales ArrayList < Sale > collection List is an interface in UML 1. x we could not use an interface here, but in UML 2, this ( or an abstract class ) is legal sales : ArrayList < Sale > sales [ i ] : Sale x : List related example 9

교류도의일반적표기법 기본메시지표현문법 return = message (parameter: Type) : returntype 중요하지않은부분은생략할수있다. Initialize(cod) Initialize D = getproductdescription(id) D = getproductdescription(id:itemid) D = getproductdescription(id:itemid) : ProductDescription Singleton 객체 dox : Register r=doa(m:money):int : Store 1 the 1 implies this is a Singleton, and accessed via the Singleton pattern 10

4. 순차도의기본적인표기법 1 생명선박스와생명선 UML 1.x : 점선 UML 2.x : 점선또는실선 메시지 생명선사이를연결하는수평화살표 ( 대부분동기메시지 ) 메시지호출시간순서는위에서아래로. : Register : Sale dox doa a found message whose sender will not be specified dob doc dod 실행명세 bar indicates focus of control typical sychronous message shown with a filled - arrow line 11

4. 순차도의기본적인표기법 2 응답또는반환나타내기 1. 메시지문법을이용, return = message(params) 2. 응답 ( 또는반환 ) 메시지선 ( 점선 ) 을이용 : Register : Sale dox d1 = getdate getdate adate 12

4. 순차도의기본적인표기법 3 self 또는 this 로의메시지 중첩된활성화막대 ( 실행명세 ) 를사용 : Register dox clear public Register { public void dox ( ) { clear() // } private void clear() { } 13

4. 순차도의기본적인표기법 4 인스턴스의생성 점선호출과 create 라는관용적함수 new 연산자를실행하여생성자를호출시켜라는뜻 객체생명선과객체소멸 C++ 같이 garbage collection 이안되는경우명시적으로기술 : Sale create ( cashtendered )... «destroy» : Payment X the «destroy» stereotyped message, with the large X and short lifeline indicates explicit object destruction 14

4. 순차도의기본적인표기법 5 - Frame UML 순차도에서의프레임 (frame) 조건문이나반복부분에사용 프레임연산자나레이블, 가드로구성 조건은생명선위에위치 프레임연산자의종류 alt : 가드조건에따라배타적으로실행 loop : 가드가참일때만반복적으로실행 Opt : 가드가참일때만선택적으로실행 Par : 병렬적으로수행되는부분 Region : 임계영역 ( 오직하나의쓰레드만실행가능 ) : A : B makenewsale a UML loop frame, with a boolean guard expression loop [ more items ] enteritem(itemid, quantity) description, total endsale 15

4. 순차도의기본적인표기법 5 - Frame UML 2.x Option frame 사용 Color 가 red 일때만수행 UML 1.x 메지지앞에사용 간단할경우사용가능 opt : Foo [ color = red ] xx calculate yy : Bar : Foo xx : Bar [ color = red ] calculate yy 16

4. 순차도의기본적인표기법 5 - Frame 상호배타적실행 프레임을점선으로나눔 : A : B : C dox alt [ x < 10 ] calculate [ else ] calculate 17

4. 순차도의기본적인표기법 5 - Frame 컬렉션에대한반복 : Sale lineitems [ i ] : SalesLineItem This lifeline box represents one instance from a collection of many t = gettotal SalesLineItem objects. loop [ i < lineitems. size ] i ++ st = getsubtotal lineitems [ i ] is the expression to select one element from the collection of many SalesLineItems ; the i value refers to the same i in the guard in the LOOP frame an action box may contain arbitrary language statements ( in this case, incrementing i ) it is placed over the lifeline to which it applies : Sale lineitems[i] : SalesLineItem t = gettotal loop st = getsubtotal 18

4. 순차도의기본적인표기법 5 - Frame 프레임의중첩 : Foo : Bar xx opt [ color = red ] loop(n) calculate 19

4. 순차도의기본적인표기법 6 순차도연관 인터렉션의사용 다른인터랙션을참조 단순화하거나, 다른인터렉션을포함시키고싶을때사용 sd AuthenticateUser : A : B : C : B : C dox doa authenticate ( id ) ref dob AuthenticateUser authenticate ( id ) dom 1 dom 2 ref DoFoo sd DoFoo : B : C interaction occurrence note it covers a set of lifelines note that the sd frame it relates to has the same lifelines : B and C dox doy doz 20

4. 순차도의기본적인표기법 6 정적클래스로의메시지 클래스또는정적메소드호출을위한도식 보통은객체에게호출하지만, 클래스의정적메소드를호출할때는클래스가필요 특정클래스는자바에서메타클래스인 Class 의인스턴스임.NET 에서는 Type 이모든클래스의메타클래스임 dox message to class, or a static method call : Foo 1 : locs = getavailablelocales «metaclass» Calendar 21

4. 순차도의기본적인표기법 6 다형성표기 virtual 함수는 {abstract} 로표기 Payment is an abstract superclass, with concrete subclasses that implement the polymorphic authorize operation Payment { abstract } authorize () { abstract }... CreditPayment authorize ()... DebitPayment authorize ()... polymorphic message object in role of abstract superclass : Register : Payment { abstract } dox authorize stop at this point don t show any further details for this message : DebitPayment : Foo : CreditPayment : Bar authorize doa authorize dox dob separate diagrams for each polymorphic concrete case 22

4. 순차도의기본적인표기법 7 비동기적호출과동기적호출 비동기적메시지호출 응답을기다리지않는다. 즉블락 (block) 되지않음.NET 또는 java 의쓰레드환경에서사용 실행도중에쓰레드를생성하고초기화할수있다. (Thread.start) 선으로된화살촉 동기적메시지호출 보통의함수호출 결과가올때까지호출한객체는기다림 속이꽉찬화살촉 23

4. 순차도의기본적인표기법 7 액티브객체 액티브객체 객체자신만의쓰레드를실행시키고제어함 박스양쪽에바가추가됨 비동기적호출 run 메소드 a stick arrow in UML implies an asynchronous call a filled arrow is the more common synchronous call In Java, for example, an asynchronous call may occur as follows : : ClockStarter active object System : Class // Clock implements the Runnable interface Thread t = new Thread ( new Clock () ) ; t. start () ; startclock create : Clock the asynchronous start call always invokes the run method on the Runnable ( Clock ) object run to simplify the UML diagram, the Thread object and the start message may be avoided ( they are standard overhead ) ; instead, the essential detail of the Clock creation and the run message imply the asynchronous call runfinalization 24

4. 순차도의기본적인표기법 7 액티브객체의 java 구현 public class Clock implements Runnale { public void run() // 쓰레드의 start 함수를부르면자동호출되는함수 { while (true) // 쓰레드안에서무한반복 } { /// } Public class ClockStarter { public void startclock() } { Thread t = new Thread(new Clock()); t.start(); // Clock 쓰레드의 run 메소드의비동기적호출 System.runFinalization(); } 25

5. 협력도의기본적인표기법 - 링크 링크 두객체사이의연결경로로서연관관계의인스턴스임 예를들어 Register 클래스와 Sale 클래스의연관이있다면 Register 객체와 Sale 객체사이에링크가존재한다. 링크하나에는여러종류의메시지가흘러갈수있다. 1: makepayment(cashtendered) 2: foo : Register :Sale 2.1: bar link line 26

5. 협력도의기본적인표기법 - 메시지 메시지 링크위에메시지표현식과작은화살표로흐름방향을표현 순서번호를사용하여흐름순서를표시 첫번째메시지는순서번호를붙이지않는다. msg1 1: msg2 2: msg3 3: msg4 : Register :Sale 3.1: msg5 all messages flow on the same link 27

5. 협력도의기본적인표기법 self 및인스턴스생성 self 또는 this 로의메시지 자신으로의루프 : Register msg1 인스턴스의생성 <<create>> 스테레오타입사용 생성된인스턴스 {new} 태크사용 1: clear Three ways to show creation in a communication diagram create message, with optional initializing parameters. This will normally be interpreted as a constructor call. 1 : create ( cashier ) : Register : Sale 1 : create ( cashier ) : Register : Sale { new } «create» 1 : make ( cashier ) : Register : Sale if an unobvious creation message name is used, the message may be stereotyped for clarity 28

5. 협력도의기본적인표기법 순서번호매기기 순서번호 (sequence number) 규칙 1. 첫번째메시지는번호를붙이지않는다. 2. 첫번째메시지를호출받은객체가다른객체들에게메시지를보낼때는 1,2,3 으로붙이고, 그다른객체들이또다시중첩하여메시지를보낼때는 1.1, 1.2, 등으로 dot 기호를사용한다. first second third msg1 : A 1: msg2 : B 1.1: msg3 2.1: msg5 2: msg4 : C fourth 2.2: msg6 fifth sixth : D 29

5. 협력도의기본적인표기법 조건부메시지전달 조건메시지 가드를사용 번호 [ 조건 ] : 메시지 message1 conditional message, with test 1 [ color = red ] : calculate : Foo : Bar 상호배타적인조건 unconditional after either msg2 or msg4 : E 1a and 1b are mutually exclusive conditional paths 2: msg6 msg1 1a [test1] : msg2 : A : B 1b [not test1] : msg4 1a.1: msg3 : D 1b.1: msg5 : C 30

5. 협력도의기본적인표기법 반복 반복혹은루프 조건앞에 * 를붙임. runsimulation : Simulator 1 * [ i = 1..n ]: num = nextint : Random iteration is indicated with a * and an optional iteration clause following the sequence number 31

5. 협력도의기본적인표기법 컬렉션에대한반복 컬렉션의객체들에대한똑같은메시지호출 t = gettotal : Sale 1 * [i = 1..n]: st = getsubtotal lineitems[i]: SalesLineItem this iteration and recurrence clause indicates we are looping across each element of the lineitems collection. This lifeline box represents one instance from a collection of many SalesLineItem objects. lineitems[i] is the expression to select one element from the collection of many SalesLineItems; the 멼?value comes from the message clause. t = gettotal : Sale 1 *: st = getsubtotal lineitems[i]: SalesLineItem Less precise, but usually good enough to imply iteration across the collection members 32

5. 협력도의기본적인표기법 정적클래스또는메소드 순차도참조하여이해 dox message to class, or a static method call : Foo 1 : locs = getavailablelocales «metaclass» Calendar 33

5. 협력도의기본적인표기법 다형적메시지 객체에 {abstract} 태그를붙여다형적메시지임을표현 polymorphic message stop at this point don t show any further details for this message dox : Register authorize : Payment { abstract } object in role of abstract superclass authorize authorize : DebitPayment doa dob : Foo : CreditPayment dox : Bar separate diagrams for each polymorphic concrete case 34

5. 협력도의기본적인표기법 비동기 / 동기호출 비동기 열린화살표, 대부분액티브객체로의메시지 동기적호출 채워진화살표 startclock :ClockStarter 3: runfinalization System : Class 1: create 2: run asynchronous message :Clock active object 35