2014-11-26 9 views
10

UML과 관련하여 질문이 있습니다. 나는 private 접근 수정자를 갖는 내부 클래스를 단순히 포함하는 클래스를 가지고있다 - 다른 곳에서는 접근 할 수 없다 ... 보통 내부 클래스 관계를 표현하기 위해서 여기 (InnerOddIterator)와 같은 (+) 관계를 사용할 수있다 :UML 다이어그램의 개인 중첩 Java 클래스

( http://www.uml-diagrams.org/nested-classifier.html에서 촬영)

enter image description here

난 아무데도이 클래스가 비공개라는 것을 강조하고 명확하게 할 수있는 방법에 대한 정보를 발견하지 않았습니다. 그런 방법이 존재하는지 아십니까? 네가 여기에 뭔가 링크를 해준 것에 대해 고맙게 여길 것입니까? 모든

public class DataStrucure { 
    // fields, methods, etc 
    private class InnerOddIterator{ 
      // ... 
    }; 
} 
+0

http://www.uml-diagrams.org/package-diagrams.html#package-import의 "private import"도 참조하십시오. – xmojmr

+0

이 클래스가 비공개임을 분명하게 강조하는 것이 중요하다고 생각되면 고정 관념 (예 : <). 당신은 단순히 당신의 고정 관념이 의미하는 바를 기록하고 있습니다. 스테레오 타입은 UML 사양을 확장하는 "공식적인"방법이며 때로는 놓치기 쉬운 점에 대해 누구나 UML을 사용하여 원하는대로 UML을 확장 할 수 있습니다. 일부 고정 관념 (예 : <>)이 일반적인 용도로 길을 찾았다 고해서 이것이 변하지 않습니다. – BobRodes

+1

자세한 내용은 [이 게시물] (http://stackoverflow.com/questions/27797531/how-to-represent-the-nested-class-of-c-in-uml/27810986#27810986)을 참조하십시오. – BobRodes

답변

2

첫째 :

그냥 분명 샘플 코드를 일을 유지 당신은 UML 표현을위한 코드에서 뭔가 질문이있다. 그러나 IMHO, 다른 방식으로 살펴보아야합니다. UML 아이디어를 어떻게 코드로 표현할 수 있습니까? (일부 프로그래밍 언어는 개인 중첩 클래스도 제공하지 않습니다 ...).

개인 중첩 클래스의 경우 : 구성을 사용하는 것이 좋습니다. 연관성은 강하지 만 상속만큼 강력하지는 않습니다. 그리고 구성된 클래스는 작곡가 없이는 존재할 수 없습니다. 꽤 정확하게 private 중첩 클래스.

이 도면은 http://www.uml-diagrams.org/association.html에서 가져옵니다 : 이 enter image description here

+0

"일부 프로그래밍 언어는 개인 중첩 클래스도 제공하지 않습니다."- 좋은 지적, 올바른 ...좀 더 구체적으로 자바 태그를 추가했습니다. –

+0

중첩 된 내부 클래스 인 자바 인스턴스에서 외부 인스턴스에 액세스하는 데 'this'를 사용할 수 있습니다. 궁극적으로 함께 바인딩됩니다. 외부 인스턴스 없이는 존재할 수 없습니다. IMHO와 마찬가지로 그것은 정확히 하나의 구성입니다. –

+0

그런데 C#에서는 그런식이 아닙니다. 외부 인스턴스에 대한 자동 바인딩이 없습니다 ... –

0

당신의 내면의 클래스는, 나를 위해 사용하는 최고 privete임을 표시하기 위해 - 문자,이 경우에는 아래에 있지만, 물론 묘사 된 것처럼 당신이 그리워 내부 클래스의 내부 구조. enter image description here

4

UML 관점. Classifier (Class도)가 다른 클래스에 중첩되어있는 경우 중첩 클래스는 네임 스페이스 역할을 수행합니다. 이 경우 중첩 클래스는 컨텍스트 네임 스페이스에서 숨겨집니다 (비공개). 즉, 귀하의 다이어그램은 암묵적으로 개인 내부 클래스 정의를 정의합니다. 여기

은 UML 선루 부 structred 분류의 정의의 일부분이다. 분류의 클래스 등의 범위 내에서 정의 분류기의 다양한 종류에 대한 네임 스페이스

"A 클래스 동작 겹치기의 시야를 제한 분류자를 포함하는 클래스의 네임 스페이스의 범위 내에 포함하고 정보 숨기기의 이유 에 사용됩니다. 중첩 된 분류기는 포함하는 클래스의 다른 분류 자처럼 사용됩니다. "

+0

흥미로운 정보 비트입니다. – BobRodes

+0

나는 이것을 조금 더 공부 해왔다. OP 다이어그램의 "앵커"표기법은 1.4에서는 지정되었지만 2.x에서는 지정되지 않았습니다. 네임 스페이스 메타 모델을 조금 분석했는데, 포함 된 클래스에 네임 스페이스 속성을 넣고, 포함하는 클래스의 연결 끝 부분에 composition diamond를 놓고, {subsets 네임 스페이스} 속성을 중첩 된 클래스 끝. subsets 속성은이 견적에서 설명하는 가시성을 구현합니다. 자세한 내용은 [this] (http://stackoverflow.com/questions/27797531/how-to-represent-the-nested-class-of-c-in-uml/27810986#27810986)를 참조하십시오. – BobRodes