10. előadás. Alapfogalmak. Adatbázisrendszerek előadás november 28.

Hasonló dokumentumok
Adatbázisrendszerek. adatbázisokban. Objektumorientált és objektum-relációs adatbázisok április 24.

OOP. Alapelvek Elek Tibor

11. előadás Objektumorientált adatbázisok haladóbb ismeretek

Adatbázis rendszerek. dr. Siki Zoltán

Magas szintű adatmodellek Egyed/kapcsolat modell I.

Interfészek. PPT 2007/2008 tavasz.

Adatbázis-kezelő rendszerek. dr. Siki Zoltán

Programozás. Bevezetés. Fodor Attila. Pannon Egyetem Műszaki Informatikai Kar Villamosmérnöki és Információs Rendszerek Tanszék

Már megismert fogalmak áttekintése

Objektum orientált programozás Bevezetés

Absztrakció. Objektum orientált programozás Bevezetés. Általános Informatikai Tanszék Utolsó módosítás:

Programozás II. 3. gyakorlat Objektum Orientáltság C++-ban

Célkitűzések Az Oracle10 g felépítésének, használatának alapszíntű megismerése

Programozás II. 2. gyakorlat Áttérés C-ről C++-ra

OOP #1 (Bevezetés) v :39:00. Eszterházy Károly Főiskola Információtechnológia tsz. Hernyák Zoltán adj.

S0-02 Típusmodellek (Programozás elmélet)

Bánsághi Anna 2014 Bánsághi Anna 1 of 33

Programozás módszertan p.1/46

Programozási nyelvek Java

C++ programozási nyelv

Java VI. Miskolci Egyetem Általános Informatikai Tanszék. Utolsó módosítás: Ficsor Lajos. Java VI.: Öröklődés JAVA6 / 1

1. Mi a fejállományok szerepe C és C++ nyelvben és hogyan használjuk őket? 2. Milyen alapvető változókat használhatunk a C és C++ nyelvben?

és az instanceof operátor

Bevezetés: Relációs adatmodell

Java VIII. Az interfacei. és az instanceof operátor. Az interfészről általában. Interfészek JAVA-ban. Krizsán Zoltán

Bevezetés: az SQL-be

8. előadás. Az ER modell. Jelölések, az ER séma leképezése relációs sémára. Adatbázisrendszerek előadás november 14.

Java programozási nyelv 5. rész Osztályok III.

Informatikai alapismeretek Földtudományi BSC számára

Programozás. Adatbázis-kezelés (alapok) Fodor Attila

Programozás. Objektum Orientált Programozás (OOP) Alapfogalmak. Fodor Attila

Pelda öröklődésre: import java.io.*; import java.text.*; import java.util.*; import extra.*;

Objektumorientált adatbázisok

GEIAL Kovács László. GEIAL Kovács László

Dr. Pál László, Sapientia EMTE, Csíkszereda WEB PROGRAMOZÁS 2.ELŐADÁS. Objektumorientált programozás

Adatbázis, adatbázis-kezelő

Bánsághi Anna 2014 Bánsághi Anna 1 of 31

Programozási alapismeretek 4.

Bevezetés a Python programozási nyelvbe

1. Az adatbázis fogalma, fontosabb összetevÿi, felhasználási módjai

Struktúra nélküli adatszerkezetek

SQL ALAPOK. Bevezetés A MYSQL szintaxisa Táblák, adatok kezelésének alapjai

Programozás III. - NGB_IN001_3

Objektum relációs lehetőségek az Oracle-ben. Katona Endre Adatbázis alapú rendszerek diasorozata alapján

A hierarchikus adatbázis struktúra jellemzői

Bevezetés: Relációs adatmodell

Interfészek. Programozás II. előadás. Szénási Sándor.

