[ shima @ 31.03.2005. 19:01 ] @
Klasa Meteorites sadrzi Vektor individualMeteorites:

Code:
private Vector individualMeteorites = new Vector ();


U ovaj Vektor se u toku rada programa ubacuju individualni meteori:

Code:
individualMeteorites.add( meteoriteType1.getNewIndividualMeteorite(gamePanel) );


Code:
public IndividualMeteorite getNewIndividualMeteorite(GamePanel gamePanel)
{
        return new IndividualMeteorite( gamePanel, getRandomDefaultMeteorite(), 

getExplosionAudioClip(), rectShapeHeightPicturePercent );
}


Reverznim inzenjeringom automatski sam dobio dijagram klasa u RationalRose-u.
Kao sto se na slici moze videti na dijagramu se ne vidi logicka veza izmedju klasa Meteorites i IndividualMeteorite.
Posto ne znam UML, zanima me da li UML sadrzi sredstva (npr. dijagrame) pomocu kojih se lako moze videti logicka veza izmedju pomenutih klasa?
Manje bitno pitanje:
Koji su to dijagrami, kako bi izgledali za ovakvu vezu sa vektorom i kako se zovu odgovarajuce relacije (linije na takvim dijagramima)?
[ logotet @ 02.04.2005. 14:59 ] @
Taj tip "veze" se zove agregacija ili kompozicija, zavisno od toga da li članovi mogu postojati nezavisno od objekta koji ih sadrži.
Što se tiče grafičkog predstavljanja agregacije koristi se mali romb, a ako je ispunjen onda je u pitanju kompozicija. (Valjda zaključuješ da je kompozicija podvrsta agregacije, pa se negde koristi samo termin agregacija).
A kada je u pitanju klasa java.util.Vector, iako je ona među najpogodnijim načinima da se implementira agregacija, koliko mi je poznato ni bolji UML softveri od Rationala ne uspevaju da iz Vectora prikažu agregaciju (na class diajagramu).
[ StMilan @ 02.04.2005. 23:58 ] @
Problem je što Rose ne može da prepozna šta se nalazi u tom tvom Vectoru. To može biti bilo koji objekat tipa Object što se Rose-a tiče, pa zato i ne ume da prepozna tu asocijaciju. Kada bi recimo umesto vektora imao niz (mada to naravno nema mnogo smisla) tipa IndividualMeteorite[] tu bi verovatno reverznim inžinjeringom dobio dobar dijagram.
[ shima @ 04.04.2005. 11:55 ] @
Verzija softvera, Rational Rose, u kome je dobijen ovaj dijagram ne podrzava Javu 5.
A u Javi 5 imamo Vektore koji se u startu deklarisu da sadrze tacno odredjen tip objekata:
Code:
private Vector <IndividualMeteorite> individualMeteorites;

Ako neko zna ili je probao neku verziju UML softvera koji radi sa Javom 5 i nakon reverznog
inzenjeringa na dijagramu klasa prikazuje agregaciju preko ovih vektora molim vas javite o kom se
sftveru radi...
[ kobrejabre @ 05.04.2005. 15:11 ] @
Nema to veze sa tim da li on zna sta se nalazu u Vektoru (BTW, zasto uopste koristiti Vector kad postoji Collection) vec sa time da on ne moze znati da li je u pitanju agregacija ili obicna asocijacija. Razmislite i sami, te stvari se u Javi predstavljaju na isti nacin...
[ bobjan @ 06.04.2005. 11:42 ] @
Ma stvar je vrlo jednostavno objašnjiva.
U pitanu je agregacija, a tvoja klasa ima kao svoj agregirani deo jednu instancu klase Vector. I to je to.
Znam da klase kao Vector, String ... ne doživljamo kao klase, kada razmišljamo o modeliarnju, ali one to ipak jesu.
Ako bi u model uklučio i ceo JDK onda bi tvoja klasa Meteorites imala agregaciju ka Vector, a Vector ka IndividualMeteorite.
A to bi bio vrlo, vrlo nečitljiv model.
BTW TogetherJ koji volim mnogo više od Rationala agregaciju realizuje i prepoznaje kao niz(array). Naravno da je mnogo bolje raditi sa kolekcijom, ali kada ti niz odgovara, onda sve paše.