11. Objektumelvű programozási nyelvek Flashcards
Programozási paradigma
Programozási mód. Alapvetően a program felépítésére használt eszközkészletet
jelenti, vagyis milyen egységek képezik a program alkotóelemeit. (moduláris
programozás, objektumorientált programozás, általánosított programozás,
aspektusorientált programozás stb.)
Absztrakt adattípus
Az adattípus leírásának legmagasabb szintje, amelyben az adattípust úgy
specifikáljuk, hogy az adatok ábrázolására és a műveletek implementációjára
semmilyen előírást nem adunk. Lehetőleg matematikai fogalmakat használva írjuk
le az adattípust (halmazok és ezeken értelmezett műveletek).
Absztrakció
Elvonatkoztatás. Segítségével privát implementációkat rejthetünk el egy nyilvános
interfész mögé.
Példa: java.util csomagban List interfész és az interfészt implementáló
ArrayList, illetve LinkedList osztályok. Az absztrakció lehetővé teszi, hogy
mindkét osztály példányait ugyanazon List interfész műveletein keresztül
kezeljük.
Objektumorientált programozás
Olyan programozási paradigma, amely a programokat objektumokból építi fel. A
program működése tulajdonképpen objektumok kommunikációját jelenti.
Legfontosabb alapelvei: egységbezárás, öröklődés, polimorfizmus.
Osztály
Az osztály egy felhasználói típus, amelynek alapján példányok (objektumok)
hozhatók létre. Az osztály alapvetően adat és metódus (művelet) definíciókat
tartalmaz.
Objektum (példány)
Információt (adatokat) tárol és kérésre műveleteket végez. Van állapota, viselkedése és futásidőben azonosítható.
Üzenet
Objektumhoz továbbított kérés. Válaszként az objektum végrehajtja a kért
műveletet.
Egységbezárás
Az adatok és a metódusok osztályba való összezárását jelenti. Tulajdonképpen az
objektum egységbezárja az állapotot (adattagok értékei) a viselkedésmóddal
(műveletekkel). Következmény: az objektum állapotát csak a műveletein keresztül
módosíthatjuk.
Információ elrejtése
Az objektum elrejti az adatait és bizonyos műveleteit. Ez azt jelenti, hogy nem
tudjuk pontosan, hogy egy objektumban hogyan vannak az adatok ábrázolva, sőt a
műveletek implementációit sem ismerjük. Az információk elrejtése az objektum
biztonságát szolgálja, amelyeket csak a ellenőrzött műveleteken keresztül érhetünk
el.
Származtatás (örökítés)
Olyan osztályok között értelmezett viszony, amely segítségével egy általánosabb
típusból (ősosztály) egy sajátosabb típust tudunk létrehozni (utódosztály). Az
utódosztály adatokat és műveleteket (viselkedésmódot) örököl, kiegészíti ezeket
saját adatokkal és műveletekkel, illetve felülírhat bizonyos műveleteket. A kód
újrafelhasználásának egyik módja. Megkülönböztetünk egyszeres és többszörös
örökítést.
Kód újrafelhasználása
Adott osztály felhasználása származtatás, aggregáció, illetve kompozíció révén új osztályok létrehozására.
Dinamikus (késői) kötés
Futásidejű hozzárendelése a hívott metódusnak az objektumhoz. (Pl. C++: virtuális
függvények, Java: példánymetódusok) (Lassú)
Helyettesíthetőség
Ha S altípusa a T típusnak (S osztályt a T osztályból származtatjuk), akkor a T
osztálybeli példányokat helyettesíthetjük S osztálybeli példányokkal, anélkül, hogy
programunk helyességét veszélyeztetnénk.
Szoftver újrafelhasználása
Függvénykönyvtárak. Osztálykönyvtárak. Keretrendszerek.
Statikus (korai) kötés
Fordításidejű hozzárendelése a hívott metódusnak az objektumhoz. (Pl. C++: nem
virtuális függvények, Java: osztálymetódusok- statikus metódusok) (Gyors)
Metódusok túlterhelése
Több azonos nevű, különböző szignatúrájú függvény. A függvényhívás aktuális
paraméterei meghatározzák, hogy melyik függvény fog meghívódni. Ezt már a
fordításidőben eldől (statikus, fordításidejű kötés).
Metódusok felülírása
Egy osztályhierarchián belül az utódosztály újradefiniálja az ősosztály metódusát.
(azonos név, azonos szignatúra). Ha ősosztály típusú mutatón vagy referencián
keresztül érjük el az osztályhierarchia példányait és ezen keresztül meghívjuk a
felülírt metódust, akkor futási időben dől el, hogy pontosan melyik metódus kerül
meghívásra. (dinamikus, futásidejű kötés).