Poate o diagramă de clasă UML să arate două relații diferite între două clase? (Inginerie software, Uml, Diagrame, Diagramă De Clasă)

Shahzad a intrebat.
a intrebat.

Am o clasă care are o clasă interioară (imbricata). Am arătat această relație între cele două clase în diagrama de clasă. Cu toate acestea, utilizez, de asemenea, clasa interioară în interiorul clasei exterioare… arăt o altă relație pentru acest lucru sau este suficientă relația de conținere?

Comentarii

  • Care este rostul clasei interioare dacă o altă clasă din afara clasei părinte o apelează? Dacă alte clase apelează la clasa ta interioară, ar trebui să faci din clasa interioară o clasă proprie, deoarece părintele acestei clase nu este singurul care vorbește cu ea. –  > Por Luminous.
  • @Luminous Scuze, am vrut să spun că clasa interioară este utilizată în clasa exterioară.  > Por Shahzad.
2 răspunsuri
Luminous

Aș spune că nu. Nu trebuie să specificați o altă relație.

Clasele interioare AFAIK sunt implicite pentru a fi utilizate de containerul lor. De aceea sunt o clasă interioară. Nimeni altcineva nu trebuie să știe despre această clasă și nimeni nu are o utilizare pentru ea. Această clasă interioară este separată de obiectul care o conține, deoarece este diferită de obiectul care o conține, dar containerul are o nevoie explicită de această clasă și numai acest obiect are această nevoie. Prin urmare, specificarea unei relații între clasa care conține și clasa interioară este suficientă pentru a implica în mod inerent că aceste două clase comunică între ele.

În cazul în care clasa container și clasa interioară NU ar comunica între ele sau, mai rău, un alt obiect ar apela direct la clasa interioară, ar arăta un viciu clar de proiectare în cazul în care această clasă ar fi o clasă interioară, deoarece scopul său de proiectare de a fi o clasă interioară nu ar fi îndeplinit corect.

Dacă ați dori să mergeți mai departe în proiectare, la un moment dat ați specifica modul în care clasa care conține clasa interioară și nu ați specifica doar că recipientul folosește această clasă interioară.

J. Lenthe

Adus de la Ghidul de utilizare a limbajului de modelare unificat (Booch, Rumbaugh, Jacobson) asociere este „o relație structurală care descrie un set de legături, în care o legătură este o conexiune între obiecte”.

Agregare este „o formă specială de asociere care specifică o relație întreg-partea între agregat (întregul) și o componentă (partea)”.

În cele din urmă, utilizare este „o dependență în care un element (clientul) necesită prezența unui alt element (furnizorul) pentru funcționarea sau implementarea sa corectă.”

Având în vedere acest lucru, agregarea implică utilizarea, astfel încât nu este necesar să o descriem separat pentru o relație de clasă interioară.

Comentarii

  • O clasă interioară nu este o agregare a clasei exterioare, astfel încât raționamentul dumneavoastră este lipsit de formă. –  > Por Pete Kirkham.