Objektumközpontú nyelv
MITŐL LESZ EGY NYELV OBJEKTUMKÖZPONTÚ?
A fő kérdések a következők: Mi az, hogy egy nyelv objektumorientált (OOP) vagy másképpen mondva objektumközpontú? Mi az előnye az objektumorientált programozásnak a hagyományos moduláris programozással szemben? Az alábbiakban ezekre a kérdésekre adjuk meg a választ.
Mi az, ami egy nyelvet objektumközpontúvá tesz? Ha erre azt mondjuk: mert objektumokat használ, akkor ezzel közel járunk az igazsághoz, de erre a kérdésre nem válaszolhatunk ilyen egyszerűen. Egy nyelv akkor tekinthető objektumorientáltnak, ha rendelkezik az alábbi négy tulajdonsággal:
• Egységbe zárás
• Többalakúság (sokoldalúság)
• Öröklés
• Újrahasznosíthatóság.
A továbbiakban ezeknek a fogalmakat fogjuk részletesen elmagyarázni.
A programozás megfogalmazásnak története
Az objektum szemlélet, avagy a megfogalmazás ereje
A forma teremtő ereje
Az, hogy a programozásban objektumokkal dolgozunk egy olyan formát, megfogalmazást, szemléletváltást jelent, aminek eredménye a kényelem, áttekinthetőség, az emberi gondolkodáshoz való közeledés. Ha megnézzük a programozás történetét, akkor egyfajta megfogalmazás történet bontakozik ki előttünk.
Kód a memóriába
Kezdetben a programozók közvetlenül számokat (gépi kódot) írogattak a memóriába. Kevesek számára művelhető, nehéz szakma lehetett. Később rájöttek, hogy ezekkel áttekinthetetlen dolgozni, így bonyolult feladatok nem fogalmazhatók meg.
Az ábrán a bal oszlopban a memória címek, a jobb oszlopban hexa számokként egy olyan program kódja látható, ami kiírja a betűket A-tól J-ig. B4, 41, B9, 0A, ...
Angol szavak
Akkor merült fel az ötlet, hogy az utasításokat és vezérlési szerkezeteket angol szavakkal (Assembly) fogalmazzuk meg, amit egy program gépi kódra fordít (Assembler) és ez kerül majd a memóriába. Így két szint keletkezett: a megfogalmazásé: forráskód, amiben emberi nyelvhez hasonlóan lehet egy feladatot kódolni, valamint a működésé: a gépi kód, amit a gép fog majd megérteni.
Az ábrán egy olyan assembly program látható, ami kiírja a betűket A-J-ig. Figyeljük meg a MOV (Move), CALL, LOOP, INT, angol szavakat, amik utasításokat jelentenek. A mellettük lévő betűk regiszterek, konkrét számok, címkék stb. amire az utasítások vonatkoznak.
Moduláris szemlélet
Rájöttek arra is, hogy bonyolult, ismétlődő feladatokat, műveleteket ne kelljen minden programozónak újraírni, ezért létrehozták az eljárás- és függvény könyvtárakat. Innen kezdve egy programban elég volt a művelet nevével hivatkozni a dologra (pl. sin(45) vagy szorzás stb.), a háttérben meghívódott az illető bonyolult folyamat.
Ezen túl azt is lehetővé tették, hogy a programozó saját maga is készíthessen ilyen rutinokat, amiket hasonlóképpen hív meg, mint amik az előbb említett eljáráskönyvtárakban vannak. A program-szervezésnek ezen a szintjén bevezették a moduláris szemléletet: egy feladatot bontsunk rész-feladatokra, azokat még tovább ameddig csak lehet. A programozó ezután ezeket az általa elkészített eljárásokat hívogatja. Így program sorai tiszták és áttekinthetővé váltak, nem is beszélve arról, hogy ha egy ilyen modul más feladathoz is kellett, ott is fel lehetett használni újraírás nélkül. Tudatosan kiküszöbölték, vagy ajánlották mellőzni az ugró (goto) utasítást, mert (ez bár kényelmes megoldás), de gyakorlatilag olvashatatlanná tesz egy programkódot. Ezeket az elveket szem előtt tartva jelentek meg az úgynevezett magasszintű programnyelvek.
Objektum szemlélet
Még mindig a kódok világánál maradva rájöttek, hogy ha a modularitás szintjén maradunk, akkor előbb vagy utóbb beköszönt a káosz, mert ezek száma rendkívüli mértékben szaporodik, és a programozás ezeknek a moduloknak az elnevezés-művészetévé kezd válni. Ekkor jött az a kézenfekvő ötlet, hogy tekintsük a dolgokat a valóság szereplőihez hasonló objektumoknak. Az objektum mint minden valamije a világnak háromféle belső dologgal rendelkezik: vannak tulajdonságai, valahogy viselkedik (metódusok) és létezik interaktivitása (események). Ha így fogalmazzuk meg kódjainkat, akkor az áttekinthetőség, újrahasznosíthatóság és a másokkal való megoszthatóság egy magasabb szintjét, az emberi gondolkodást utánzó formát érhetünk el. Ha tetszik, akkor az objektum szemléletet úgy is felfoghatjuk, hogy az nem más, mint a természet, vagy az emberi gondolkodás, problémamegoldás tökéletesebb utánzása.
Egy nyelv akkor tekinthető objektumorientáltnak, ha rendelkezik az alábbi négy tulajdonsággal:
• Egységbe zárás
• Többalakúság (sokoldalúság)
• Öröklés
• Újrahasznosíthatóság.
Magas szintű programozási nyelven megírt programszöveg.
A moduláris szemlélet lényege: egy feladatot részfeladatokra bontunk, és azokat még tovább ameddig csak lehet. A programozó ezután ezeket, az általa elkészített eljárásokat hívogatja. Így a program sorai tisztává és áttekinthetővé válnak, illetve ha egy ilyen modul más feladathoz is kell, ott is fel lehetett használni újraírás nélkül.