Kihagyás

Object relations

Objektum-kapcsolatok Java-ban


1. Öröklés (Inheritance) — is-a

Az alosztály egy fajtája az ősosztálynak. Viselkedést és állapotot örököl, de specializálhatja azt.

Használd, ha az alosztály valóban is-a viszonyban áll az őssel — nem csak kényelemből.

class Animal {
    void breathe() { System.out.println("breathing"); }
}

class Dog extends Animal {
    void bark() { System.out.println("woof"); }
}
// Dog IS-A Animal

Hátrány: szoros csatolás, törékeny bázisosztály probléma.


2. Kompozíció (Composition) — part-of / has-a (erős)

Az objektum részét képezi egy másik objektumnak, és nem létezhet önállóan — az életciklusuk össze van kötve. Ha az egész megszűnik, a rész is megszűnik.

Preferált az örökléssel szemben, ha a cél viselkedés-újrafelhasználás.

class Heart {
    void beat() { System.out.println("lub-dub"); }
}

class Human {
    private final Heart heart = new Heart(); // szív nem létezik ember nélkül

    void live() { heart.beat(); }
}
// Heart IS PART-OF Human

3. Aggregáció (Aggregation) — has-a (gyenge)

Az objektum tartalmaz / irányít más objektumokat, de azok önállóan is létezhetnek — az életciklusuk független. Jellemzően egy 1..* jellegű, gyenge tulajdonlási viszony.

class Player { String name; }

class Team {
    private List<Player> players; // Team tudja ki van benne
    // Player nem tud a Team-ről
}
// Team HAS-A Players, de a Player-ek nem szűnnek meg a Team-mal

4. Asszociáció (Association) — „ismeri egymást"

Két objektum kapcsolatban áll egymással, de sem életciklus-függőség, sem tulajdonlás nincs köztük. Tipikusan many-to-many, laza, egyenrangú viszony — egyik fél sem „tartalmazza" a másikat.

class Doctor {
    private List<Patient> patients; // ismeri a pácienseket
}

class Patient {
    private Doctor doctor; // ismeri az orvosát
}
// Kétirányú asszociáció — egyik sem tulajdonosa a másiknak
// Egy orvosnak több páciens, egy páciensnek több orvos is lehet

Összefoglalás

Kapcsolat Viszony Életciklus-függőség Tipikus multiplicitás
Öröklés is-a Szoros
Kompozíció part-of / has-a Erős (össze van kötve) whole → part
Aggregáció has-a Gyenge (független) 10..*
Asszociáció „ismeri egymást" Nincs **