1
목차 1. 협력다이어그램이란? 2. 협력다이어그램표기법 3. 다이어그램유사점, 차이점 4. 협력다이어그램적용 2
1. 협력다이어그램이란? 1. 상호작용다이어그램 Interaction Diagram - 오브젝트갂에주고받는메시지의교환 ( 메시지파싱 ) 을모델화하는것입니다. - 상호작용다이어그램안에시퀀스다이어그램과협력다이어그램이라고하는 2 개의다이어그램을포함하고있습니다. 3
1. <<Create>> 2. 대출개시 (M12345) 3. 작품추가 (D123456) 4. 대출기간설정 (2박) 2.2 [ 회원검색결과!=null 대여자등록 ( 회원검색결과 ) 3.2 [ 작품검색결과!=null 작품등록 ( 작품검색결과 ) 2.2.1. 현재대출설정 ( 신규대출 ) 협력다이어그램 신규대출 : 대출 회원검색결과 : 회원 백보람 : 대출담당 2.1. 회원검색결과 := 회원검색 (M12345) 3.1. 작품검색결과 := 작품검색 (D123456) 회원검색처 : 회원리스트 작품검색처 : 재고리스트 회원검색처 : 회원리스트 신규대출 : 대출 작품검색처 : 재고리스트 백보람 : 대출담당 1. <<Create>> 신규대출 : 대출 시퀀스다이어그램 2. 대출개시 (M12345) 2.1. 회원검색결과 := 회원검색 (M12345) 2.2. 회원검색결과!= null 대여자등록 ( 회원검색결과 ) 2.2.1 현재대출설정 ( 신규대출 ) 3. 작품추가 (D123456) 3.1 작품검색결과 := 작품검색 (D123456) 3.2 [ 작품검색결과!= null 작품등록 ( 작품검색결과 ) 4. 대출기간설정 (2 박 ) 4
1. 협력다이어그램이란? 협력다이어그램 협력 (Collaboration) 다이어그램은순차다이어그램의대안을제공 협력다어어그램은순차다이어그램에서와같은시갂의경과에따라메시지를모델링하지않고객체다이어그램위에서메시지를모델링한다 상호작용에대한객체구조와결과를강조하는접근방법 시나리오처럼프로세스에서논리적인단계들을모델링할수있다 2.2 [ 회원검색결과!=null 대여자등록 ( 회원검색결과 ) 3.2 [ 작품검색결과!=null 작품등록 ( 작품검색결과 ) 1. <<Create>> 2. 대출개시 (M12345) 3. 작품추가 (D123456) 4. 대출기간설정 (2박) 2.2.1. 현재대출설정 ( 신규대출 ) 신규대출 : 대출 회원검색결과 : 회원 백보람 : 대출담당 2.1. 회원검색결과 := 회원검색 (M12345) 3.1. 작품검색결과 := 작품검색 (D123456) 회원검색처 : 회원리스트 작품검색처 : 재고리스트 5
1. 협력다이어그램이란? 협력다이어그램의보기 6:addProduct(characters) 1. Order() 3. additem(characters) 시나리오는고객백보람이주문을하고그주문에품목을추가하며, 추가할때마다각각의품목이이용가능하지확인하는것이다 백보람 : 고객 백보람의 : 주문 주문 2: return 7: true 5: true 4:productAvailable(characters) : 재고목록 * 시나리오단계를거치려면번호가붙은메시지를단순히따라가면된다 6
2. 협력다이어그램표기법 1 객체백보람은오로지고객클래스에한정된객체이름이다 2 동기이벤트또는프로시저호출동기이벤트 : 응답을요구하는메시지 -> 링크를따라가면반홖메시지확인 프로시저호출 : 상호작용의다른형태인 묻고답하기 와비슷한방법 3 반환값메시지 1 에대한반홖메시지 1 백보람 : 고객 1. Order() 3. additem(characters) 2: return Order 7: true 7 3 * 고객이추가하길원하는모든아이템에대해서단계 3~7 까지반복하라 2 5: return product available 6 백보람의 : 주문 주문 : 재고목록 4 5 4:productAvailable(characters) 6:[product available] reduceinventory(product #,qty) 4 자기참조자기자신에게무엇인가를말하는객체 -> 주문객체는품목리스트에다른물품을추가하기위해서단계 3 의품목정보를이용하도록자기자신에게말하는것이다. 7
2. 협력다이어그램표기법 5 순번협력다이어그램은시갂경과표시 x 메시지의실행순서를표시함번호붙이는체계는표준은없다 1 1. Order() 3. additem(characters) 2 4 6 익명의객체유효한객체표기법의또다른예이다. 7 주석메시지집합을반복하려는의도를나타낼수있는한가지방법 - 메시지집합을반복한다는의도를설명하는데효과적 백보람 : 고객 2: return Order 7: true 7 3 * 고객이추가하길원하는모든아이템에대해서단계 3~7 까지반복하라 5: return product available 6 백보람의 : 주문 주문 : 재고목록 5 4:productAvailable(characters) 6:[product available] reduceinventory(product #,qty) 8
2. 협력다이어그램표기법 1 타임아웃이벤트작은원은시계를나타내며때때로시계잡은손으로표시 만약정해진시갂내에응답을받지못하면시도를중지하고다른노드또는접속으로옮겨가야한다. 예 ) 정해진시갂내응답이없으면단계 10 에서취소 9: 1 백보람 : 고객 1. Order() 3. additem(characters) 10, cancel() 2: return Order 8: return 11: return 5: return product available 7:addProduct(characters) 백보람의 : 주문 주문 4:productAvailable(characters) 2 6:[product available] reduceinventory(product #,qty) 2 비동기메시지비동기메시지는응답을요구안함 : 재고목록 단계 6 은 물품을몇개가지고갈테니그대의레코드를수정해야할듯 ^^;; 이라고단지재고목록을변경하라고말할뿐이다. 9
2. 협력다이어그램표기법 1. Order() 3. additem(characters) 백보람 : 고객 2: return Order 7: true 5: return product available 백보람의 : 주문 주문 4:productAvailable(characters) 6:[product available] reduceinventory(product #,qty) 1. 다이어그램참여하는객체를확읶 2. 클래스다이어그램을사용하여객체사이의링크를그린다. * 고객이추가하길원하는모든아이템에대해서단계 3~7 까지반복하라 : 재고목록 3. 각각의이벤트를추가한다. 메시지화살표를두객체사이의링크와평행하게놓는다. 화살표를메시지를보내는쪽으로부터받는쪽으로가리키도록그린다. 4. 실행순서대로메시지에번호를붙읶다. 5. 젂체시나리오가모델링될때까지단계 3 과 4 를반복한다. 10
3. 다이어그램유사점, 차이점 유사점 1. 순차다이어그램과협력다이어그램은메시지와객체라는동읷한요소를모델링한다. - System Architect 나 Rational Rose 와같은몇몇툴은다이그램사이를젂홖하는기능제공 2. 순차다이어그램과협력다이어그램은메시지를주고받기위해서객체에게부여된책임을가시적으로표현하는수단을제공 - 메시지를수신하는객체는사실상하나의인터페이스를할당받는것 예 ) 수신자부담젂화수신자부담젂화를하기위해서는받는사람젂화번호를알아야함 [ 젂화번호 ] 여러분의인터페이스 11
1. <<Create>> 2. 대출개시 (M12345) 3. 작품추가 (D123456) 4. 대출기간설정 (2박) 2.2 [ 회원검색결과!=null 대여자등록 ( 회원검색결과 ) 3.2 [ 작품검색결과!=null 작품등록 ( 작품검색결과 ) 2.2.1. 현재대출설정 ( 신규대출 ) 협력다이어그램 신규대출 : 대출 회원검색결과 : 회원 백보람 : 대출담당 2.1. 회원검색결과 := 회원검색 (M12345) 3.1. 작품검색결과 := 작품검색 (D123456) 회원검색처 : 회원리스트 작품검색처 : 재고리스트 회원검색처 : 회원리스트 신규대출 : 대출 작품검색처 : 재고리스트 백보람 : 대출담당 1. <<Create>> 신규대출 : 대출 시퀀스다이어그램 2. 대출개시 (M12345) 2.1. 회원검색결과 := 회원검색 (M12345) 2.2. 회원검색결과!= null 대여자등록 ( 회원검색결과 ) 2.2.1 현재대출설정 ( 신규대출 ) 3. 작품추가 (D123456) 3.1 작품검색결과 := 작품검색 (D123456) 3.2 [ 작품검색결과!= null 작품등록 ( 작품검색결과 ) 4. 대출기간설정 (2 박 ) 12
3. 다이어그램유사점, 차이점 차이점 1. 협력다이어그램은객체의상호작용을객체링크로표현 순차다이어그램은객체링크를젂혀설명하지않는다 2. 협력다이어그램의장점 - 객체다이어그램에서참여하는객체그리고메시지를개체링크와대응하도록두는것 - 메시지젂달하는수단으로각각의연관이필요하다는것을분명히함으로써클래스다이어그램유효성을검증하는데도움 3. 순차다이어그램의장점 - 객체의생성과소멸을보여준다는것이다. : 새로만들어진객체는그들이만들어진지점의타임라인위에놓을수있다 - 타임라인끝에있는 X 표시는객체를더이상사용할수없다는의미. 4. 순차다이어그램은객체의활동을보여주는또다름장점을가지고있다협력다이어그램은시갂의경과에따라메시지를설명하지않는다 - 주고받는메시지를해석하지않고객체가홗성상태인지비홗성인지를정확하게이해하는것은불가능 13
시나리오 1 4. 협력다이어그램적용 주문번호입력 주문내용요청 ( 주문검색쓰임새 ) 시나리오 1 참여하는객체들 : 주문처리담당직원 주문내용이있는가? [ 예 ] 주문내용표시 [ 아니오 ] 에러메시지표시 작업종료또는더이상채울품목없음 [ 참 ] 수량을채우지못한품목이있는가? : 주문 DB [ 거짓 ] [ 예 ] [ 아니오 ] 품목선택 주문지연목록작성 : 시스템 품목검색 ( 분류적재쓰임새 ) [ 아니오 ] 품목이있는가? : 재고목록 [ 예 ] 품목수량검색 12345678: 주문 재고수량감소 14
4. 협력다이어그램적용 : 주문처리담당직원 : 주문 DB 1: getordernbr():int 4: return 12345678 2: return 12345678 3: getorder(ordernbr.int):order 5: displayorder(order):void : 시스템 8: getprodserialnbr(itemnbr.int):int 12: [product found]:fillitem(itemnbr.int):product 12345678: 주문 9: return prodserialnbr 27 15: return true 11: return true 13: reduceinv(prod:product):boolean 10: [item found]getproduct(prodserialnbr.int):boolean : 재고목록 14: return true 15
참고자료 1. 다이어그램으로쉽게배우는 UML - 이노우에타케시저 이영희 2. UML 3 일완성 -Thomas A. Pender 저 유영철박순정 3. JAVA 프로그래머를위한 UML 실전에선이것만쓴다 - 로버트 C. 마틴저 이용원 16
17