Note that there are some explanatory texts on larger screens.

plurals
  1. POhow do I restrict multiplicity and other properties in specialized classes using UML or class definitions
    text
    copied!<p>I am trying to create a UML class diagram and corresponding class definition (in, for example, C# or Java) where I have a generic hierarchy of relationships and one or more specialized classes that are based on that general relationship but constrain it.</p> <p>For example, say I have the following general UML relationships (pretend it looks like UML):</p> <pre><code>Router &lt;&gt; 1 | | * Card &lt;&gt; 1 | | * Port </code></pre> <p>(Read as: Router contains 1 or more cards and each card contains one or more ports)</p> <p>I then want to extend that and define a specialized class, for example CiscoRouter.</p> <pre><code>Router &lt;|---CiscoRouter </code></pre> <p>Furthermore, let's say a CiscoRouter can only have have 1..10 cards. Is there a way to define this restriction in the model? </p> <p>I could do something like the following:</p> <pre><code>Router &lt;|---CiscoRouter &lt;&gt; 1 &lt;&gt; 1 | | | * | Card ____________| &lt;&gt; 1 10 | | * Port </code></pre> <p>However, this would technically create two separate collections of Card objects, right? Any suggestions on how to best define this?</p> <p>Actual designs will probably be more complicated as we will need classes like Cisco7200Router, LinkSysRouter, etc. As well as custom Cards, Ports, etc. For example:</p> <pre><code>Router &lt;|---CiscoRouter &lt;&gt; 1 &lt;&gt; 1 | | | * | 10 Card &lt;|------CiscoCard &lt;&gt; 1 &lt;&gt; 1 | | | * | 4 Port &lt;|------CiscoPort </code></pre> <p>To add another complication, let's say that the Router has a property called Weight. However, in the CiscoRouter, we want to actually define that property to be a certain value, say 4 Lbs (e.g. our model somehow states that a CiscoRouter weighs 4 Lbs, has 10 cards, and each card has 4 ports). How do I define this?</p> <p>I know I can do a lot of this in code using abstract classes, methods, etc; but I want to know if there is any clean way to define as much of this as possible in the model or metadata so that I can generate some design documentation from it without executing anything.</p> <p>Thanks in advance,</p> <p>Dan</p>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload