UML에서지도 클래스 멤버를 어떻게 대표 할 수 있습니까?
문제
지도 멤버가있는 클래스가있을 때는 맵 자체를 나타내는 별도의 클래스/인터페이스 객체를 그리고 싶지 않지만 맵을 복잡한 것이 아니라 기본 유형 인 것처럼 취급하는 것을 선호합니다. 물체.
다음 예를 고려하십시오
public class IndexManagerImpl implements IndexManager {
/* ... */
private static Map<Searcher, Integer> searcherCache;
}
나는 그 사실을 강조하고 싶습니다 IndexManagerImpl
(간접적으로) 참조를 유지합니다 Searcher
인스턴스. 표현이 searcherCache
.
해결책
Martin에 동의하지 않는다 ... Map은 모든 컴퓨터 졸업 과정에서 배우는 기본 데이터 구조입니다! 그것은 대부분의 현대 언어로 진행되며 분석가에게 중요한 설계 리소스입니다. 일부 상황에서는지도가 연관성으로 그려 질 수 있지만 어떤 종류의 확장 (고정 관념)이 필요하거나 템플릿 클래스를 정의 할 수 있습니다. 나는 템플릿 접근법이 마음에 들지 않습니다. 그것은 주요 플레이어의 협회를 숨 깁니다. 마지막 리소스는 Association Class입니다. Association Class는 속성과 NXN 관계를 정의하는 데 사용되는 특수 UML 클래스 인 Association Class입니다. "Integer"필드는 IndexManager와 관련된 검색 자의 카운터입니다. 또한 코드로 관계의 다른 쪽을 볼 수 없으며 UML은 양측, 탐색 문제 등을 표시하도록 설계되었습니다.
다른 팁
실제로 수집 객체는 두 클래스 사이의 일대일 연관성을 나타냅니다. 따라서 Diagram에 Searcher 클래스와 일대일 연관성이있는 IndexManagerImpl 클래스가 있어야합니다.
맵은 컬렉션과 다른 속성을 가지고 있으므로 컬렉션으로 간주 될 수 없습니다. 실제로 맵은 특정 (매핑) 관계가있는 여러 개의 컬렉션입니다. 내 견해에서지도를 나타내는 것은 요구 사항에 크게 의존하며 요구 사항에 따라 여러 맵 UML 표현이있을 수 있습니다. 따라서 간단한 형태의 맵 관계는 표현 될 수 있으며, 하나 내지 많은 연관성과 키 세트 요소와 하나의 키 요소와 하나의 연관성 요소와의 연관성. 핵심 요소와 값 요소가 원래 요소와 연결되지 않기 때문에 원래 요소로의 포장지 인 경우.
도움이 되었기를 바랍니다....