Osztály

A Programozás Wiki wikiből

Az osztály az objektum-orientált programozás egyik központi fogalma. Az adattartalmukban esetleg eltérő, de viselkedés szempontjából megegyező objektumokat tekintjük egy osztályba tartozóknak.

Az objektum-orientált programozási nyelvek rendszerint jelzik is az egyes osztályokat. Ennek kulcsszava a legtöbb esetben a class.

Használat[szerkesztés]

Általános gyakorlat, hogy a programozási feladat elemeit hasonló tulajdonságaik alapján osztályokba soroljuk, és ezeket feleltetjük meg a programozási nyelv osztályainak. A nyelvi osztályokat felruházzuk a probléma szempontjából lényeges jellemzőkkel, és műveletekkel, majd a műveletek tartalmát leírjuk a célnyelven, megalkotva ezzel azok törzsét. Miután a lényeges elemek osztályai elkészültek, a programozási feladat gyakorlatilag a természetes nyelvhez közeli formában fogalmazható meg a célnyelven. Ha sehol sem követtünk el hibát, a program a várt eredményt fogja adni.

Felépítés[szerkesztés]

A programozási nyelvek osztályai általában az osztály nevét, adattagokat, és tagfüggvényeket tartalmaznak. Az adattagok felelősek az adott objektum információinak tárolásáért, a tagfüggvények pedig az osztály által engedélyezett műveletek megvalósulásai. Bizonyos nyelveken ezen túl feltüntethető az ősosztály, a tagok elérhetőségi módosítói, osztályfüggvények leírása, jellemzők (property-k) meghatározása, esetleg további nyelvi elemek.

Öröklődés[szerkesztés]

Gyakori eset, hogy egyes osztályok más osztályok speciális fajtáinak, vagy általánosításának felelnek meg. Az is előfordul, hogy egy osztály viselkedését egy másik osztály segítségével tudjuk könnyen leírni (megvalósítani). Ilyen és ehhez hasonló esetekre nyújt megoldást az öröklődés használata. Ha egy osztály egy másikból származik, akkor azt leszármazott-, a másikat pedig ősosztálynak hívjuk. A programozási nyelvek általában ezt a kapcsolatot is jelzik. Kulcsszava lehet extends, inherits, vagy valami hasonló. A leszármazott támaszkodhat az ősosztály műveleteire, virtuális tagok esetében felül is definiálhatja (override) azokat. A nyelvek nagy része csak egy ősosztályt engedélyez az osztályok számára, de ellenpélda is akad. Az osztályok öröklődési kapcsolatai tehát általában fával, vagy gráffal írhatók le, amit osztály-hierarchiának nevezünk.

Interfészek[szerkesztés]

A többszörös öröklődés elkerülésére számos nyelv alkalmazza az interfész (interface) fogalmát. Az interfész olyan osztályként fogható fel, aminek sem adattartalma, sem műveleteinek konkrét megvalósítása nincs. Gyakorlatilag csak egy leírás arról, hogy milyen lehetőségeket várunk el egy olyan osztálytól ami megvalósítja (implements) az interfészt. Általában megengedett, hogy egy osztály több interfészt is megvalósítson. A programnyelvekben az interfészek sok helyzetben osztályként használhatók, változók, argumentumok típusaként jelenhetnek meg.

Példák[szerkesztés]

CD osztály Java nyelven