4.2. Specializáció és generalizáció

4.2.1. Specializáció

A specializáció az a folyamat, amelynek során egy egyedtípus alosztályainak egy halmazát definiáljuk; ezt az egyedtípust a specializáció szuperosztályának nevezzük. A specializációt alkotó alosztályok halmazát a szuperosztályban lévő egyedek valamilyen megkülönböztető jellemzője alapján definiáljuk. A {TITKÁR(NŐ), MÉRNÖK, TECHNIKUS} például a DOLGOZÓ szuperosztály egy olyan specializációja, amely a DOLGOZÓ egyedeket azok foglalkozása alapján különbözteti meg. Ugyanannak az egyedtípusnak számos specializációját adhatjuk meg, más-más megkülönböztető tulajdonságuk szerint. A DOLGOZÓ egyedtípus egy másik lehetséges specializációja például a {FIX_FIZETÉSŰ_DOLGOZÓ, ÓRABÉRES_DOLGOZÓ} alosztályhalmazt eredményezi; ez a specializáció a dolgozókat a fizetési módjuk alapján különbözteti meg egymástól.

4.2. ábra - Egy specializáció példányai.

Egy specializáció példányai.

4.2.2. Generalizáció

Elképzelhetjük az absztrakciónak egy inverz folyamatát, amelynek során elhagyjuk a különbségeket több egyedtípus között, azonosítjuk a közös jellemzőiket és generalizáljuk (általánosítjuk) őket egyetlen szuperosztályba, amelynek az eredeti egyedtípusok speciális alosztályai. Tekintsük például a 4.3. (a) ábrán látható AUTÓ és TEHERGÉPKOCSI egyedtípusokat! Mivel ezek számos közös attribútummal rendelkeznek, generalizálhatjuk őket a JÁRMŰ egyedtípusba, ahogy a a 4.3. (b) ábrán látható. Mind az AUTÓ, mind a TEHERGÉPKOCSI a JÁRMŰ generalizált szuperosztály alosztályai lesznek. A generalizáció kifejezéssel hivatkozunk adott egyedtípusokból egy generalizált egyedtípus kialakításának a folyamatára.

4.3. ábra - Generalizáció. (a) Két egyedtípus, az AUTÓ és a TEHERGÉPKOCSI. (b) Az AUTÓ és a TEHERGÉPKOCSI generalizációja a JÁRMŰ szuperosztályba.

Generalizáció. (a) Két egyedtípus, az AUTÓ és a TEHERGÉPKOCSI. (b) Az AUTÓ és a TEHERGÉPKOCSI generalizációja a JÁRMŰ szuperosztályba.

Vegyük észre, hogy a generalizáció folyamatára a specializáció folyamatának funkcionális inverzeként tekinthetünk. Így a 4.3. ábrán az {AUTÓ, TEHERGÉPKOCSI} a JÁRMŰ specializációjának is tekinthető, ahelyett hogy a JÁRMŰ-vet az AUTÓ és a TEHERGÉPKOCSI generalizációjának tekintenénk. Hasonlóan, a 4.1. ábrán a DOLGOZÓ a TITKÁR(NŐ), a TECHNIKUS és a MÉRNÖK generalizációjának is tekinthető. Bizonyos tervezési módszertanokban a generalizációt és a specializációt grafikus jelöléssel is megkülönböztetik egymástól. A gerenalizált szuperosztály felé mutató nyíl generalizációt reprezentál, míg a specializált alosztályok felé mutató nyilak specializációt reprezentálnak. Mi nem használjuk ezt a jelölést, mert annak az eldöntése, hogy melyik folyamat felel meg jobban egy konkrét szituációban, gyakran szubjektív.

Az eddigiekben bemutattuk az alosztályok és a szuperosztály/alosztály kapcsolatok fogalmát, valamint a specializáció és a generalizáció folyamatát. Általánosságban egy szuperosztály vagy egy alosztály azonos típusú egyedek egy kollekcióját reprezentálja, ezért egy egyedtípust is leír; emiatt — az egyedtípusokhoz hasonlóan — a szuperosztályokat és az alosztályokat is téglalapokkal jelöljük az EER diagramokon. A következőkben a specializációk és a generalizációk tulajdonságait tárgyaljuk részletesebben.