![](https://t1.daumcdn.net/cfile/tistory/247C574D5930119114)
![](https://t1.daumcdn.net/cfile/tistory/264E964D5930119123)
![](https://t1.daumcdn.net/cfile/tistory/2763EB4D5930119204)
![](https://t1.daumcdn.net/cfile/tistory/2223E54D5930119326)
![](https://t1.daumcdn.net/cfile/tistory/2477A04D593011941F)
![](https://t1.daumcdn.net/cfile/tistory/2123F14D5930119526)
![](https://t1.daumcdn.net/cfile/tistory/2373F34D5930119620)
![](https://t1.daumcdn.net/cfile/tistory/235DA54A593011980C)
![](https://t1.daumcdn.net/cfile/tistory/263D7F4A5930119920)
![](https://t1.daumcdn.net/cfile/tistory/2536BD4A5930119A23)
![](https://t1.daumcdn.net/cfile/tistory/222BA74A5930119B1A)
![](https://t1.daumcdn.net/cfile/tistory/215F1F4A5930119C28)
![](https://t1.daumcdn.net/cfile/tistory/2522BE4A5930119D24)
![](https://t1.daumcdn.net/cfile/tistory/214D244A5930119E34)
![](https://t1.daumcdn.net/cfile/tistory/277D24505930119F1A)
![](https://t1.daumcdn.net/cfile/tistory/260F2150593011A004)
![](https://t1.daumcdn.net/cfile/tistory/26401D50593011A10A)
![](https://t1.daumcdn.net/cfile/tistory/256BD050593011A237)
![](https://t1.daumcdn.net/cfile/tistory/21274D50593011A320)
![](https://t1.daumcdn.net/cfile/tistory/24361250593011A40B)
![](https://t1.daumcdn.net/cfile/tistory/232D4550593011A40C)
![](https://t1.daumcdn.net/cfile/tistory/2472CE47593011A527)
![](https://t1.daumcdn.net/cfile/tistory/236CAE47593011A61D)
![](https://t1.daumcdn.net/cfile/tistory/2346A047593011A82B)
상태다이어그램상태다이어그램
.상태다이어그램의UML 표기법.간단한상태다이어그램의예.상태다이어그램의슈퍼상태와서브상태.상태다이어그램예제
상태
다이어그램의
개념을
이해한다
.
상태의
확장개념을
학습한다
.
상태
다이어그램
모델링
과정을
학습한다
.
실습을
통한
상태
다이어그램을
학습한다
.
기본
표기법
.
[그림
8-1]
.
반응적인
성격을
가지는
세탁기
객체의
행동을
상태
다이어그램으로
표현한
것
[그림
8-1] 세탁기
객체가
가질
수
있는
상태들
상태
.
객체가
존재할
수
있는
조건
중의
하나
.
둥근
모서리를
가진
사각형으로
표시
.
둥근
모서리를
가진
사각형의
안쪽
상단에
상태의
이름을
기술
.
[그림
8-1]
.
세탁기
객체가
가질
수
있는
4가지
상태를
표현
.
[그림
8-2]
.
상태들
사이의
행동관계를
나타내는
상태
다이어그램으로
표현
[그림
8-2] 세탁기
객체의
행동을
표현한
상태
다이어그램
.
상태에서
중요한
것
.
객체가
가질
수
있는
모든
가능한
경우가
상태로
파악되어야
한다
.
객체는
파악된
상태들
이외의
상태를
가질
수
없다
.
.
객체는
특정
순간에는
오직
한
상태로만
존재할
수
있다
.
.
상태다이어그램도
활동
다이어그램과
마찬가지로
시작과
종료
상태가
있으며
,
.
시작
상태와
종료
상태의
표기는
활동
다이어그램에서처럼
동일하게
사용한다
.
이벤트와
전이
.
[그림
8-3]
.
이벤트에
의해
전이되는
두
상태를
표현
.
객체에
외부로부터
자극이
전달된
경우
.
이
자극에
의해서
객체가
다른
상태로
변경
.
전이
(Transition)
.
객체의
상태가
다른
상태로
변경되는
것
.
이벤트
.
객체의
전이를
유발하는
자극
.
상태
사이의
전이
: 실선으로
표시
( UML 상태
다이어그램
)
.
상태의
전이를
유발하는
이벤트는
전이
위에
이벤트
이름이
표시
[그림
8-3] time over 이벤트에
의해‘세탁
중’상태에서‘정지’상태로의
전이
.
[그림
8-2] 의
세탁기
객체에
대한
이벤트와
전이
.
세탁기는
시작
상태에서
activate 이벤트를
받으면
가동할
수
있는‘정지’상태가
된다.
.
‘정지’상태에서는
언제든지
shut down 이벤트를
받으면
세탁기
객체는‘종료’
상태로
간다
. 즉
세탁기는
동작하지
않는다
.
.
세탁기가‘정지’상태에
있을
때
, 즉
정지한
상태에서
wash 이벤트를
받으면
‘세탁
중’
상태가
된다
.
.
일정한
시간이
되면
, 즉
time over 이벤트를
수신하면
세탁기는
정지한다.
.
‘정지’상태일
때
, 즉
정지한
상태에서
dry 이벤트를
받으면‘건조
중’상태가
된다
.
.
일정한
시간이
되면
, 즉
time over 이벤트를
수신하면
세탁기는
정지한다.
.
마찬가지로
세탁기가‘정지’상태에
있을
때
, 즉
정지한
상태에서
spin 이벤트를
받으
면
‘건조
중’상태가
된다
.
.
일정한
시간이
되면
, 즉
time over 이벤트를
수신하면
세탁기는
정지한다.
확장된
표기법
.
상태와
이벤트
표기법을
확장하여
좀
더
상세한
표현이
가능
상태
아이콘의
확장
.
상태
아이콘은
클래스
아이콘처럼
두
영역으로
나누어
정보를
넣을
수
있다
.
.
가장
위에는
상태
이름
( 필수
),
.
가장
아래
부분에는
활동
( 선택적
)
[그림
8-4] 상태
아이콘의
확장된
표현
.
예제
: 프린터
.
프린터는
컴퓨터로부터
프린트할
데이터를
메모리에
저장
.
프린트가
끝나면
메모리에
저장된
데이터를
삭제
.
상태
변수
≫
메모리에
저장·삭제하는
save_momory_data, delete_momory_data
≫
프린트할
종이가
있는지를
체크하는
check_paper
≫
프린트할
페이지를
알아내는
amount_pages( 페이지
양
)
[그림
8-5] 상태변수와
활동으로
표현된
프린터의
상태
다이어그램
이벤트와
전이의
확장
.
전이를
나타내는
선
위에
정보를
추가
.
전이가
일어나는
원인을
제공하는
이벤트와
실제로
수행되어
상태
변화를
일으키는
동작으로
표현
.
이벤트와
동작은
전이선에
가깝게
붙여
써주며
, 슬래시(/)를
사용하여
사건과
동작을
구분
.
어떤
사건의
경우에는
연관된
동작
없이
전이를
일으킬
수
있으며
, 활동을
종료했기
때문에
일어나는
전이도
있다
.
.
예제
: 에어컨
시스템
.
상태의
종류
≫
초기화(Initializing)
≫
작동중
(Working)
≫
끝
마무리
(Finishing)
.
에어컨을
켜면
, 현재
온도를
확인하고
설정된
온도보다
높으면
에어컨이
작동
≫
에어컨을
켜는
일
(turn air conditioner on) 은
‘초기화’상태로
전이되도록
하는
이벤트
≫
온도
확인
(temperature confirmation) 은
이
전이가
수행되는
도중에
일어나는
동작
[그림
8-7] 전이
조건이
추가된
.
[그림
8-6] 다이어그램의
부족한
점
에어컨
시스템의
상태
다이어그램
.
에어컨
시스템은‘작동
중’상태에서
다른
상태로
전이
.
[그림
8-7] : [ 그림
8-6] 보완
전이가일어나는원인제공이벤트
/실제로
수행되어
상태변화를
일으키는
동작
[그림
8-6] 에어컨
시스템의
상태
다이어그램
온라인
진료예약
시스템
상태를
기술하기
위한
상태
다이어그램
.
첫
번째
단계
: 환자의
초기
상태
확인
.
기술에서“우선
병원을
방문하여
한
번이라도
진료를
받은
환자
이면‘관심’
상태
가
된다
.
.
초기
상태
표현
: 시작
상태
, 전이
화살표
, 첫
번째
상태
요소
필요
[그림
8-8] 환자의
초기
상태
: 관심
상태
.
초기
상태에서
사건
.
환자가
한
번이라도
방문해야
한다
.
아픔/방문
[그림
8-9] 사건과
조건의
표현
.
‘관심’ 상태를 다른 상태로 바꾸는 이벤트 확인
.
기술서 : “지속적인 통근 진료를 요하는 환자의 경우 ‘진료중’상태 로 한다”
.
상태 변화 모델링 : 전이 화살표 , 이벤트, 객체가 전이할 새로운 상태 필요
지속적 통근 치료
[그림 8-10] ‘관심 ’상태에서 ‘진료중’ 상태로의 전이
.
‘진료중’ 상태를 다른 상태로 바꾸는 이벤트 확인
.
기술서 : “‘진료중’에서 의사의 결정에 따라 입원이 결정되면 ‘입원상태’
가 된다”
.
‘진료중’에서 ‘입원상태’로 전이
.
이벤트 : “입원결정”
입원결정
[그림 8-11] ‘진료중’ 에서 ‘입원상태’ 로의 전이
.
입원상태를 다른 상태로 바꾸는 이벤트 확인 .
.
기술서 : “입원상태에서 퇴원이 결정되면‘진료중’이나‘진료종료’상태 가 된
다”
.
‘입원상태’에서‘진료중’상태나‘진료종료’로 전이
[그림 8-12] ‘입원상태’에서 ‘진료종료’로의 전이
.
관심상태에서나 진료 중 상태에서 진료 종료 상태로 전이 .
.
기술서 : “‘관심’이나‘진료중’상태에서 의사의 결정에 따라 진료가 종료되면
‘진료종료’로 한다”
[그림 8-13] ‘관심’과‘진료중’상태에서 ‘진료종료’상태로 전이
물품
객체의
상태
다이어그램
.
초기
상태
.
‘매입
처리
중
’
(매입주문을
기록하는
단계
)
[그림
8-14] 물품
객체의
초기
생성
모델링
.
[그림 8-15]
.
물품 접수 이벤트 (itemReceive) 에 의해 초기 상태의
‘매입 처리 중’에서 ‘재고반영’으로의 상태전이
≫ receive(item,count): 매입주문 객체의 접수물품과 수량
≫ list(location) : 물품의 재고 위치를 수정하는 동작
→ itemReceive 이벤트는 물품 재고 위치를 수정하는 list(location) 동작을 발생
.
[그림 8-16]
.
판매 이벤트 (sell) 와 setOrder(Order) 동작
≫ sell 이벤트 : 물품 객체의 상태를‘판매’상태로 전이
≫ setOrder(Order) 동작 : 주문 객체에 재고를 확보한
물품의 정보 기록
→ sell 이벤트는 물품의 정보를 기록하는 setOrder(Order) 동작을 발생
[그림 8-15]
재고목록과 매입주문 내용 수정
[그림 8-16]
물품 판매와 재고를 확보한 물품정보 기록
.
[그림
8-17]
.
‘판매’에서‘포장’으로
상태전이를
일으키는
물품
포장
이벤트(packing_item) 를
모델링한
것
≫
packing_item 이벤트
: 운송정보를
기록하는
동작인
setCarryInfo(carryInfo) 동작을
일으킨다
.
[그림
8-17]
운송을
위한
물품
포장
.
[그림
8-18]
.
‘포장’에서‘운송’으로의
상태전이를
표현
≫
상태전이를
일으키는
이벤트
: carry 이벤트
≫
관련된
동작
: 운송자와
발송
일자를
기록하는
setCarry(date, carrier) 동작을
일으킨다
.
[그림
8-18]
물품
발송
.
[그림
8-19]
.
물품
객체에
대해
완성된
상태
다이어그램
≫
반송
이벤트
(return) 가
다이어그램에
추가
.
return 이벤트
≫
‘운송’상태에서‘재고
반영’상태로의
전이를
발생시키고
물품의
위치를
기록하는
동작이
실행
.
[그림
8-15] 의
물품
접수
이벤트
(itemReceive)
≫
재고
반영
상태로
들어가는
이벤트로서
return 이벤트와
동일한
동작을
실행
.
‘재고
반영’상태로
들어가는
모든
이
벤트가
동일한
동작을
실행하므로
≫
이벤트에
대한
동작을
하나의
들어가는
동작으로
나타낼
수
있다
.
[그림
8-19] 물품
객체에
대한
완성된
상태
다이어그램
.
UML 상태
다이어그램
.
객체의
동작과
상태를
높고
낮은
2가지
관점에서
볼
수
있는
중첩된
상태의
개념
지원
.
슈퍼
상태
.
서브
상태를
포함하는
확장된
상태
.
둥근
사각형의
상태
아이콘이
확장되어
슈퍼
상태
내에
자세한
정보를
하나
이상의
상태
다이어그램으로
표현
.
복잡한
상황을
높은
관점에서
표현
.
서브
상태
.
자세한
정보를
나타내는
하나
이상의
상태
다이어그램
.
상태
안에서
세부
항목을
낮은
관점으로
본다
.
[그림
8-20] 슈퍼
상태와
서브
상태
슈퍼상태와 서브 상태의예
예 : 자동 온도 조절기 객체
.
자동 온도 조절기를 좀 더 단순화시켜 온도계의 역할 중에서 영하 쪽만을
생각해보자.
.
자동 온도 조절기가‘냉각’상태에 들어갈 때 , ‘냉각’상태가 동시에 일어나는
2가지의 서브 상태로 나뉘는 것을 나타낸다 .(2 가지 일이 동시에실행 )
.
냉각 프로세스의 진행을 모니터링하고 더불어 문제점을 감지하기 위해 냉각장치를
모니터링 하는 것 .
.
2개의 서브 상태는‘냉각’상태에 들어가자마자 시작
[그림 8-21] ‘냉각상태 모니터’와‘냉각장치 모니터’ , 2 개의 서브 상태를 가진 슈퍼 상태‘냉각’
제어의
분리와
동시성
에어컨을
켜는
일
제어의
분리
.
제어의
분리
.
오직
하나의
전이에
기초하여
다수의
작업을
진행하는
것을
의미
.
활동
다이어그램에서
배운
개념과
동일
.
제어의
분리가
일어나면
하나의
전이가
여러
상태
또는
서브
상태를
가리키는
다수의
화살표로
나뉜다.
.
분리는
활동
다이어그램에서
사용한
동기화
막대에
의해
수행
.
[그림
8-22]
.
이벤트
when temperature receive(temperature) [temperature>76F]/air
conditioner.turnOn( ) 에
의해‘냉각’상태로
전이된
자동
온도
조절기
객체가‘냉각상태
모니터’와‘냉각장치
모니터’의
2가지
서브
상태로
나뉘어
동시에
수행
.
제어의
합병
또한
동기화
막대를
가리키는
다수의
전이
화살표로
모델링
[그림
8-22] 제어의
분리
동시성
.
한
상태
내에서
여러
개의
상태
다이어그램을
허용하기
때문에
UML은
어떤
상
태
내에서
동시성(Concurrency) 지원
.
동시성의
모델링
.
슈퍼
상태
내부를
필요한
만큼
나누고,
.
서브
상태
다이어그램을
그
분리된
영역에
나누어
그리는
것
.
[그림
8-23]
.
‘냉각’슈퍼
상태에서
다수의
전이에
따라‘온도
모니터’상태로
되돌아가는
모습을
모델링한
것
.
[그림
8-23] 하나의
슈퍼
상태로부터
다수의
전이
항공기
예약
시스템
.
상태
.
노선, 항공사, 결제
3가지이다.
.
시작점에서
노선
상태까지
여행
장소
선택
.
노선
상태에서
항공사
상태까지
항공사
선택
.
항공사
상태에서
결제까지
계산의
이벤트가
전이
[그림
8-24] 항공기
예약
상태
다이어그램
주문관리
시스템
.
상태
.
회원가입, 고객확인, 상품선택, 결제, 운송
.
시작점에서
회원가입
상태까지
정보입력,
.
회원가입
상태에서
회원확인까지
혹은
시작점에서
회원확인상태까지
로그인,
.
회원확인
상태에서
상품선택
상태까지
상품조회,
.
상품선택
상태에서
결제
상태까지
계산,
.
결제에서
운송
상태까지
운반의
이벤트가
전이
[그림
8-25] 주문관리
상태
다이어그램
도서예약
관리
시스템
.
상태
.
예약, 반납, 대출, 취소
.
시작점에서
예약
상태까지의
책
예약
.
시작점에서
반납
상태까지
책
반납
.
반납
상태에서
예약
상태까지
예약된
책
여부
확인
.
예약
상태에서
대출
상태까지
책
대출
.
예약에서
취소까지
조건, 기한
초과의
이벤트
전이
[그림
8-26] 도서예약
상태
다이어그램