Diagrami razredov

Do zdaj smo (v prejšnjih učnih enotah) spoznali diagrame objektov, ki prikazujejo lastnosti objektov in njihove vrednosti. Ti diagrami predstavljajo točno določen trenutek med izvajanjem programa, zato se med samim izvajanjem programa spreminjajo.

So tudi zelo podrobni; v nekaterih primerih celo preveč podrobni. Diagrami razredov so bolj splošne oziroma abstraktne predstavitve strukture programa. Namesto, da bi prikazovali posamezne objekte, prikazujejo razrede in relacije med njimi.

Obstaja več vrst relacij (oziroma razmerij) med razredi:

  • Objekti enega razreda lahko vsebujejo sklice na objekte drugega razreda. Na primer, vsak objekt Pravokotnik vsebuje sklic na objekt Tocka, in vsak objekt Komplet vsebuje sklice na več objektov Karta. Tako vrsto relacije oziroma razmerja imenujemo vsebuje (ang. has-a), kot »Pravokotnik vsebuje točko«.
  • En razred deduje od drugega razreda. Tako vrsto relacije oziroma razmerja imenujemo je (ang. is-a), kot »Igralec (oziroma karte v roki) je neke vrste komplet kart«.
  • En razred je odvisen od drugega razreda v smislu, da spremembe v enem razredu zahtevajo tudi spremembe v drugem razredu.


Diagram razredov (ang. class diagram) je grafična predstavitev teh relacij oziroma razmerij. Spodnja slika na primer prikazuje relacije med razredi Karta, Komplet in Igralec.

Puščica z votlim trikotnikom predstavlja relacijo je; v tem primeru označuje, da razred Igralec je neke vrste Komplet oziroma, da deduje od razreda Komplet.

Običajna puščica predstavlja relacijo vsebuje; v tem primeru objekt Komplet vsebuje sklice na objekte Karta.

Zvezdica poleg puščice je številčnost (ang. multiplicity); prikazuje koliko objektov Karta vsebuje objekt Komplet. Številčnost je lahko preprosto število, na primer 52, območje, na primer 5..7 ali zvezdica (*), ki označuje, da ima lahko komplet poljubno število kart.

Bolj podroben diagram lahko prikazuje, da objekt Komplet dejansko vsebuje tabelo objektov Karta, vendar vgrajenih tipov, kot sta na primer tabela in slovar, običajno ne vključimo v diagram.