Back to site
Since 2004, our University project has become the Internet's most widespread web hosting directory. Here we like to talk a lot about web development, networking and server security. It is, after all, our expertise. To make things better we've launched this science section with the free access to educational resources and important scientific material translated to different languages.

De asociere, agregare şi Compoziţie

Source: http://ootips.org/uml-hasa.html

Sursa: comp.object 
Data: 10-Jun-98

Site-uri similare


------------------------------

o-< Problemă: UML are relaţii mai multe (de asociere, agregare şi compoziţie), care par să însemne acelaşi lucru:. "are un" 
Deci, ce este diferenţa dintre ele?


---------------

o-< Robert C. Martin a explicat:

Asociaţia reprezintă capacitatea de o instanţă pentru a trimite un mesaj la un alt exemplu. Aceasta este de obicei pusă în aplicare cu un pointer sau variabilă de referinţă exemplu, deşi ar putea fi, de asemenea, puse în aplicare ca un argument metodă, sau crearea unei variabile locale.

[Exemplu:]

[Example:]
|A|----------->|B|

class A
{
  private:
    B* itsB;
};
Agregarea [...] este tipic întreg / parte relaţie. Aceasta este exact la fel ca o asociere cu excepţia faptului că instanţele nu pot avea relaţii ciclice agregare (de exemplu, o parte nu poate conţine ansamblul său).

[Exemplu:]

|Node|<>-------->|Node|

class Node
{
  private:
    vector<Node*> itsNodes;
};
Faptul că acest lucru este de agregare înseamnă că instanţele de nod nu poate forma un ciclu. Astfel, acesta este un copac de noduri nu un grafic de noduri.

Compoziţie [...] este exact ca agregare, cu excepţia că durata de viaţă a "parte" este controlată de "întreg". Acest control poate fi directă sau tranzitive. Aceasta este, "întregi" pot să îşi asume responsabilitatea directă pentru crearea sau distrugerea "parte", sau se poate accepta o parte deja create, iar mai târziu treci pe la unele întregi alte îşi asumă responsabilitatea pentru ea.

[Exemplu:]

|Car|<#>-------->|Carburetor|

class Car
{
  public:
    virtual ~Car() {delete itsCarb;}
  private:
    Carburetor* itsCarb
};


------------------------------

o-< Mai multe informaţii:

Rational, UML Notaţii Ghidul

Martin Fowler, Kendall Scott şi Ivar Jacobson, UML distilată

Published (Last edited): 14-12-2011 , source: http://ootips.org/uml-hasa.html