🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.objects
8 messages
8 total messages Started by Tomecki Sun, 03 Dec 2006 01:08
UML Diagram klasy -agregacja
#15678
Author: Tomecki
Date: Sun, 03 Dec 2006 01:08
10 lines
1613 bytes
Witam,
Zaczynam dopiero przygodę z UML i mam pytanie na które nie
doszukałem się odpowiedzi jasnej. chodzi mi o diagram klas.
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. A gdy zastosowałem obie te formy miałem i
wskaźnik i obiekt.
Re: UML Diagram klasy -agregacja
#15679
Author: lll
Date: Thu, 04 Jan 2007 10:44
37 lines
1987 bytes
Tomecki napisał(a):
> Witam,
> Zaczynam dopiero przygodę z UML i mam pytanie na które nie
> doszukałem się odpowiedzi jasnej. chodzi mi o diagram klas.
> 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. A gdy zastosowałem obie te formy miałem i
> wskaźnik i obiekt.
> 
wydaje mi sie, ze to zalezy od notacji. W wielu ksiazkach spotkalem sie
z "polaczonym" zapisem jaki opisujesz. Jest wiec i wskaznik 
(strzaleczka) i znajduje sie dana klasa na liscie atrybutow.

przyklad:

IInterface
{
	void A();
}

abstract class Abs
{
	IInterface i = null;
}
rysunek:

+---------+
|Abs      |
|---------+
|IInteface|---------->[IInteface]
+---------+

Pozdrawiam,
L.
Re: UML Diagram klasy -agregacja
#15680
Author: lll
Date: Thu, 04 Jan 2007 10:46
10 lines
1108 bytes
oczywiscie musialem zjesc "i"

+-----------+
|Abs        |
|-----------+
|IInteface i|-------------->[IInterface]
+-----------+

Pozdrawiam,
L.
Re: UML Diagram klasy -agregacja
#15683
Author: Adam Przybylek
Date: Fri, 05 Jan 2007 07:37
15 lines
1369 bytes
lll napisał(a):
> wydaje mi sie, ze to zalezy od notacji. W wielu ksiazkach spotkalem sie
> z "polaczonym" zapisem jaki opisujesz. 

To nie jest zaden "polaczony" zapis tylko zupelnie inna sytuacja.

> Jest wiec i wskaznik 
> (strzaleczka) i znajduje sie dana klasa na liscie atrybutow.
> [...]

Ta strzaleczka w Twoim przykladzie nie oznacza asocjacji tylko mowi, ze 
klasa Abs implementuje interfejs IInterface.

Pozdrawiam,
Adam
Re: UML Diagram klasy -agregacja
#15684
Author: lll
Date: Sat, 06 Jan 2007 06:38
23 lines
1508 bytes
> To nie jest zaden "polaczony" zapis tylko zupelnie inna sytuacja.
> 
>> Jest wiec i wskaznik (strzaleczka) i znajduje sie dana klasa na liscie 
>> atrybutow.
>> [...]
> 
> Ta strzaleczka w Twoim przykladzie nie oznacza asocjacji tylko mowi, ze 
> klasa Abs implementuje interfejs IInterface.
> 
nie prawda :)
implementuje: - - - - - |>
dziedziczy: ------------|>
agreguje: -------------->

jesli masz ksiazke "head first design patterns", to zobacz
np. na strone 54

pozdr.
L.

> Pozdrawiam,
> Adam
Re: UML Diagram klasy -agregacja
#15681
Author: Mariusz Lotko
Date: Sat, 06 Jan 2007 10:13
46 lines
2070 bytes
lll@lll.pl wrote:

> 
>> To nie jest zaden "polaczony" zapis tylko zupelnie inna sytuacja.
>> 
>>> Jest wiec i wskaznik (strzaleczka) i znajduje sie dana klasa na liscie
>>> atrybutow.
>>> [...]
>> 
>> Ta strzaleczka w Twoim przykladzie nie oznacza asocjacji tylko mowi, ze
>> klasa Abs implementuje interfejs IInterface.
>> 
> nie prawda :)
> implementuje: - - - - - |>

OK

> dziedziczy: ------------|>

OK, choc rozumiem nieporozumienie: klopoty z konwersja ciaglej linii na
ASCII ;-)

> agreguje: -------------->

ZALEZY!!!
A ----> B
Obiekty klasy A zaleza (maja w swoim interfejsie, np. jako parametry
wywolan!) od obiektow klasy B.

Agregacja to
A <>---------- B
Obiekty klasy B naleza do obiektow klasy A. Celowo pisze "obiektow klasy A",
bo to agregacja dzielona. Agregacja kompozycyjna (nie wiem jak
przetlumaczyc "composite agregation") zaznacza sie wypelnionym
rombem, ktory trudno w ASCII przedstawic.

> 
> jesli masz ksiazke "head first design patterns", to zobacz
> np. na strone 54

Jesli niczego nie pomieszales i jest tam napisane tak jak Ty piszesz, to
radze te ksiazke... odpuscic.


-- 
Mariusz Lotko
Re: UML Diagram klasy -agregacja
#15685
Author: SasQ
Date: Thu, 22 Feb 2007 19:22
15 lines
1487 bytes
Dnia Sat, 06 Jan 2007 11:13:41 +0100, Mariusz Lotko napisał(a):

> Agregacja kompozycyjna (nie wiem jak przetlumaczyc
> "composite agregation")

Może "agregacja złożeniowa" albo "agregacja poprzez zawieranie"?
Konkretnie to ja bym po prostu powiedział "zawieranie" ;) [jako
szczególny przypadek agregacji].

> zaznacza sie wypelnionym rombem, ktory trudno w ASCII przedstawic.

Może tak?:  <#>----

-- 
SasQ
Re: UML Diagram klasy -agregacja
#15687
Author: SasQ
Date: Thu, 22 Feb 2007 19:46
40 lines
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
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads