목적
|
분석 클래스가 의존하는 기타 클래스 정의.
클래스가 인식해야 하는 기타 분석 클래스의 이벤트 정의.
분석 클래스가 유지보수해야 하는 정보 정의.
|
책임을 수행하기 위해 클래스는 종종 기타 클래스에 의존하여 필요한 동작을 제공합니다. 연관은 클래스 간 관계를 문서화하고 클래스 결합의 이해를 돕습니다. 클래스 결합의 이해를 높이고 가능한 경우 결합을 줄여서 더욱
탄력적이고 우수한 시스템을 빌드할 수 있습니다.
다음 단계는 클래스 속성 및 클래스 간 연관을 정의합니다.
속성은 클래스의 정보 저장에 사용됩니다. 특히 속성은 다음과 같은 정보에 대해 사용됩니다.
-
"값"으로 참조됩니다. 즉 속성은 중요한 오브젝트 ID나 정보의 위치가 아니라 단지 정보의 값입니다.
-
속성이 속해있는 오브젝트가 고유하게 "소유하며" 기타 오브젝트는 이 정보를 참조하지 않습니다.
-
정보를 가져오고 설정하거나 정보에 대한 단순한 변환만을 수행하는 오퍼레이션에서 액세스합니다. 정보는 값을 제공하는 이외의 "실제" 동작은 포함하지 않습니다.
반면 정보에 복잡한 동작이 포함되어 두 개 이상의 오브젝트에서 공유되거나 두 개 이상의 오브젝트에서 "참조용"으로 전달되는 경우 정보는 독립 클래스로 모델링되어야 합니다.
속성 이름은 속성에 보유된 정보를 명확하게 설명하는 명사여야 합니다.
속성의 설명은 속성에 저장되는 정보를 설명해야 합니다. 속성 이름으로도 저장된 정보를 알 수 있는 경우 이는 선택적입니다.
속성 유형은 속성의 단순 데이터 유형입니다. 예제로는 string, integer, number가 포함됩니다.
동작을 분석 클래스에 분배에서 작성된 상호작용 다이어그램 링크를 연구하여 시작하십시오. 클래스 간의
링크는 두 개의 클래스 오브젝트가 서로 커뮤니케이션하여 유스 케이스를 수행함을 나타냅니다. 시스템 디자인을 시작하면 해당 링크는 여러 방식으로 실현됩니다.
-
오브젝트가 "글로벌" 범위를 가지며 시스템의 모든 오브젝트가 메시지를 글로벌 범위로 송신할 수 있습니다.
-
하나의 오브젝트가 매개변수로서 두 번째 오브젝트에 전달되고 나중에 이는 전달된 오브젝트에 메시지를 송신할 수 있습니다.
-
오브젝트가 메시지가 송신된 오브젝트와 영구적인 관계를 가집니다.
-
오브젝트는 오퍼레이션 범위 내에서 작성 및 파기되고(즉 '임시' 오브젝트) 해당 오브젝트는 오퍼레이션에서 로컬로 간주됩니다.
그러나 클래스 "수명" 초반에 이러한 결정을 내리기는 너무 이릅니다. 제대로 된 결정을 내리기 위해 필요한 정보가 부족합니다. 결과적으로 분석 시 연관 및 집계를 작성하여 두 개 클래스 오브젝트에서 송신되는 모든
메시지를 표시(및 "전송")합니다. (특별한 연관 형식인 집계는 오브젝트가 "전체/파트" 관계에 참여함을 나타냅니다(기법: 연관 및 기법: 집계 참조).)
해당 연관 및 집계는 타스크: 클래스 디자인에서 정제됩니다.
각 클래스에 대해, 각 클래스가 기타 클래스에 대해 갖는 연관을 표시하는 클래스 다이어그램을 그리십시오.
주문 입력 시스템 파트에 대한 분석 클래스 다이어그램 예제
유스 케이스 실현에 필요한 연관에만 초점을 맞추십시오. 상호작용 다이어그램을 기반으로 필요하지 않은 이상, 있을 "수도" 있는 연관은 추가하지 마십시오.
연관 역할 이름 및 다중성을 지정하십시오.
-
역할 이름은 연관 오브젝트와 관련하여 연관된 오브젝트가 수행하는 역할을 표시하는 명사여야 합니다.
-
명확한 증거가 있지 않은 이상 다중성을 0..*(0에서 다수)으로 가정하십시오. 다중성 0은 연관이 선택적임을 의미합니다. 오브젝트가 없는 경우 연관을 사용하는 오퍼레이션을 알맞게 조정해야 합니다.
-
다중성의 범위를 더 제한할 수 있습니다(예: 3..8).
-
다중성 범위에서 확률이 지정됩니다. 즉, 다중성이 0..*인 경우 85%의 경우가 10 - 20 사이에 있을 것으로 예상됩니다. 이 정보는 디자인 시 매우 중요하므로 적어 두십시오. 예를 들어 지속적
저장영역이 관계형 데이터베이스를 사용하여 구현되는 경우, 한계를 더 좁히면 데이터베이스 테이블 구성에 더 많은 도움이 됩니다.
연관의 간략한 설명을 입력하여 연관이 사용되는 방법 또는 연관에서 표시하는 관계를 표시하십시오.
오브젝트는 때때로 몇몇 "대상" 오브젝트에서 이벤트가 발생하는 경우 "대상"에서 이벤트 발생 시 알림을 수신해야 하는 모든 오브젝트를 알 필요 없이 이를 인식해야 합니다. 해당 이벤트 알림 종속성을 간단히 표시하기
위해 등록 연관을 통해 압축된 간결한 방식으로 종속성을 표현할 수 있습니다.
두 오브젝트 간의 등록 연관은 등록된 오브젝트에서 특정 이벤트가 발생할 때 이를 등록 오브젝트에게 알림을 표시합니다. 등록 연관에는 등록자에게 알림이 송신되는 이벤트를 정의하는 조건이 포함됩니다.
자세한 정보는 기법: 등록 연관을 참조하십시오.
등록 연관은 특정 속성 또는 오퍼레이션이 아닌 추상 특성으로 표현되어야 합니다. 이렇게 하면 연관 오브젝트가 변경될 수 있는 연관된 엔티티 오브젝트의 컨텐츠와 무관하게 보존됩니다.
등록 연관은 다음과 같은 경우에 필요합니다.
-
오브젝트가 다른 오브젝트에서 발생한 상황에 영향을 받은 경우
-
이벤트 처리를 위해 새 오브젝트를 작성해야 하는 경우(예: 오류가 발생하면 새 창을 열어 사용자에게 알려주는 경우)
-
다른 오브젝트의 인스턴스화, 변경 또는 파기 시 이를 오브젝트에서 인식해야 하는 경우
'등록되는' 오브젝트는 일반적으로 엔티티 오브젝트입니다. 엔티티 오브젝트는 일반적으로 정보의 수동 스토어로 정보 저장 책임과 연관된 동작이 포함됩니다. 다른 많은 오브젝트는 엔티티 오브젝트가 변경되는 시기를 알아야
합니다. 등록 연관으로 엔티티 오브젝트가 모든 기타 오브젝트를 인식할 필요가 없게 됩니다. 단순히 엔티티 오브젝트에 연관되어 엔티티 오브젝트가 변경되면 알림을 수신하게 됩니다.
지금까지는 단지 '분석 기술'만 다루었으며, 디자인 시 알림 작동 방법을 명확히 정의해야 합니다. 알림 프레임워크를 구매하거나 자체적으로 디자인하고 빌드해야 합니다. 그러나 현재는 알림이 있음을 아는 것만으로도
충분합니다.
연관의 방향은 등록 오브젝트만이 두 오브젝트 사이의 관계를 인식함을 보여줍니다. 등록 설명은 전적으로 등록 오브젝트 내에 있습니다. 연관된 엔티티 오브젝트는 일반적인 방식으로 차례로 정의되며, 기타 오브젝트가 해당
활동에 관심이 있을 수 있음을 고려하지 않아도 됩니다. 이는 또한 등록하는 오브젝트를 변경하지 않고도 등록 오브젝트를 모델에 추가하거나 모델에서 제거할 수 있음을 의미합니다.
|