Designing Objects: Static vs. Dynamic
- Dynamic models
- logic을 design 한다.
- code의 행동과 method body를 나타낸다.
- UML interaction diagrams (sequence diagrams, communication diagrams)
- Static models
- packages, class이름, attributes, method signatures에 대해 정의한다. (method bodies는 제외한다)
주로 Dynamics을 구현하고 이를 통해 static diagrams로 구현한다.
Interation Diagrams
object들이 어떻게 message들을 주고 받는지 나타낸다.
- Sequence diagram
- Communication diagram (이는 Sequence diagram이 정보를 유지하면서 표현이 가능하다.)
- Timing diagram (sequence diagram에서 정확한 timing을 알고 싶을 때 사용한다.)
- Interaction Overview diagram
Sequence diagram = Communication diagram
Sequence diagram의 주 목적은 interaction의 시간적인 순서를 주로 확인하고, Communication diagram의 주 목적은 어떤 객체랑 communication이 되는가가 주 목적이다.
public class A {
B myB;
public void doOne() {
myB.doTwo();
myB.doThree();
}
}
Communication Diagram
Link
- 두개의 객체 사이를 연결 시켜준다.
- association, dependency, aggregation의 인스턴스이다. (inheritance는 제외한다.)
Message
- message의 방향과 함께 객체간의 message 표현을 나타낸다.
- 많은 message들이 하나의 link로 흐를 수 있다.
- 숫자는 message들의 순서를 나타낸다.
Creation
- "create"의 이름을 가진 message를 사용한다. (종종 "new"을 사용하기도 한다.)
- (선택) 생성되는 객체에 "{new}"를 붙여 생성할 수 있다.
- 만약 message 이름이 다른 것으로 사용되었다면, message에 "<<create>>"를 사용한다.
Numbering
각 message의 순서는 numbering을 통해 나타낼 수 있다.
이때 만약 1을 진행하였고, 1.1, 2가 있다면 1.1부터 진행하고 2를 진행한다.
위 diagram 순서
msg1 -> msg2 -> msg3
아래 diagram 순서
msg1 -> msg2 -> msg3 -> msg4 -> msg5 -> msg6
Conditional / Mutually Exclusive messages
조건을 넣을 수 있다.
Iterative messages
반복문을 사용할 수 있다.
Static Method call
static method call은 받는 class를 더욱 정확하게 하거나 인스턴스에 <<metaclass>>을 대입한다.
메소드를 사용할 때 우리는 보통 두 가지 방식을 채용하여 사용한다. 인스턴스를 생성한 뒤, 그 인스턴스를 참조하여 메소드를 사용하던가 (e.g. instance.someMethod()) 혹은 클래스명으로 메소드를 참조하여 사용하던가(e.g. ClassName.someMethod()) 하여 사용한다.
이 두 방식의 메소드를 각각 인스턴스 메소드(Instance Method), 정적 메소드(Static Method)라고 한다.
Polymorphic Method Call
상속 관계에 있다면 다음과 같이 diagram을 정의할 수 있다.
Asynchronous and Synchronous Calls
- Asynchronous Call : 응답을 기다리지 않는다.
- Synchronous Call : 응답을 기다린다.
Asynchronous Call의 경우 내부가 빈 화살표 형태로 작성한다.
Sequence Diagram
Iteration over a Collection
만약 같은 message를 각각 object에 보낸다고 한다면 다음과 같이 작성할 수 있다.
Messages to Classes to Invoke Static Methods
class에 static method call을 보내면 인스턴스에 <<metaclass>>를 작성한다.
Polymorphic Method Call
sequence diagram들을 각각 polymorphic 경우에 따라 분리한다., 그리고 polymorphic message의 시작 부분으로 찾는다.
Asynchronous and Synchronous Calls
Design Class Diagram
Domain model : 개념적 관점
Design Class Diagram (DCD) : design 관점
domain model은 association name은 나타내지만 방향이 있는 화살표를 나타내지 않는다. 반면 DCD는 UML의 정보를 나타낸다.
Keywords
모델의 categorize할수 있는 text 형태 -> 부가적인 정보를 줌.
<<actor>>, <<interface>>, {abstract}, {ordered} 등이 있다.
Stereotypes, Profiles and Tags
Stereotype는 유저가 정의하여 사용할 수 있다.
특화된 domain이나 platform에 정보를 더 상세하게 나타내기 위해 사용한다.
Relationship between Interaction and Class Diagrams
Interaction diagrams을 이용해 class diagrams을 도출할 수 있다.
public class Y {
boolean doB(X x) {
Y y2 = new Y();
x.doD(y2);
// ...
reutrn SomeBooleanValue;
}
void doE() {
// ...
}
}