In a class diagram, is there a way of specifying that a class is an internal class of another class ?
Or is it considered as a pure implementation choice ?
In a class diagram, is there a way of specifying that a class is an internal class of another class ?
Or is it considered as a pure implementation choice ?
For this kind of thing you have separate Diagrams showing the internal structure or processing of a class.
usually, those extra diagrams are activity diagrams to show processing. Sometimes one per method. You might also have an internal sequence diagram showing the API interactions.
No reason you can't have an additional class diagram to show internal structure of a class.
Since UML isn't supposed to be directly implementation specific, I'd use a naming convention, such as:
OuterClass vs OuterClass::InnerClass
I would imagine if you're hoping to reverse-engineer or code-generate to/from UML that different tools would us different techniques (if they support it at all).
A quick test of some reverse engineering using Enterprise Architect (EA v7) confirms that they use the above InnerClass::OuterClass
syntax when processing some C# with a public inner class.
Consider using a nesting relationship (a line with a '+' in a circle at the parent end).
Or you can show the inner class fully enclosed by the outer class, one rectangle inside another.