OOP alapok Egy OOP nyelvet három fontos dolog jellemez. egységbezárás ( encapsulation objektumoknak öröklés ( inheritance

modell, amiben csak bináris sok-egy kapcsolatok (link, memberowner,

Bevezetés a C++ programozási nyelvbe

Adatszerkezetek 2. Dr. Iványi Péter

Programozási nyelvek Java

ADATBÁZIS-KEZELÉS. Relációs modell

Adatmodellezés. 1. Fogalmi modell

XML alapú adatbázis-kezelés. (Katona Endre diái alapján)

Egyirányban láncolt lista

ADATBÁZISOK ELMÉLETE 5. ELŐADÁS 3/22. Az F formula: ahol A, B attribútumok, c érték (konstans), θ {<, >, =,,, } Példa:

C++ programozási nyelv Konstruktorok-destruktorok

Osztályok. construct () destruct() $b=new Book(); $b=null; unset ($b); book.php: <?php class Book { private $isbn; public $title;

INFORMATIKA ÁGAZATI ALKALMAZÁSAI. Az Agrármérnöki MSc szak tananyagfejlesztése TÁMOP /1/A

Adatbázisok I Adatmodellek komponensei. Adatbázis modellek típusai. Adatbázisrendszer-specifikus tervezés

Objektumorientált programozás C# nyelven

Osztályok. 4. gyakorlat

Java VI. Egy kis kitérő: az UML. Osztály diagram. Általános Informatikai Tanszék Utolsó módosítás:

FUNKCIONÁLIS PROGRAMOZÁS

5. Gyakorlat. 5.1 Hálós adatbázis modell műveleti része. NDQL, hálós lekérdező nyelv:

Adatbázis-lekérdezés. Az SQL nyelv. Makány György

Java. Perzisztencia. ANTAL Margit. Java Persistence API. Object Relational Mapping. Perzisztencia. Entity components. ANTAL Margit.

Adatbázisok - 1. előadás

Objektumelvű programozás

Többfelhasználós és internetes térkép kezelés, megjelenítés

1. előadás Alapfogalmak Kialakulás, modellezés, a Bachman-féle fogalomrendszer, adatmodell, adatbázis, tulajdonságok

ADATBÁZIS-KEZELÉS - BEVEZETŐ - Tarcsi Ádám, ade@inf.elte.hu

ADATBÁZIS-KEZELÉS. Adatbázis-kezelő rendszerek

Oracle Spatial. Térbeli adatot tartalmazó tábla: Geometry table Legalább 2 oszlopa van: Elsődleges kulcs, SDO_GEOMETRY típusú oszlop.

Debreceni Egyetem Matematikai és Informatikai Intézet. 13. Védelem

Az adatbázisrendszerek világa

SQL. 1.rész. 1.elıadás // Adatbázisok-1 elıadás // Ullman-Widom (Stanford) tananyaga alapján // Hajas Csilla (ELTE IK) 1

Visual C++ osztály készítése, adattagok, és metódusok, láthatóság, konstruktor, destruktor. Objektum létrehozása, használata, öröklés.

Számítástechnika II. BMEKOKAA Előadás. Dr. Bécsi Tamás

Objektumorientált paradigma és a programfejlesztés

Adatbázis rendszerek Definíciók:

Adatbáziskezelő-szerver. Relációs adatbázis-kezelők SQL. Házi feladat. Relációs adatszerkezet

Széchenyi István Egyetem. Programozás III. Varjasi Norbert

Adatbázisok elmélete 4. előadás

Adatbázismodellek. 1. ábra Hierarchikus modell

Programozás II. 2. Dr. Iványi Péter

Szoftver-technológia II. Modulok és OOP. Irodalom

Adatbázisrendszerek 7. előadás: Az ER modell március 20.

Objektum orientált software fejlesztés (Bevezetés)

BGF. 4. Mi tartozik az adatmodellek szerkezeti elemei

Adatmodellezés, alapfogalmak. Vassányi István

Objektum orientált kiterjesztés A+ programozási nyelvhez

Adatbázisok. 8. gyakorlat. SQL: CREATE TABLE, aktualizálás (INSERT, UPDATE, DELETE), SELECT október október 26. Adatbázisok 1 / 17

Szerializáció. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) Szerializáció / 22

A relációs adatbáziskezelés szabványos nyelve Két fő csoportba sorolhatók az utasításai

DCOM Áttekintés. Miskolci Egyetem Általános Informatikai Tanszék. Ficsor Lajos DCOM /1

Bevezetés a Programozásba II 5. előadás. Objektumorientált programozás és tervezés

CORBA Áttekintés. Mi a CORBA? OMG and OMA. Ficsor Lajos. Miskolci Egyetem Általános Informatikai Tanszék

Átírás:

10. előadás Alapfogalmak Adatbázisrendszerek előadás 2016. november 28. OO, és Debreceni Egyetem Informatikai Kar Az előadások Elmasry & Navathe: Database Systems alapján készültek. 10.1

Hagyományos adatmodellek: Hierarchikus Hálózati (a 60 s évek közepe óta) Relációs (1970 óta illetve 1982 óta) (OO) adatmodellek 90 s évek közepétől. Az objektumorientált létrehozásának okai: Tradicionális adatmodellek (relációs, hálózatos, hierarchikus) sikere a tradicionális alkalmazásoknál Növekvő igény a komplex adatbázis alkalmazások iránt, pl. CAD/CAM, CIM, tudományos, telekom, GIS, multimédia Komplexebb struktúrájú objektumok megjelenése, hosszabb futamidejű tranzakciók, új adattípusok (képek, filmek, nagy szöveges állományok), nem-standard alkalmazás-generált műveletek Igény arra, hogy kezelni tudjunk tetszőleges adattípust a hagyományos lekérdező nyelvek megtartásával OO programozási nyelvek elterjedése, a hagyományos adatbázis rendszerek nehézkesen működnek együtt OO nyelvekkel (C++, Java, Smalltalk) OO 10.2

Objektum-orientált (OO) adatbázis rendszerek Object Databases (O(O)DB): Objektum-orientált Object Database Management Systems (OD(B)MS): Objektum-orientált adatbázis-kezelő rendszerek Fő jellemző és előny: a tervező specifikálni tudja mind a sokszorosan összetett objektumok szerkezetét, mind az ezeken az objektumokon alkalmazható műveleteket Objektum-relációs rendszerek (ORDBMS): a tradicionális RDBMS-ek OO szemlélettel való bővítései (Oracle), SQL 2008 szabvány (először mint SQL/Object majd az SQL/Foundation része) Tisztán OO rendszerek kísérleti prototípusai: ORION (MCC), OpenOODB (Texas Instruments), IRIS (HP), ODE (AT&T Bell Labs) Üzleti tisztán OO rendszerek: GEMSTONE/S Object server (GemStone Systems), ONTOS DB, Objectivity/DB, Versant Object Database, ObjectStore, Ardent Szabványosítás az ODMG (Object Database Management Group) konzorcium keretében: ODMG 3.0 szabvány OO 10.3

OO fogalmak áttekintése Objektum-orientált (OO) szó eredete az OO programozási nyelvekre vezethető vissza Objektum azonosító (OID) fogalma SIMULA nyelv (60 s évek vége): az osztály fogalmának bevezetése, egy objektum belső adatstruktúrájának leírása egy osztály deklarációban Absztrakt adattípus (absztrakt adatobjektum) fogalmának bevezetése: objektum szerkezete és típus konstruktorok A műveletek egységbezárása (encapsulation), a belső adatstruktúra elrejtése, az alkalmazható külső műveletek, metódusok meghatározása Perzisztencia (állandóság) és tranziencia (ideiglenesség) Típus és osztály hierarchia és Első tiszta OO nyelvek egyike: Smalltalk (Xerox PARC), üzenetküldés és Hibrid OO programozási nyelvek: C++ OO 10.4

Objektum Két komponense van: állapot (érték) és tulajdonság (művelet) (korai definíció) Hasonló a program változójához kivéve, hogy összetett adatstruktúra is lehet és a programozó speciális műveleteket definiálhat rajta Az objektumok az OO programozási nyelvekben tranziensek (átmenetiek), a futás befejeztével törlődnek Az objektumok az ODMS-ekben perzisztensek (állandóak), eltárolódnak, később kinyerhetőek és megoszthatóak más programokkal Egy ODMS általában több OO programnyelvhez kapcsolódik állandó és osztott objektumokat szolgáltatva számukra OO 10.5

jellemzői Direkt kapcsolat a valós világ és az adatbázis objektumai között az objektum azonosító (OID) révén Tetszőlegesen összetett szerkezetű objektum megengedett (minden az objektummal kapcsolatos információ tárolható, míg a relációs ban az információ sok relációban szóródik szét) Egyedváltozók (instance variables): azon értékeket hordozzák, melyek az objektum belső állapotát írják le. Hasonló a relációs modell attribútumához kivéve, hogy a külső felhasználók számára nem láthatóak. Teljes egységbezárás: minden a felhasználók által használható műveletnek előre definiáltnak kell lenni. (Túl szigorú, pl. a lekérdezésekhez tudni kell az attribútum neveket, az ad-hoc lekérdezéseket nehéz specifikálni.) Az egységbezárás támogatására a műveletek két részből állnak: interfész (felület) és metódus (törzs). Az első a művelet nevét és paramétereit írja le, a második a művelet implementációját specifikálja. OO 10.6

jellemzői Típusok és osztályok hierarchiája és e: típusok és osztályok inkrementális létrehozása, újrahasznosítás Reláció-kezelés: az egységbezárás miatt ez elrejtésre került a külső felhasználók számára (korai rendszerek problémája), az ODMG szabvány ezt megoldotta a bináris kapcsolatok explicit megjelenítésével, inverz hivatkozási párral Verzió-kezelés: egy objektumnak időbeni története van, ennek a nyomonkövetése. Sémaevolúció (ld. ALTER TABLE) Művelet túlterhelés (operator overloading): ugyanaz a művelet többféle típusú objektumon is végrehajtható, a művelet nevéhez több különböző implementáció tartozik attól függően, hogy milyen objektumra kívánjuk alkalmazni. (operátor polimorfizmus polymorphism) Késői kötés: a futás során kapcsolódik össze a művelet neve és a megfelelő implementáció. OO 10.7

Objektum azonosító Az adatbázisban tárolt minden különböző objektum kap egy azonosítót: objektum azonosító (OID - object identifier). Feladata: az adatbázis objektumainak egyértelmű azonosítása, segítségével objektumok közötti hivatkozásokat tudunk létrehozni és kezelni. Egy program alkalmas típusú változójához is hozzárendelhetjük ha szükséges. Tulajdonságok: megváltozhatatlanság, egyértelműség, láthatatlanság (külső felhasználó szempontjából), ábrázolás hosszú egész Az OID nem függhet az objektum egyes értékeitől sem, szemben az elsődleges kulccsal a relációs modellben és értékek (literálok): a legtöbb rendszer külön kezeli, az objektumok megváltozhatatlan OID-vel rendelkeznek, míg az értékeknek nincs OID-jük (így más objektumok nem hivatkozhatnak rájuk) és csak magukban állnak. Egyes rendszerek megengednek OID nélküli komplex struktúrákat mint literálokat. OO 10.8

Az ODMS-ekben az objektumok és a literálok tetszőleges összetettségű típus szerkezettel bírhatnak, amely az összes szükséges információt tartalmazza. A hagyományos adatbázis rendszerekben az összetett objektumokkal kapcsolatos információk sok relációra illetve rekordra szóródnak szét elvesztve így sokszor a direkt kapcsolatot a valós világ objektumai és azok adatbázisbeli reprezentációi között. OO databázisokban egy összetett objektum állapota más objektumok alapján határozódik meg ún. típus konstruktorok segítségével. formális leírása egy hármassal történik: (i, c, v), ahol i az objektum azonosítója, c a típus konstruktor és v az objektum állapota (jelenlegi értéke) Alapvető típus konstruktorok: atom, rekord (struct, tuple), kollekció (több-értékű) További konstruktorok a kollekción belül: halmaz (set), lista (list), zsák (bag), tömb (array), szótár (dictionary) OO 10.9

A konstruktorok értelmezése Atom konstruktor, (i, atom, v): az i azonosítójú objektum állapota a v atomi értéket veszi fel. Lényegében az alapvető beépített adattípusokat tartalmazza, már nem használjuk a legutóbbi objektum szabványokban. Rekord konstruktor, (i, rekord, a 1 : i 1, a 2 : i 2,..., a n : i n ): az i azonosítójú objektum egy n hosszú rekord, melyben a j a j-edik attribútum neve, i j pedig annak az objektumnak az azonosítója melyet értéknek felvesz. Összetett típusnak is nevezik, bár inkább típus-generátorként gondolhatunk rá. Halmaz konstruktor, (i, halmaz, i 1, i 2,..., i n ): az i azonosítójú objektum egy halmaz, amely az i 1, i 2,..., i n (általában azonos típusú) különböző objektumokból áll. Lista konstruktor, (i, lista, [i 1, i 2,..., i n ]): az i azonosítójú objektum egy rendezett lista (azonos típusú) a felsorolásbeli azonosítójú objektumokból. Zsák konstruktor, (i, halmaz, i 1, i 2,..., i n ): az i azonosítójú objektum egy zsák, amely az i 1, i 2,..., i n (általában azonos típusú) objektumokból áll, melyek között azonosak (azaz az OID-jük megegyezik) is lehetnek. OO 10.10

A konstruktorok értelmezése Tömb konstruktor, (i, tömb, [i 1, i 2,..., i n ]): az i azonosítójú objektum egy egy-dimenziós tömb a listabeli azonosítójú objektumokból. Szótár konstruktor, két rekord egy (K, V ) párja, ahol K a kulcs, melyre a V értéket kapjuk vissza. A lista abban különbözik a halmaztól, hogy rendezett. A tömb abban különbözik a listától, hogy a dimenzója véges (ismert). A zsák (multihalmaz) abban különbözik a halmaztól, hogy ugyanaz az objektum többször is szerepelhet. A kollekció típus fő jellemzője, hogy azonos típusú objektumok vagy értékek (ha literálról van szó) összessége. Ezzel szemben a rekord általában különböző típusú objektunok együttese. OO 10.11

Konstruktorok alkalmazása és osztályozása Ez az objektum modell megengedi a korábban definiált és más konstruktorok tetszőleges mélységű egymásba ágyazását. Mivel az összetett (nem-atomi) objektumok más, egyszerűbb objektumokra hivatkoznak az objektum azonosítók révén, az aktuális állapot csak az atomi típusú objektumok állapotaiban jelenik meg. Gyűjtemény (kollekció collection) konstruktor típusok: halmaz, lista, tömb, zsák, szótár. Strukturált konstruktor típusok: rekord (hasonló a struct konstruktorához a C(++) nyelvnek) OO 10.12

Példák objektumokra Egy vállalathoz kapcsolódó objektumok, használt konstruktorok: atom, halmaz, rekord. Az i 1, i 2,... a rendszer által generált objektum azonosítók o 1 = (i 1, atom, Budapest ) o 2 = (i 2, atom, Kecskemét ) o 3 = (i 3, atom, Vác ) o 4 = (i 4, atom, 5) o 5 = (i 5, atom, Kutatás ) o 6 = (i 6, atom, 1988. május 22. ) o 7 = (i 7, halmaz, {i 1, i 2, i 3 }) o 8 = (i 8, rekord, Rnév:i 5, Rszám:i 4, Vezető:i 9, Telephely:i 7, Alkalmazottak:i 10, Projektek:i 11 ) o 9 = (i 9, rekord, Vezető:i 12, Kezdő_dátum:i 6 ) o 10 = (i 10, halmaz, {i 12, i 13, i 14 }) o 11 = (i 11, halmaz, {i 15, i 16, i 17 }) o 12 = (i 12, rekord, Vnév:i 18, Knév:i 19, Szsz:i 20, Fizetés:i 21, Részleg:i 8 ) OO 10.13

Erős egyenlőség: két objektum azonos állapotban van ha a gráfjaik minden lehetséges szempontból (pl. az OID-k minden szinten) megegyeznek. Gyenge egyenlőség: Két objektum egyenlő állapotban van ha a gráfjaik szerkezete megegyezik és a gráfban lévő atomi értékek is megegyeznek (de pl. a gráf közbenső szintjein az OID-k már nem feltétlen) OO 10.14

Példa objektumok összehasonlítására o 1 =(i 1, rekord, a 1 : i 4, a 2 : i 6 o 2 =(i 2, rekord, a 1 : i 5, a 2 : i 6 o 3 =(i 3, rekord, a 1 : i 4, a 2 : i 6 o 4 =(i 4, atom, 10) o 5 =(i 5, atom, 10) o 6 =(i 6, atom, 20) OO O1 és O3 között erős egyenlőség van hiszen gráfjaik teljesen megegyeznek O1 és O2 között gyenge egyenlőség van hiszen gráfjaik szerkezete és az atomi értékek benne megegyeznek, de két különböző OID (O4 ill. O5) szerepel benne ezért nincs erős egyenlőség 10.15

Típus konstruktorok Az Object Definition Language (ODL) foglalja magukba a korábban definiált és más típusokat létrehozó konstruktorokat. Arra használjuk, hogy az OO adatbázis séma adatszerkezetét hozzuk létre velük. OO 10.16

Műveletek egységbezárása Cél: absztrakt adattípusok kezelése, információ-elrejtés (szemben a tradicionális relációs modellel, ahol minden reláció összes attribútumával együtt látható a felhasználók és külső programok számára). Egy objektumtípust viselkedésének leírásával definiálunk, melyet az objektumtípushoz külső hozzáférést biztosító műveleteken alapulnak. Műveletek: objektumok létrehozása, törlése, állapotának módosítása, egyes részeihez való hozzáférés biztosítása ill. ezek kombinációi. Műveletek felépítése: interfész (szignatúra) mely a műveletek nevét és paramétereit definiálja (látható), implementáció (metódus) az objektum belső adatszerkezetét és az eléréséhez szükséges műveletek leírását tartalmazza (rejtett). Egy metódus hívása egy üzenetküldéssel történik az objektum felé, hogy hajtsa végre azt. Teljes egységbezárás: túl erős követelmény, általában az objektumok szerkezetét két részre, látható és rejtett attribútumokra osztjuk. OO 10.17

Műveletek egységbezárása A class kulcsszó: a típus definiálása a műveleteivel együtt. Tipikus műveletek: objektum létrehozása (create, new), objektum törlése (destroy), illetve az objektum állapotának módosítása (modify, update). A módosítás (update) műveletek egységbezárása: előnye hogy kevés integritási megszorítást kell előredefiniálni, ezeket a metódusokba lehet beleprogramozni. Így ezek a megszorítások automatikusan kikényszeríthetőek. Pontozott minősítés: objektum_név.művelet OO 10.18

állandóságának biztosítása Tranziens és perzisztens objektumok Általában nem minden objektumtípus lesz állandó (perzisztens) egy adatbázisban, ezt külön biztosítani kell Az állandóság biztosítása: elnevezési mechanizmussal vagy elérhetőséggel Elnevezési mechanizmus: egyértelmű és állandó nevet ad egy objektumnak, mellyel hivatkozhatunk rá külső programokból (belépési pont) Elérhetőségi mechanizmus: segitségével perzisztens objektumokból érhetünk el további objektumokat (így elég kevés számú perzisztens objektumot definiálnunk) Egy B objektum elérhető az A objektumból ha az objektum gráfban hivatkozások (élek) egy sorozata vezet A-ból B-be A MINDEN_IRODA objektum az IRODA osztály extentje, amely minden IRODA típusú objektumot perzisztenssé tesz. OO 10.19

Típus (osztály) hierarchia és Számos objektumot szeretnénk kezelni lehetőleg minél egyszerűbben. Ennek módja új típusok létrehozása korábbiakból. Típus: (név, attribútumok, műveletek) Függvények: attribútumok (egyedváltozók), műveletek. Attribútum: argumentum nélküli függvény TYPE_NAME: function,..., function Példa: SZEMÉLY: Név, Cím, Szül_dátum, Kor, Szsz ahol a Kor művelet, amellyel az életkort számolhatjuk ki, a többi pedig attribútum. Szubtípus (altípus): egy olyan új típus, amely egy már definiált típus összes függvényét tartamazza. Szupertípus (szülőtípus): az a típus, amelyből a szubtípust származtattuk. OO 10.20

Példa re Tegyük fel, hogy az alábbi új típusokat szeretnénk definiálni: DOLGOZÓ: Név, Cím, Szül_dátum, Kor, Szsz, Fizetés, Alk_kezdete, Beosztás HALLGATÓ: Név, Cím, Szül_dátum, Kor, Szsz, Szak, Tan_átlag Mivel mindkettő tartalmazza a SZEMÉLY típus összes függvényét, így annak altípusaként definiálhatóak: DOLGOZÓ subtype-of SZEMÉLY: Fizetés, Alk_kezdete, Beosztás HALLGATÓ subtype-of SZEMÉLY: Szak, Tan_átlag A DOLGOZÓ altípus tárolt attributumokként tartalmazza a Fizetés, Alk_kezdete és Beosztás attribútumokat. A HALLGATÓ altípus tárolt attribútuma a Szak, míg a Tan_átlag műveletként implementálhatjuk. Áltatában egy altípus szupertípusának összes függvényét tartalmazza azokkal a speciális függvényekkel együtt, amelyek csak erre az altípusra jellemzőek. Ez által egy típus hierarchiát generálhatunk a rendszerben definiált típusok között. OO 10.21

Típus (osztály) hierarchia Típus hierarchia: az összes szuper/szub típus kapcsolat rendszere Átnevezés: hierarchia révén származtatott függvények átnevezése Permanens és tranziens kollekciók Példa geometriai objektumok típus hierarchiájára GEOMETRIAI_OBJEKTUM: Alak, Terület, Ref_pont Az Alak az objektum alakját írja le (háromszög, kör stb.), a Ref_pont a síkon elfoglalt helyét, míg a Terület metódus az objektum területét számolja ki más-más módon. TÉGLALAP subtype-of GEOMETRIAI_OBJEKTUM: Szélesség, Hosszúság HÁROMSZÖG subtype-of GEOMETRIAI_OBJEKTUM: Oldal1, Oldal2, Szög KÖR subtype-of GEOMETRIAI_OBJEKTUM: Sugár OO 10.22

ek Ugyanolyan típusú objektumok egy kollekciója A cél az, hogy az objektumainkat állandóvá tegyük Általában az összes azonos típusú objektum szerepel a típushoz tartozó extentben Object: minden objektumot tartalmazó extent Megszorítás az extenteken, hogy legyenek kompatibilisek a típus hierarchiával, azaz az altípus extentje legyen része a szubtípus extentjének. define class IRODA_SET; type set (IRODA); operations add_iroda(d: IRODA): boolean; (új iroda hozzáadása) remove_iroda(d: IRODA): boolean; (iroda törlése) create_iroda_set: IRODA_SET; (új iroda-halmaz létrehozása) destroy_iroda_set: boolean; (iroda-halmaz megszüntetése) end IRODA_SET; persistent name MINDEN_IRODA: IRODA_SET; d:=create_iroda; (új iroda létrehozása a d változóban) b:=minden_iroda.add_iroda(d); (d perzisztenssé tétele) OO 10.23

Műveletek polimorfizmusa Más névvel művelet túlterhelés: ugyanaz az operátor név vagy szimbólum attól függően jelöl más és más műveletet, hogy milyen objektumra alkalmazzuk. Korai (statikus) kötés vagy késői (dinamikus) kötés Többszörös, szelektív Többszörös : akkor beszélünk róla ha egy altípus kettő vagy több típus altípusa és így értelemszerűen örökli mindkettő vagy az összes függvényét (attribútumait és metódusait). Szelektív : amikor egy altípus csak egy típus bizonyos függvényeit örökli, amelyeket nem azokat az EXPECT klózzal jelezzük OO 10.24