Article View: pl.comp.objects
Article #15687Re: UML Diagram klasy -agregacja
From: SasQ
Date: Thu, 22 Feb 2007 19:46
Date: Thu, 22 Feb 2007 19:46
40 lines
3089 bytes
3089 bytes
Dnia Sat, 02 Dec 2006 17:08:07 -0800, Tomecki napisał(a): > Załóżmy że mam dwie klasy A i B. klasa A zawiera jako > atrybut obiekt klasy B. I teraz czy powinienem taki obiekt > wpisać na listę atrybutów klasy A, czy też powiązać je za > pomocą agregacji. Cały czas myślałem że to drugie. Ale z >ciekawości wygenerowałem sobie kod w C++ i zamiast mieć >obiektu w klasy B w klasie A miałem jedynie wskaźnik do niego. Jeśli masz problemy z rozróżnieniem co jest agregacją, a co kompozycją [zawieraniem, składaniem się z...], to pomóc może zastanowienie się, czy czas życia obiektów klasy B zależy jakoś od czasu życia obiektów klasy A. Jeśli obiekty klasy B mogą istnieć "samodzielnie", nawet przed utworzeniem obiektów klasy A, lub po jej zniszczeniu, to używasz agregacji [wskaźnik, referencja, oznaczana pustym rombem <>---- na diagramach UML]. Jeśli czas życia obiektów klasy B jest związany z czasem życia obiektów klasy A, to masz do czynienia z zawieraniem [composition] i wtedy obiekt klasy B jest "wbudowany" w obiekt klasy A [oznacza się to zapełnionym rombem <#>---- na diagramach UML ;)]. Przykładowo obiekt klasy ZespółProgramistów agreguje w sobie grupę obiektów klasy Programista ;) Obiekty klasy Programista składają się więc na obiekt klasy ZespółProgramistów, ale jest to agregacja, bo ZespółProgramistów może się rozpaść, ale jego składowi Programiści nadal istnieją i mogą utworzyć inny ZespółProgramistów ;) W dodatku jeden Programista może być częścią kilku ZespołówProgramistów ;) co w przypadku kompozycji [zawierania] nie jest możliwe. Z kolei obiekt klasy Samochód jest kompozycją dwóch obiektów klasy Koło, jednego lub więcej obiektów klasy Silnik, obiektu klasy Kierownica itp. ;) Są one jego integralnymi częsciami i jeśli puścisz samochód z dymem, to spłonie jako całość, wraz z obiektami składowymi ;) W dodatku jedno Koło nie może być częścią składową kilku Samochodów, jak mogłoby to mieć miejsce w przypadku agregacji ;) -- SasQ
Technical Details
Message-ID:
<pan.2007.02.22.19.46.27.682224@go2.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!mat.uni.torun.pl!news.man.torun.pl!newsfeed.pionier.net.pl!news.nask.pl!news.nask.org.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mailReferences:
<1165108087.169324.56550@l12g2000cwl.googlegroups.com>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!mat.uni.torun.pl!news.man.torun.pl!newsfeed.pionier.net.pl!news.nask.pl!news.nask.org.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mail From: SasQ <sasq1@go2.pl> Newsgroups: pl.comp.objects Subject: Re: UML Diagram klasy -agregacja Date: Thu, 22 Feb 2007 20:46:28 +0100 Organization: Ganz Automyjnia (i przeróbki ;) Lines: 40 Message-ID: <pan.2007.02.22.19.46.27.682224@go2.pl> References: <1165108087.169324.56550@l12g2000cwl.googlegroups.com> Reply-To: sasq1@go2.pl NNTP-Posting-Host: ccs125.neoplus.adsl.tpnet.pl Mime-Version: 1.0 X-Trace: atlantis.news.tpi.pl 1172173599 24979 83.30.142.125 (22 Feb 2007 19:46:39 GMT) X-Complaints-To: usenet@tpi.pl NNTP-Posting-Date: Thu, 22 Feb 2007 19:46:39 +0000 (UTC) User-Agent: Pan/0.14.2 (This is not a psychotic episode. It's a cleansing moment of clarity.) Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit