egy objektum-orientált nyelv egy számítógépes programozási nyelv, amely körül forog a koncepció egy objektum. Az objektumorientált nyelveket úgy fejlesztették ki, hogy megkönnyítsék a szoftverek fejlesztését, hibakeresését, újrafelhasználását és karbantartását, mint a korábbi nyelveken. Az objektumok és az objektumorientált nyelvek megértése megköveteli a számítógépes programozási nyelvek és adatstruktúrák fejlődésének ismeretét.
- A számítógépes programozási nyelvek fejlődése
- összeszerelési nyelv.
- magas rendű Nyelvek.
- strukturált Nyelvek.
- objektumorientált Nyelvek.
- az objektumorientált programozás jellemzői
- kapszulázás és adatok elrejtése.
- öröklés.
- polimorfizmus.
- Common Object-Oriented Languages
- Smalltalk.
- C++.
- Java.
- egyéb nyelvek.
- bibliográfia
A számítógépes programozási nyelvek fejlődése
a számítógépes programozási nyelvek az évek során folyamatosan fejlődtek. Ezt az evolúciót a következő példák részletezik.
összeszerelési nyelv.
az első számítógépes programok összeszerelési nyelven készültek. Ez egy primitív típusú nyelv, amelyben minden állítás egyetlen gépi utasításnak felel meg; ez a legegyszerűbb számítógépes művelet. Bármi hasznos megvalósítása sok gépi utasítást igényel. Az összeszerelési nyelv egy adott típusú számítógépre jellemző; a program áthelyezése egy másik típusú számítógépre egy teljesen új program megírását igényli. Az összeszerelési nyelvi programokat nehéz írni, hibakeresést végezni és karbantartani. Bár más nyelveket használnak a legtöbb számítógépes alkalmazáshoz, az összeszerelési nyelvet ma is használják az első nyelvként, amikor új chipet fejlesztenek ki.
magas rendű Nyelvek.
az összeszerelési nyelv után magasabb rendű nyelveket fejlesztettek ki; a korai nyelvek között FORTRAN és BASIC volt. Egy kijelentés egy magas rendű nyelven megfelel egy angol nyelvű mondatnak. Egy fordító nevű program egy forrásfájl utasításait olvassa, és egy gép utasításait tartalmazó fájlt generál, amelyet objektumfájlnak neveznek. Az objektumfájlt ezután a számítógép betöltheti és végrehajthatja. A magas rendű nyelv hordozhatóbb, mint egy assembly language program; ugyanaz a forrásfájl bármilyen számítógéphez összeállítható, mindaddig, amíg megfelelő fordító létezik.
a korai magas rendű nyelvek csak egyszerű adattípusokhoz engedélyezettek, például egész számhoz, lebegőpontos számhoz vagy karakterlánchoz (betűk sorozata). Az egyetlen rendelkezésre álló adatstruktúra a tömb volt. A tömb azon elemek listája, amelyek mindegyike azonos adattípus; például a számok listája vagy a karakterláncok listája. Egy adatbázist hoztak létre egy csoport tömbök. Például egy termékadatbázis tartalmazhat három tömböt, a termékszámot, a termékleírást és a termék árát. A programozó feladata volt a tömbök igazítása; például annak biztosítása érdekében, hogy az egyes tömbök harmadik eleme megegyezzen ugyanazzal a termékkel.
strukturált Nyelvek.
a számítógépes programozási nyelvek fejlődésének következő lépése a strukturált nyelvek, például a C és a PASCAL fejlesztése, valamint az adatstruktúrák bevezetése volt. Az adatstruktúra egyszerűbb adattípusok egyetlen rekordba történő összeállítása. Például egy termékadatbázis összeállítható termékrekordok tömbjeként, minden egyes termékszámot, termékleírást és termékár mezőket tartalmazó rekordként. Most egy rekord tartalmazhat minden szükséges információt egyetlen elemről. A struktúrák a nyelv eljárási részében is meghatározottabbá váltak. A függvény vagy eljárás egy nagyobb program egy kis része, amelyet meg lehet írni, hogy alapvető műveletet biztosítson egy adatszerkezeten, például egy rekordon.
objektumorientált Nyelvek.
a számítógépes programozási nyelvek fejlődésének következő lépése, az objektumorientáció a Smalltalk nyelven került bevezetésre. Az objektumorientáció a strukturált programozás fogalmait vesziegy lépéssel tovább. Most az adatstruktúrák és a különálló programstruktúrák helyett mind az adatok, mind a programelemek egy objektumnak nevezett struktúrába kerülnek. Az objektumadatelemeket attribútumoknak nevezzük, míg az objektumprogramelemeket módszereknek nevezzük. Az attribútumokat és módszereket együttesen az objektum tagjainak nevezzük. Általában az objektum módszerei az egyetlen programok, amelyek képesek az objektum attribútumain működni.
objektumorientációval alapvető változás történt a programok megtekintésének módjában. A korábbi nézet az volt, hogy az adatokat valamilyen módon manipulálni kell a végeredmény elérése érdekében, a programot pedig a manipulációk végrehajtásának egymást követő eszközeként tekintették. Objektumorientációs szempontból egy programot objektumcsoportnak tekintünk, amely reagál a felhasználó, más programok vagy más objektumok üzeneteire. Ez a nézet vezetett az eseményvezérelt programozás gondolatához; azaz amikor az a esemény megtörténik, ez az objektum végrehajtja a B műveletet.
az objektumorientált programozás jellemzői
az objektumorientált programozás főbb jellemzői közé tartozik a kapszulázás és az adatok elrejtése, az öröklés és a polimorfizmus.
kapszulázás és adatok elrejtése.
az objektumorientált programozás (OOP) központi gondolata az, hogy az objektum attribútumok és az attribútumokon működő módszerek össze vannak kötve, vagy beágyazódnak az objektumba. Az objektum metódusai biztosítják az objektum és a program más részei közötti egyetlen interfészt. Ez különbözik a korábbi nyelvektől, ahol a program bármely része bármikor működhet bármilyen adaton. Bár ez korlátozónak tűnik, a korlátozások egy moduláris programot eredményeznek, amely könnyebben fejleszthető, és kevésbé valószínű, hogy hibákat tartalmaz. Ez azt is jelenti, hogy könnyebb áthelyezni egy objektumot egy másik környezetbe, és még mindig helyesen működik.
egy szoftverobjektum némileg hasonlít egy fizikai objektumhoz. Például egy motor használható autó táplálására. Belső komponensei vannak, amelyek megfelelnek az attribútumoknak, de nem kell foglalkozniuk azzal, hogy mi vagy hogyan működnek. A motor biztos felület a gáz, üzemanyag-rendszer átviteli, bevitel, valamint a kipufogócsövek, amelyek megfelelnek módszerek. Elképzelhetetlen, hogy az üzemanyag az üzemanyagrendszeren kívül más módon kerüljön a motorba. Mindaddig, amíg a megfelelő interfészek megmaradnak, a motor működni fog. Tehát tárgyakkal. Az objektum attribútumok kívülről vannak elrejtve. Az objektum a módszereivel kölcsönhatásba lép a környezetével.
öröklés.
az objektumorientált programozás másik fontos koncepciója az öröklés. Egy objektumosztályt egy hierarchiában definiálnak, és azt mondják, hogy örökli ősei viselkedését (a hierarchiában felette lévő objektumokat). Egy rajzprogram például három objektumosztályt tartalmazhat: Alak, téglalap és kör. Úgy definiálhatók, hogy a téglalap és a kör egyaránt formai Leszármazottak legyenek.
az alakzat minden alakra jellemző attribútumokat tartalmaz, például az alak helyét a rajzfelületen. Az alak ezen attribútumok manipulálásának módszereit is biztosítja. Például egy áthelyezési módszer megváltoztatná az alak helyét. Ezenkívül meghatározná azokat a módszereket, amelyekre az összes alakzatnak képesnek kell lennie reagálni, például egy rajzolási módszer az alak megjelenítésére egy rajzfelületen. A rajzolási módszer ebben az esetben elvontnak tekinthető; nem tesz mást, mint olyan követelményt hoz létre, amelyet a leszármazási osztályoknak végre kell hajtaniuk.
mivel a téglalap az alak leszármazottja, örökli az attribútumokat (hely) és a metódusokat (mozgás) az alakból. Ez biztosítja a szükséges további attribútumokat (szélesség és magasság), valamint az új módszereket, amelyek manipulálják ezeket az attribútumokat (setWidth, setHeight). A téglalapnak olyan rajzolási módszert is biztosítania kell, amely téglalapot fest a rajzfelületre, mivel minden formai leszármazottnak rajzolási módszert kell végrehajtania. Hasonlóképpen, a Circle új attribútumot (sugarat), manipulációs módszereket (setRadius), valamint saját rajzolási módszert biztosít.
ezzel az elrendezéssel a rajzkezelő program tartalmazná a rajzfelület alakzatainak listáját. Egy objektum mozgatásához az objektum mozgási módszerét hívná. Objektum rajzolásához A menedzser felhívja az objektum rajzolási módját. A menedzser sem tudja, sem nem érdekli, hogyan mozog az objektum vagy vonzza magát, mindaddig, amíg a munkát elvégzik. Valójában lehet, hogy nem is tudja, milyen alakú egy adott tárgy valójában. Ez lehet egy téglalap, egy kör vagy bármely más tárgy, amely az alakból származik. Csak azt kell tudnia, hogy leszármazottja az alakból, így bármilyen üzenetet küldhet neki, amelyet egy alak kaphat.
egy objektumorientált nyelv öröklési képessége egy teljesen új dimenziót adott a programozáshoz. A korábbi magas szintű nyelv elsajátítása elsősorban a nyelvi szintaxis elsajátításával (a nyelvi nyilatkozatok felépítésével) volt kapcsolatos, ami nem olyan nehéz. Egy objektumorientált nyelven még mindig szükség van a szintaxis megtanulására, de sokkal nagyobb feladat a standard osztályhierarchiák megismerése—amelyek több ezer osztályt is tartalmazhatnak, mindegyik osztály saját módszereivel. Érdemes azonban, mert egy objektum örökli a szülő attribútumait és viselkedését. A programozó elkerülheti a felesleges munkát egy meglévő objektum megtalálásával, amely már a legtöbb szükséges dolgot elvégzi. Ezután az új képesség fokozatosan hozzáadható. Az eredmény alacsonyabb költség, jobb minőségű szoftver.
Ez a jellemző az automatikus dokumentációs funkciók több objektumorientált nyelven történő felvételéhez is vezetett. A korábbi nyelvekben a dokumentációt—ha egyáltalán létrehozták-külön-külön végezték el, szinte utógondolatként. Most dokumentációs információk is szerepel az objektum forráskódját, és használják, hogy létrehoz egy Hypertext Markup Language (HTML) dokumentum automatikusan, kiegészítve hiperhivatkozások fel-le az osztály hierarchiák, amely lehet megtekinteni egy internet böngésző. Ez sokkal könnyebbé teszi a pontos, naprakész dokumentáció fenntartását.
polimorfizmus.
az objektumorientált nyelv következő fontos jellemzője a polimorfizmus, ami azt jelenti, hogy egy leszármazott objektumnak nem kell pontosan olyan üzenetre reagálnia, mint az őse. Egy új objektum felülírhatja a szülő módszereit, ami miatt az új objektum másképp reagál az üzenetre. Például egy ablakos rendszer közös osztálya egy összetevő, amely látható objektumot jelent. Az összetevő a képernyő minden látható objektumának ősosztálya: ikonok, gombok, menük, csúszdák, jelölőnégyzetek, rádiógombok, akár ablakok. Ezek a leszármazási osztályok felülírják a komponens néhány módját a viselkedés megváltoztatására. Például egy Ikonobjektumnak kis képként kell megjelennie. Az ikon felülbírálja a komponens rajzolási módját a kép megjelenítéséhez.
Common Object-Oriented Languages
Common object-oriented languages include Smalltalk, C, Java, and other languages such as BASIC and PASCAL.
Smalltalk.
a Smalltalk volt az eredeti objektumorientált nyelv, amelyet a Xerox az 1970-es évek elején fejlesztett ki. Azóta számos variációt vezettek be. Még mindig használják, de a széles körű elfogadást akadályozta az egyetemes szabvány hiánya.
C++.
C + + a C nyelv kiterjesztése, amely OOP képességeket biztosított. Ez talán a legelterjedtebb objektum-orientált nyelv jelenleg használatban. A C egy hibrid nyelv, mivel szabványos C programokat állít össze; nem igényel objektumok használatát. Ez lehetővé teszi, hogy kihasználja a meglévő C szoftvert, miközben objektumorientációt használ új szoftverekhez. A C-t az ANSI szabványok szabályozzák.
Java.
a Java a legszélesebb körben elfogadott tiszta objektumorientált nyelv. A Sun Microsystems fejlesztette ki eredetileg a kis készülékek vezérlési nyelveként. Azonban ideálisnak bizonyult az internethez való használatra. Egy Java kisalkalmazás beágyazható egy weboldalba. Amikor egy böngésző betölti a weboldalt, az is betölti és megjeleníti az appletet. A Sun továbbra is szigorúan ellenőrzi a nyelvi szabványt.
a platformok közötti működőképesség megkönnyítése érdekében (teljesen különböző számítógépes típusokon dolgozva újrafordítás nélkül) a Java két részből áll. A fordító olyan objektumfájlt állít elő, amelyet csak Java virtuális gép (JVM) hajthat végre. Minden támogatott operációs rendszerhez külön JVM áll rendelkezésre (Windows, Unix/Linux vagy Solaris). Ez teszi a Java programokat képes futtatni bármelyik ilyen rendszerek nélkül recompiling.
egyéb nyelvek.
a legtöbb ma használt nyelv lehetővé teszi az objektumorientáció valamilyen formáját. BASIC objektum-orientált vizuális ALAPTÁ fejlődött; PASCAL objektum-orientált DELPHI. Általában ezek hibrid nyelvek, mint például a C, amelyek támogatják az objektum tájolását anélkül, hogy megkövetelnék.
Lásd még fordítók; egér; eljárási Nyelvek.
Donald M. McIver
bibliográfia
Deitel, Harvey M., and Paul J. Deitel. Java: hogyan kell programozni, 2.ed. Felsőnyerges folyó, NJ: Prentice Hall, 1998.
Voss, Greg. Objektum-Orientált Programozás, Bevezetés. -Osborne McGraw-Hill, 1991.