2013-08-07 10 views
5

Mi sono imbattuto nella seguente descrizione di IsRoot, IsAbstract & IsLeaf tuttavia non capisco quando li avresti usati.Quando vengono utilizzati IsRoot, IsAbstract e IsLeaf in UML?

Estratto dal http://www2.sys-con.com/itsg/virtualcd/dotnet/archives/0108/clark/index.htm:

Selezionando la casella di controllo IsRoot, si stanno limitando la classe di ereditare da altre classi. Controllo IsAbstract limita l'istanziazione della classe e costringe i client a creare un'istanza di una classe derivata per accedere alla funzionalità della classe. Il controllo IsLeaf indica che la classe è sigillata. Le classi sigillate non sono ereditabili e aiutano a limitare la profondità di una catena ereditaria.

mia comprensione

  1. IsRoot sembra suggerire che si tratta di una superclasse
  2. IsAbstract sembra suggerire che è una classe astratta
  3. IsLeaf è una classe che non può essere ereditata, ma può essere un'istanza .

Qualcuno può darmi un esempio del mondo reale di un modello che utilizza questi? Ad esempio, posso immaginare classe come "auto" che è una superclasse ed è astratta e sotto di essa potresti avere classi come "Volvo", "Chevrolet", ecc.

+0

Qualcuno sta ancora utilizzando UML formale? (oltre agli schizzi di design) –

+2

@Mitch Wheat - Sareste sorpresi soprattutto per l'architettura che si tratti di infrastruttura o software. Viene utilizzato anche per la modellazione aziendale. – PeanutsMonkey

+0

@PeanutsMonkey domanda molto buona – user2019510

risposta

7
  • isRoot non esiste più in UML2.In UML 1 significa (dalle specifiche):

isRoot: specifica se il GeneralizableElement è una radice GeneralizableElement senza antenati. True indica che è possibile che non abbia antenati, falso indica che potrebbe avere antenati (anche se in realtà non ha antenati al momento).

  • isAbstract significa che l'elemento è incompleto e non può essere istanziata.

Se fosse vero, il classificatore non fornisce una dichiarazione completa e in genere può non essere istanziato. Un classificatore astratto è destinato all'uso da parte di altri classificatori (ad esempio, come obiettivo di relazioni generali di metarelazione o di generalizzazione ). Il valore predefinito è falso.

  • isLeaf significa che non è possibile ridefinire l'elemento, stesso final in alcuni linguaggi di programmazione.

Indica se è possibile ridefinire ulteriormente una RedefinableElement. Se il valore è true, non è possibile ridefinire il valore RedefinableElement con . Il valore di default è falso.

+0

Grazie Xaelis. Puoi darmi alcuni esempi reali di dove potrei usare questi? – PeanutsMonkey

+2

Sì @PeanutsMonkey. Dimentica isRoot, non esiste più. Un veicolo è astratto, perché non puoi istanziarlo. Non conosci il suo tipo concreto. È una macchina, un autobus, una barca ..? IsLeaf è più una scelta di progettazione software. Diciamo che hai una classe TrustedUser e vuoi impedire a qualsiasi altro architetto di ridefinire questa classe per ereditarietà. Quindi si imposta la proprietà isLeaf come true. – Xaelis

2

Esempi non reali, ma collegamenti a alcuni.

  1. isRoot: penso che questo non è più parte di UML. Quell'articolo è del 2004, ovvero quando è uscito UML 2 e dubito che Visio l'abbia supportato. Potrebbe ancora non supportarlo.
  2. isAbstract: è una buona idea rendere astratte tutte le superclassi in modo che non sia possibile creare un'istanza che sia non un membro delle sottoclassi. Le classi sono essenzialmente insiemi di istanze. Che cosa significa per un'istanza essere membro di un superset e nessuno dei sottoinsiemi? Non è chiaro esattamente quale sia la classificazione di tale istanza e potrebbe inavvertitamente cambiare nel tempo. È anche consigliabile creare sottoclassi disjoint (non sovrapposte) e covering (tutte le sottoclassi note specificate). C'è più dettagli e un esempio di vita reale usando gli Avians in Lahman's book.
  3. isLeaf: in pratica impedisce alle persone di ignorare il codice. Non posso verificare this quotation, ma presumibilmente il The Unified Modeling Language Reference Manual dice:

    essere una foglia o di essere costretti a essere una foglia, non sono fondamentali proprietà semantiche, ma piuttosto i meccanismi di ingegneria del software al comportamento umano controllo.

Questo aiuto?

+0

Spiacente. È troppo vago. Sii buono per ottenere alcuni esempi reali in un diagramma. – PeanutsMonkey

+0

Hai guardato il libro di Lahman? Ha già messo un enorme lavoro nel fornire un esempio reale di (2). Ti ho anche dato un link dove puoi leggerlo gratuitamente. (1) è irrilevante. Cosa non è chiaro su (3)? –

+0

Jim L - Quello che non mi è chiaro è quando e come lo useresti (IsLeaf) in UML. – PeanutsMonkey

Problemi correlati