Eiffel #1 - Bevezetés és alapok
Wednesday, February 9, 2011 4:49:38 PM
Az előző félévben megismertem az Eiffel programozási nyelvet... vagy inkább módszertant... nem egyszerű eldönteni
Mindenesetre megkedveltem. Mivel programozó vagyok, ezért úgy gondoltam, hogy elfér egy pár részes tutorial a blogomban.
Mindenesetre megkedveltem. Mivel programozó vagyok, ezért úgy gondoltam, hogy elfér egy pár részes tutorial a blogomban.Az Eiffelt Bertrand Meyer fejlesztette ki. Az alapötlete az volt, hogy a programozók megbízható és újrafelhasználható modulokat készíthessenek. Az Eiffel nem csak egy programnyelv, hanem egy egész programozási módszertan, amely magába foglalja az analízist, a tervezést, az implementálást, a karbantartást és a dokumentálást. A nyelv tulajdonságait most nem sorolom fel, a későbbiekben úgyis kiderül. Kis ízelítőnek: többszörös öröklődés, Design by Contract, generikusok... Akit érdekel az a tutorialban többek közt ezt is elolvashatja. Aki kedvet kap hozzá, annak elsősorban az Eiffel honlapról letölthető Eiffel Studio-t ajánlom. A kicsit mazochistábbak próbálkozhatnak a Smart Eiffel fordítóval is, bár ez nem tartalmaz fejlesztői környezetet és pár dolgot máshogy kezel (privát öröklődés...).
Rendszerfelépítés
Egy Eiffel program (hasonlóan a többi objektum orientált nyelvben írt programhoz) osztályokból áll, melyeket futás közben példányosítanunk kell. Az osztályok természetesen tartalmazhatnak adattagot, és funkciókat, viszont ez egy kicsit összetettebb dolog, ezért majd később visszatérünk rá.
Az osztályok között két féle reláció állhat fenn:
- Egy osztály kliense egy másik osztálynak.
- Egy osztály örököse egy másik osztálynak.
Az első eset akkor áll fenn, amnnyiben egy B osztály A osztály szolgáltatásait kívánja használni. A második esetben ha B osztály A egyik leszármazottja az azt jelenti, hogy B osztályt úgy készítjük el, hogy az örökli A osztály tulajdonságait.
Minden osztály az ANY osztályból származik akár direkt módon (explicit megadjuk), akár indirekt módon. Az ANY osztályban kerül megvalósításra rengeteg általános funkció, melyeket gyakran használunk (klónozás, egyenlőségvizsgálat, képernyőre kiírás...). A NONE osztály pedig minden osztály leszármazottja, neki viszont már nem létezhet explicit leszármazottja, igazából csak kényelmi funkciót szolgál.Hello World
Elérkezett az idő, hogy megírjuk Eiffelben az első "Szevasz" programunkat. Egész egyszerűen egy eljárás, jelen esetünkben a make fog lefutni, mely egyben konstruktorként is szolgál.
class HELLO
create
make
feature
make is
do
print ("Hello World%N")
end
end
A gyakorlatban azonban az Eiffel kicsit dokumentáltabb kódot javasol:
indexing
description: "Simple message printing"
author : "David Szabo"
class HELLO
create
make
feature
make is
-- Print a simple message.
do
io.put_string("Hello World%N")
io.put_new_line
end --make
end -- class HELLO
A két kód azonos végeredményt ad, a különbség csupán az olvashatóság. A sorok végén a pontosvessző opcionális, a szintaxis nem követeli meg.
Az indexing rész egyszerűen a dokumentálás megkönnyítésére szolgál.
Az osztályok nevét nagybetűkkel szokás írni (a SmartEiffel ezért nyafog is). Minden osztálynak lehetnek feature-jei (a NONE-t leszámítva), ebben az esetben ez a make. A create részben felsorolt eljárások használhatók az osztály konstruktorjaiként.
A -- szolgál a kommentek írására, pontosabban fejléc kommentek írására (header comments). Ezeket a dokumentáció készítő eszköz képes felismerni.
Az eljárás kezdetét a do kulcsszó jelöli és az end zárja. Az eljáráshívás pedig hasonló a többi nyelvben megszokottal. Az io osztály put_string műveletét szeretnénk meghívni.
Futtatás előtt Eiffel Studioban már csak az a dolgunk, hogy ezt az osztályt állítsuk be root osztályként, root eljárásként pedig a make eljárást adjuk meg, ugyanis futtatáskor ebben az osztályban levő konstruktor fog először lefutni (legtöbbször ezt az eljárást main-nek is szoktuk nevezni). (Megjegyzés: SmartEiffelben nem létezik az io referencia, helyette a std_output.put_string() használható.)
Ennyi volt mára! Legközelebb az osztályok felépítéséről, tulajdonságairól, példányosításairól... és az ezekhez kapcsolódó dolgokról fogok mesélni.





