2017-12-17 36 views
2

UML에서 구성 요소 개체가 복합 개체에 액세스 할 수있는 곳에서 집계를 그릴 수 있습니까? 이 이미지 에서처럼, 단 하나의 연관성 선을 가지고 있기 때문에, A를 만지는 연관성 끝은 다이아몬드와 화살표를 가질 것입니다. 그럴 수 없다면 내가 그린 그림이 유효합니까? 그렇지 않다면, 왜?같은 끝에서 집계 및 탐색 가능

답변

2

다른 견해로 탐색 가능성은 모델에서 탐색하는 것이 가능하고 인스턴스에 액세스하는 방법을 보여주는 것이 중요합니다.

또 다른 포인트는 OCL에 대한 것으로, 탐색 가능성이 정의되지 않으면 일부 OCL 쿼리는 작성하기 어려울 것입니다.

사양 설명 (198 페이지) : 탐색 가능성은 런타임에 링크에 참여하는 인스턴스 (연결 인스턴스)가 연결의 다른 끝 인스턴스에서 효율적으로 액세스 될 수 있음을 의미합니다. 이러한 효율적인 액세스가 이루어지는 정확한 메커니즘은 구현에 따라 다릅니다. 끝이 탐색 할 수없는 경우 다른 끝에서의 액세스가 가능하거나 불가능할 수 있으며, 가능하다면 효율적이지 않을 수 있습니다.

속성 클래스 (p149) : isNavigable() 쿼리는 속성을 탐색 할 수 있는지 여부를 나타냅니다. body : 분류 자 ​​-> isEmpty() 또는 association.navigableOwnedEnd-> includes (self).

따라서 모델을 탐색 할 수 있는지 여부는 중요합니다.

enter image description here

그러나의 specifiation 제 6

, 그것은 기록됩니다 : 당신이 양쪽에서 항행을 원한다면

다음 이미지가 보여줍니다

  • 연관 항해 화살표로 표시된 쪽이 어느 쪽도 아니더라도 협회가 양방향으로 항해 할 수 있음을 의미합니다.

  • 화살표 표기는 연결 종료 탐색을 나타 내기 위해 사용됩니다. 정의에 따라, 모든 클래스 소유의 협회 종단은 탐색 가능합니다. 관습에 따라 메타 모델의 모든 소유 유대 관계는 탐색 할 수 없습니다.

따라서 아래 스키마는 위의 스키마와 같습니다. 이것은 까다 롭지 만 사실입니다.

enter image description here

+0

미안하지만 그건 말도 안돼. 속성을 지정하면 해당 속성을 탐색 할 수 있음을 나타냅니다. –

+0

ples @kilian은 의심 할 여지없이 UML 사양 연결에서 탐색 할 수 있거나 탐색 할 수 없습니다. 그래서 이것은 말씨가 의미하는 바는이 부분에 대한 기술은 의미가 없다는 것입니다. 사양 문서의 일부를 복사했습니다. 따라서 UML의 경우 연결은 탐색 가능하거나 불가능하며 화살표가 필요합니다. 당신이 그것을 사용하지 않거나 이것이 중요하지 않다고 생각하면, 이것이 당신의 관점이고 그것이 될 수 있습니다. 그러나 UML의 경우 중요하며 모델이어야합니다. 마이너스 하나는 제발 제발 풀어 줄래? – granier

+0

그리고 언제나 그렇듯이 코드에서 모델을 번역 할 때 어떤 선택이 필요한지 궁금합니다. 하지만 이것은 또 다른 요지이며 사양 문서와 직접 관련이 없습니다. – granier

1

물론 가능합니다. 당신이 공간을 절약하려면

, 당신은 협회의 한 줄을 사용할 수 있습니다

enter image description here

을 여기에 항행에 대한 내 개인적인 의견입니다 : 탐색 화살표가 재산 owner의 존재로 필요하지 않습니다 이미 그것을 의미합니다. 사양의

P. 110 : 등록 정보가

ownedAttribute 통해 협회 이외의 급기가 소유

는 다음의 분류의 특성을 나타낸다.

P. 200 :

탐색 용이성 표기가 종종 탐색 끝이 것으로 가정 한 반면, 비 탐색 끝이 협회가 소유 한 것으로 가정하고, 이에 비공식 규칙에 따라 과거에 사용되었다 반대쪽 끝에있는 분류 자의 소유입니다. 이 규칙은 현재 사용되지 않습니다. 집계 유형, 탐색 가능성 및 최종 소유권은 별도의 개념으로 각기 고유 한 명시 표기법을 사용합니다. 협회가 소유 한 협회 종단은 항상 항해가 가능한 반면, 협회가 소유 한 협회 종단은 탐색 가능하거나 불가능할 수 있습니다.


그러나 단지 이름이 협회는 무엇인가? 지금까지 쓸모없는 구조입니다. 당신이 의도하는 것은 마침내 두 클래스에서 속성을 생성하는 것입니다.이 경우 특성을 사용하여이 새로운 점을 추가하십시오. 나에게 이것은 단순히 지나치게 건설되고 비실용적이다. 누가 그 점들을 정말로 사용하고 있습니까? EA에서는 하위 메뉴를 열어야합니다. 나 (그리고 아마 대부분의 UML 독자)를위한 역할 이름은 속성을 나타내며, 이것은 다른 측면의 속성이다. 그것은 그 제안 뒤에있는 "(내) 인간 논리"입니다. 그래서, 내 실용적인 접근 : 협회에 대한

  • 를 사용하여 간단한 커넥터
  • 결국 (비) 항행 (십자가) 화살표 나중에
  • 다른 쪽 끝에서 속성의 사용을 표시하는 역할 이름을 추가를 추가 (클래스 목록에 형식화 된 특성을 추가하는 대신).

그리고 그게 전부입니다. 그 바보 같은 점은 a) EA에서 생산하기가 어렵다는 점과 b) 인식하기가 더 어려워진 점을 잊어 버리는 것입니다.

다시 한번 말하면이 마지막 부분은 실제 모델링에 대한 권장 사항입니다.

+0

나는 granier의 대답을 받아 들였습니다. 당신이 말한 것은 저에게 충분했지만, 나는 화살표가 정말로 필요하지 않다는 것에 동의합니다. 원래는 같은 끝에 다이아몬드와 화살에 대해 물었습니다. 그의 다이어그램은 그것이 가능하다는 것을 보여줍니다. – klenium

+0

그래, 내 첫 질문은 화살에 대해 아무 말도하지 않는다. 그러나 그것은 내가 알고 싶었던 것이다. 이렇게 돼서 미안하다. – klenium

+1

@ 토마스 킬리언 : 손에있는 문제는 개인적인 견해가 아니며 "철학적"입니다. UML 사양에 따르면, 'owner'와 같은 연관 끝으로 정의 된 속성이 소유권 도트로 클래스 (반대쪽에있는)가 소유 한 속성으로 정의 된 경우에만 탐색 가능성이 암시됩니다. "owner"라는 이름을 사용했기 때문에 소유권이 이미 정의되어 있다고 생각할 수 있습니까? –