UML veze sa primerima
Objedinjeni jezik za modelovanje (eng. Unified Modeling Language) je standard u softverskom inženjerstvu za vizuelizaciju objektnog modela.
Asocijacija
Veza koja kaže da objekat sadrži referencu drugog objekta.
U ovom primeru znači da klasa Automibil
sadži instancu (referencu) klase Putnik
. Ovaj tip veze je slab. Objekti mogu da žive nezavisno od veze.
Primer koda:
public class Automobil {
private Putnik putnik;
public void setPutni(Putnik p) {
this.putnik = p;
}
public Putnik getPutnik() { return putnik; }
}
Agregacija
Agregacija je slična asocijaciji, ustavri agregacija je specijalan slučaj asocijacije. Takođe ovaj tip veze je slab i objekti mogu da postoje nezavisno. Međutim ovde su objekti važan deo objekta koji ih agregira.
U ovom primeru znači da klasa Automobil
sadrži više instanci klase Guma
.
Primer koda:
public class Automobil {
private ArrayList<Guma> gume;
public void setGuma(Guma g) {
gume.add(g);
}
public ArrayList<Guma> getGume() {
return gume;
}
}
Dijaman na strani klase znači da ona agregira (sadrži) drugu klasu. Veza se kreira tako što se vuče od strane koju hoćemo da agregiramo do strane koja agregira.
Kompozicija
Kompozicija je takođe specijalan slučaj asocijacije. Dok su agregacija i asocijacija slabi tipovi, kompozicija je jak tip veze. Objekti klase koja je agregirana ne mogu postojati ako ne postoji objekat klase koja ih agregira.
U ovom primeru znači da se klasa Automobil
sačinjena od Šasije. Ako se automobil obriše briše se i šasija zato što šasija bez automobila ne postoji. Automobil je dužan da napravi šasiju.
Primer koda:
public class Automobil {
private Sasija sasija;
public Automobil() {
this.sasija = new Sasija();
}
}
Ovde je jaka veza ilustrovana tako što se prilikom konstrukcije objekta, kreira i šasija koja se vezuje za automobil.
Generalizacija
Generalizacija ili specijalizacija je verovatno najjednostavniji tip veze u UML-u, zato što generalizacija predstavlja ono što je u objektno orijentisanom programiranju poznato kao nasleđivanje.
U ovom primeru klase Limuzina
, Karavan
, Hatchback
nasleđuju klasu Automobil
Primer koda:
public class Limuzina extends Automobil {}
public class Karavan extends Automobil {}
public class Hatchback extends Automobil {}
Realizacija
Realizacija ili apstraktna generalizacija je isto što i generalicazija samo što se nasleđuje apstraktna klasa (interfejs).
U ovom primeru IFabrika
je interfejs i implementiraju ga klase Fabrika Zastava
i Fabrika Fiat
.
Primer koda:
public interface IFabrika {}
public class Fabrika_Zastava implements IFabrika {}
public class Fabrika_Fiat implements IFabrika {}