A InfoWiki wikiből
Magasszintű Programozási Nyelvek II.
A jelölt, kihúzott témáját részletesen dolgozza ki, úgy, hogy feleletével átfogó képet adjon a témával kapcsolatban! A témához tartozó fogalmakat szakszerű magyarázza el, és használja. Törekedjen a téma átgondolt, rendszerezett, önálló előadására. Példákon keresztül is tudja használni az adott fogalmakat.
Tematika részletezése
Az Objektum Orientált Programozási nyelvek története, legfontosabb alapfogalmak
- Ismertesse az OOP nyelvek és a procedurális nyelvek viszonyát.
- Ismertesse az OOP három alapelvét, azok jelentőségét.
Adatrejtés és következményei
- Ismertesse a mező fogalmát.
- Ismertesse a védelmi szinteket, kapcsolatát a hatáskör fogalmával.
- Ismertesse az adatrejtés értelmét, jelentőségét.
- Ismertesse az elrejtett mező kívülről történő írási és olvasási lehetőségeit, azok szokásos megoldását metódusokon keresztül.
- Ismertesse a hibás értékre reagálás szokásos megoldását OOP-ben (kivétel dobása)
Property
- Ismertesse a mező fogalmát.
- Ismertesse az adatrejtés értelmét, jelentőségét.
- Ismertesse a property fogalmát, jelentőségét, használatát az adatrejtés témakörében.
- Ismertesse a property-k készítésének szintaktikai, és szemantikai szabályait.
- Ismertesse a property-k használatának szintaktikai, és szemantikai szabályait.
- Ismertesse a propety-k hibajelzésének megoldását (kivétel dobása).
- Hasonlítsa össze a property-n keresztüli megoldást a metóduson keresztüli megoldással.
Osztályszintű és példányszintű mezők. Konstansok.
- Ismertesse a különbséget az osztályszintű és példányszintű mezők között, különös tekintettel az élettartam kérdésekre.
- Ismertesse a példányszintű mezők deklarálásának és felhasználásának szintaktikáját osztályon belül és kívül.
- Ismertesse az osztályszintű mezők deklarálásának és felhasználásának szintaktikáját osztályon belül és kívül.
- Ismertesse a konstans fogalmát, deklarációját, hasonlóságát az osztályszintű mezőkkel.
Osztályszintű és példányszintű metódusok
- Ismertesse a példányszintű metódusok létrehozásának és felhasználásának szintaktikai és szemantikai szabályait.
- Ismertesse az osztályszintű metódusok létrehozásának és felhasználásának szintaktikai és szemantikai szabályait.
- Ismertesse a metódusok belsejéből más metódusok meghívhatóságának problémakörét.
- Ismertesse a metódusok belsejéből más, osztály belsejében deklarált mezők elérhetőségének problémakörét.
- Ismertesse, milyen feltételek mellett készítünk osztályszintű, és milyenek mellett példányszintű metódusokat.
- Ismertesse a ’this’ kulcsszó, és a metódusok kapcsolatát.
Öröklődés szabályai és alkalmazása mezők-re
- Ismertesse az öröklődés szabályait.
- Ismertesse a mezők öröklődési szabályait példányszintű mezők esetén, a különböző védelmi szintek esetén.
- Ismertesse a mezők öröklődési szabályait osztályszintű mezők esetén, a különböző védelmi szintek esetén.
- Ismertesse a mezők újradefiniálási lehetőségeit a különböző védelmi szintek esetén.
Öröklődés szabályai és alkalmazása metódusokra
- Ismertesse az öröklődés szabályait.
- Ismertesse a metódusok öröklődési szabályait példányszintű metódusok esetén, a különböző védelmi szintek esetén.
- Ismertesse a metódusok öröklődési szabályait osztályszintű metódusok esetén, a különböző védelmi szintek esetén.
- Ismertesse a metódusok újradefiniálási lehetőségeit a különböző védelmi szintek esetén, a paraméterlista változása és nem változása esetén (overloading szabály, virtuális metódusok, egyszerű felüldefiniálás esete)
- Ismertesse a metódusok hívása esetén hogyan dől el, melyik metódus kerül végrehajtásra.
Korai és késői kötés
- Ismertesse a korai kötés lényegét, alkalmazását az OOP kódban. Adjon példát, amikor a korai kötés ’hibás’ működésűvé válik. Ismertesse ennek körülményeit.
- Ismertesse a késői kötés lényegét, alkalmazását az OOP kódban.
- Ismertesse, hogy dől el, hogy melyik kötés lesz korai, melyik késői.
- Ismertesse a késői kötés működésének támogatását VMT és DMT táblák esetén. Hasonlítsa össze a két technikát (előnyök, hátrányok).
- Ismertesse a VMT és DMT táblák készítésének módszerét, helyigényeit. Ismertesse, hogy amennyiben van lehetőségünk a választásra, mely szempontok szerint válasszuk az egyiket, vagy a másikat.
Konstruktorok
- Ismertesse a konstruktor fogalmát, feladatait.
- Ismertesse, hogyan lehet konstruktor írása nélkül is alaphelyzetbe állítani az objektum-mezőket, illetve milyen esetekben nem működik ez az alternatív módszer.
- Ismertesse a konstruktor írás szintaktikai szabályait.
- Ismertesse az alapértelmezett konstruktor fogalmát.
- Ismertesse hogyan hívhat meg egy konstruktorból másik saját osztálybeli, illetve ős osztálybeli konstruktort.
- Ismertesse, hogyan és miként hívjuk meg a konstruktort példányosításkor, és írja le mely mechanizmus szerint hajtódnak végre a konstuktorok az adott osztályból, illetve annak ősosztályaiban.
- Ismertesse, milyen körülmények között írunk nem publikus konstuktorokat.
- Ismertesse az object factory fogalmát.
- Ismertesse, lehet-e konstruktorokból más, osztályszintű és példányszintű metódusokat meghívni.
- Ismertesse az osztályszintű konstruktor fogalmát, írásának szintaktikai szabályait, hívásának szemantikai szabályait.
- Ismertesse, milyen lehetőség van a konstruktor írása során a hibajelzésre, amikor is a konstruktor nem képes az adott paraméter-értékeknek megfelelő objektum-példányt létrehozni.
Destruktor
- Ismertesse a destruktor fogalmát, feladatait.
- Ismertesse a destruktor irásának szintaktikai szabályait.
- Ismertesse a destruktor hívásának szemantikai (működési) szabályait.
- Ismertesse a destruktor és a GC kapcsolatát.
- Ismertesse a destruktor és a Finalize() metódus kapcsolatát.
THIS kulcsszó
- Ismertesse a this (más nyelveken self) kulcsszó fogalmát.
- Ismertesse a this kulcsszó használatának lehetőségeit példányszintű metódus belsejében.
- Ismertesse a this kulcsszó használatának lehetőségeit osztályszintű metódus belsejében.
Típuskompatibilitás
- Ismertesse az OOP területén értelmezett típuskompatibilitás fogalmát.
- Ismertesse az Object típus kapcsolatát a típuskompatibilitással, ennek használatát kollekciók (listák, verem, sor, stb.) fejlesztésekor.
- Ismertesse a statikus típusfelismerés, és a mezők használata, metódusok hívása (korai kötés) során fellépő problémás eseteket.
- Ismertesse a virtuális metódusok (késői kötés) hogyan viselkednek statikus típusfelismerés környezetben.
- Ismertesse a dinamikus típus azonosítás lehetőségét (IS operátor).
- Ismertesse a dinamikus típuskényszerítés lehetőségeit (régi típusú, AS operátoros), ennek lehetséges veszélyeit.
Absztrakt osztályok
- Ismertesse az absztrakt osztályok fogalmát, jellemzőit.
- Ismertesse az absztrakt osztályok és a virtuális metódusok technikák előnyeit, hátrányait, hasonlóságokat, különbségeket egymással szemben.
- Ismertesse az absztrakt metódusok fejlesztésének szintaktikai előírásait, hívásának szemantikai szabályait.
- Ismertesse az absztrakt osztályokra, és gyermekosztályaira vonatkozó további szabályokat.
Sealed kulcsszó
- Ismertesse a sealed kulcsszó jelentőségét, használatának szintaktikai, szemantikai szabályait.
Indexelő
- Ismertesse az indexelő fogalmát.
- Ismertesse az indexelő készítésének szintaktikai szabályát, használatának szintaktikai és szemantikai szabályait.
- Mondjon példákat a BCL-ben már eleve létező indexelőkre.
Interface
- Ismertesse az interface fogalmát.
- Ismertesse, milyen elemekből épülhet fel egy interface, mely elemeknek mi a szintaktikai szabályai.
- Ismertesse az interface felhasználását, jelentőségét az OOP stílusú programokban.
- Ismertesse a ’interface implementálás’ fogalmát, szabályait.
- Ismertesse, milyen alternatív megoldást ismer az interface-t nem támogató OOP nyelvekben, ennek milyen hátrányait ismeri.
Kivételkezelés
- Ismertesse milyen egyéb (hagyományos) hibajelzési technikákat ismer, melyiknek mik a korlátai, hátrányai.
- Ismertesse a kivétel mint hibajelzési technika jellemzőit.
- Ismertesse a kivétel programozott módon történő előidézésének (kivétel feldobása) technikáját, annak szintaktikai szabályát, szemantikai következményeit.
- Ismertesse a kivétel kezelésének módszerét, annak szintaktikai és szemantikai szabályait.
Boxing és unboxing
- Ismertesse a boxing művelet értelmét, hol és hogyan használja ezt a rendszer.
- Ismertesse az unboxing művelet értelmét, hol és hogyan használja ezt a rendszer.
Operátor-overloading
- Ismertessük az operátor fejlesztés lehetőségeit, jelentőségét.
- Ismertessük az unáris operátor fejlesztésének szintaktikai és szemantikai szabályait, hívását.
- Ismertessük az bináris operátor fejlesztésének szintaktikai és szemantikai szabályait, hívását.
- Ismertessük az konverziós operátor fejlesztésének szintaktikai és szemantikai szabályait, hívását.
- Hasonlítsuk össze az operátorok fejlesztésének, és a metódusok fejlesztésének és használatának lehetőségeit ezeken a területeken.
DLL készítése és használata
- Ismertessük a Win32-es DLL jellemzőit, előnyeit, hátrányait.
- Ismertessük a .NET-es DLL (Assembly) jellemzőit, előnyeit, hátrányait.
- Ismertessük a .NET DLL fejlesztésével kapcsolatos tudnivalókat, különös tekintettel a kiegészítő védelmi szintek jellemzőire.
- Ismertessük hogyan lehet egy project fejlesztése közben felhasználni egy .NET DLL –t?
- Ismertessük, milyen támogatás van egy (akár idegen) .NET DLL használatára a Visual Studio-ban fejlesztés közben.
- Ismertessük a DLL fejlesztése során milyen dokumentációs lehetőségeink vannak.
Callback függvények
- Ismertesse a callback függvény fogalmát, ennek jelentőségét, felhasználhatóságát OOP környezetben.
- Ismertesse a callback függvények kezelésével kapcsolatos ismerteket.
- Ismertesse, hogy lehet egy darab callback függvényt kezelni mint paraméter, mint ilyen típus mező.
- Ismertesse, hogyan tud több callback függvényt kezelni egy időben lista segítségével.
- Ismertesse, hogyan tud több callback függvényt kezelni egy időben event (esemény) segítségével.
- Ismertesse a callback függvények kezelése közötti különbségeket 1.0 és 2.0 verziójú Framework esetén.
- Ismertesse a TIE osztály fogalmát, jelentőségét.
- Hasonlítsa össze a TIE osztályok, a virtuális metódusok, és az absztrakt metódusok témakörét.
Generic típusok
- Ismertesse a Generic típus fogalmát, készítésének szabályait.
- Ismertesse a Generic típus felhasználását a programozás során.
- Ismertesse, milyen Generic típusokat ismer a .NET 2.0 Framework-ből, hasonlítsa össze ezek használhatóságát a régebbi megoldásokkal.
Névterek
- Ismertesse a névterek jelentőségét.
- Ismertesse a névterek kialakításának lehetőségét, névtér névképzési szabályait.
- Ismertesse a using kulcsszó szerepét, és a névtérütközés problémáját.
- Ismertesse a using kulcsszó segítségével hogyan lehet névtér-aliasokat létrehozni és használni.
- Ismertesse a globális névtér fogalmát, és veszélyeit.
- Ismertesse, hogyan lehet egy névtér tartalmát több file-ba szétosztani.
Eger, 2007.11.10
Hernyák Zoltán