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.

asocijacija

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.

agregacija

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.

kompozicija

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.

generalizacija

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).

realizacija

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 {}