오브젝트는 클래스의 인스턴스들 개별 Attributes 값을 지니고 있지만, Operation 은 따로 표시 안함 ( 클래스별로 동일한 Operation을 갖고있기 떄문 )
ㅁ 표기법 + : Public - : Private ( 표시없으면 Default가 private ) # : Protected ~ : Package / : 내부적으로 계산해서 나오는 값 _ : Class variable,operation (인스턴스가 아닌 클래스단위로 공유)
Operation과 Method의 차이 Operation : Body가 없는 내부적 구현이 작성되지 않은 선언문 Method : 구현된 코드
OO 개념에서 attribute는 숨겨져있기 때문에 접근하기 위한 Getter,setter를 보통 사용한다 (기본적으로 갖고있고, 변수별로 생기기때문에 UML tool에서 숨김기능 대부분 제공 )
5 Type of Class Relationship
Dependency : 다른 오브젝트와 잠깐 일하고 다시는 연결될일 없는 관계 ( 주로 컴포넌트 다이어그램 ) Association(Default) : 일정시간동안 다른 오브젝트와 협업하는 관계 Shared Aggreation(강화버전1) : 다른 클래스의 오브젝트를 참조(공유)하는 관계 Composition(강화버전2) : 다른 클래스의 오브젝트를 포함하는 관계 Inheirtance: 다른 클래스의 상속일 경우
ㅁ Association 읽는법
1) 다대다 관리 2) 강의를 하고 3) lecturer 롤이 보인다. ( navigability ) 학생은 강사의 Public attribute,Opertation 접근 가능. 강사는 학생의 볼수있는게 없음 보통 실선은 양쪽화살표의 의미
※ Association class 클래스와 클래스 간의 관계에 대한 설명 . 어느쪽에 두기도 애매한 attribute에 대해 담아둠 . N:M 관계에서만 적용
Singletone class 인스턴스가 1개뿐인 클래스. 좋은 설계는 아님 singletone design pattern : 생성되는 순간을 관측하기위한 모니터링 시스템 필요
Active class Thread가 되는 클래스 ( 메인 프로세스와 독립적으로 리소스를 갖고 움직임 )
Interface 다양한 방법으로 interface implementation 표현 가능. ( interface realization ) 1) Socket + lollipop notation (주로 컴포넌트) 2) Depoendency line notation (주로 컴포넌트) 3) Interface implementation
Aggregation 클래스가 다른 클래스를 포함하는 경우. (참조냐 소유냐의 따른 type으로 나뉨)
1) Shared Aggregation (weak) 빈 마름모로 표현하며, 참조의 경우. 삭제해도 참조 오브젝트가 지워지지 않음 2) Composition (strong) 채운 마름모로 표현하며, 삭제 시 연관된 모든 오브젝트가 삭제됨
Inheirtance(Generalization) Public한 특징들만 내려감. attribute/Operation 만 내려가는게 아니라, 다른 클래스들과의 관계도 모두 상속된다 . 자바에서는 다중상속이 불가하다. (C++ 에서는 가능) ※ abstract class : 본인은 new로 인스턴스를 만들지 않고, 상속받은 클래스가 오브젝트를 만들도록 하는 껍데기 클래스
Seqence 읽는법 0) doX로 들어오는 System operation 1) doA,B,C 를 호출/리턴 하고 이에 대한 Body는 Sale에 있다
구성요소
1) 오브젝트/수명주기
2) 메세지
3가지 메세지 타입 1) Sync : 리턴값을 받을때까지 대기 (쓰레드를 제외한 모든 프로세스) 2) Async : 리턴과 관계없이 진행 (쓰레드) 3) Ack(Response) : Request에 대한 응답 + Found : System operation (시작) + Lost : Output (끝) + Time-consuming : 기본적으로 메세지는 실시간. 시간이 필요한 메세지 표현 Creation(NEW), Destroy도 가능 생성자가 위에있고, 인스턴스가 아래에 있어야한다. 점선으로 표시하고, 인스턴스 정중앙을 향함
3) Gaurd (조건문)
4) Fragment (제어문 표현)
Fragment : 미리 정의된 표현방법.(여러시나리오를 한장에 압축해서 표현할때)
alt Fragment : swich-case문과 비슷하며 opt Fragment : else 없는 if문 loop Fragment : 반복문 break Fragment : 조건/반복문에서 탈출
Robustness(ECB Pattern) Analysis
유스케이스로부터 3종류의 분석 클래스 추출
1) Boundary class : View에 해당하며, 시스템과 외부 액터의 상호작용
2) Control class : Controller에 해당하며, 비지니스/제어 로직 담당
3) Entity class : Model에 해당하며, 데이터관리를 담당
※ 지양되는 케이스
엑터가 뷰를 거치지 않고 컨트롤러나 엔티티 접근 뷰가 뷰를 호출하고, 엔티티 접근하는 케이스 ( 뷰는 in/out만 담당한다. ) 모델과 모델간 직접적으로 데이터 변경
실습
웹 사이트 로그인과정을 ECB Pattern 으로 그려보기.
ㅁ BP 참고하여 보완할 점.
1) 각 분석 클래스 네이밍 지정
2) Request 메세지에는 요청이라는 표현을 쓸 필요가 없을듯 ( Response 도 마찬가지 )