Gyakorlati alapok III.

Az osztályok közötti kapcsolatok

 

Az objektumorientált programozás egyik fő jellegzetessége, hogy a futó kód az osztályokból úgynevezett példányosítással létrehozott, már saját memóriacímmel és további, a biztonságos futtatáshoz elengedhetetlenül fontos tulajdonságokkal felruházott objektumok közötti aktív kommunikáció (sok esetben üzenetküldés) eredménye.

 

www.informatika-programozas.hu - Ezt most meg kell tanulni!

 

Alapjában véve még értelme sincs olyan objektumorientált programnak, amelyben az objektumok között nincsenek kapcsolati pontok, azaz nem tudnak együttműködni egymással.

 

A kapcsolatok megléte tehát döntő fontosságú, módszertanilag nézve már csak az a kérdés, hogy ezek a kapcsolatok milyen jellegűek, azaz voltaképpen milyen szempontok szerint katalogizáljuk őket. A kapcsolatok jellegük szerint ötfélék lehetnek:

Általános jelleg

 

Ismertségi

A kapcsolat alapja azon ismeret, amely során legalább az egyik osztály (objektum) tud a másikról. Ennek legszemléletesebb példája a HTTP-protokoll működése, amelyben ha a kliens nem tud a szerver létezéséről, akkor nem is alakulhat ki közöttük kapcsolat. Ettől függetlenül önállóan is léteznek, azaz létük nem függ egy másik osztálytól-objektumtól, bár az említett példához visszatérve nincs sok értelme kliensek leprogramozásának, ha nem tudnak szerverekhez kapcsolódni.

 

Tartalmi

Ezen típusú kapcsolatban az osztályokból keletkezett objektumok egész-rész, másképpen fogalmazva halmaz-részhalmaz kapcsolatban állnak egymással. Ha a rész nem képes létezni az egész nélkül, erős tartalmazási kapcsolatként definiálható. Például:

Ha a rész képes létezni az egész nélkül is, gyenge tartalmazási kapcsolatként definiálható. Például:

Multiplicitás

 

A kapcsolatban résztvevő osztályok konkrét számát határozza meg. Nézzünk példákat szabványos, UML-alapú osztálydiagram-jelölésük szerint:

Fok

 

A kapcsolat mértékét határozza meg. 2 fokmérője van: egy és sok.

 

Egy-egy

Logikai párosításban 1 osztály kizárólag 1 osztállyal tud kapcsolódni. Például:

Egy-sok

Logikai párosításban 1 osztály több osztállyal is tud kapcsolódni. Például:

Sok-sok

Logikai párosításban több osztály több osztállyal is tud kapcsolódni. Például:

Irány

 

Az osztályok kapcsolódásának iránya azt jelenti, hogy a kapcsolódás 2 irányú-e vagy csak egyirányú. Az utóbbi esetben csakis az egyik osztály tud a másikról.

 

www.informatika-programozas.hu - Ezt most meg kell tanulni!

 

Az alapértelmezés nyilvánvalóan az egyirányú kapcsolat, hiszen kapcsolati irány nem is értelmezhető, ha nincs kapcsolódás.

 

Példák egyirányú kapcsolódásra:

Példák kétirányú kapcsolódásra:

Szerepnév

 

A szerepnév utal az osztály a kérdéses kapcsolat(ok)ban betöltött szerepére. Mivel ezt legtöbbször maga a programozó osztja ki, szigorúan be kell tartani az általános névkonvenciós szabályokat (Az adatok, metódusok elnevezésének problémái című fejezet). Például: