My Opera is closing 3rd of March

D.v.d blog

Ez meg az...

Eiffel #1 - Bevezetés és alapok

Az előző félévben megismertem az Eiffel programozási nyelvet... vagy inkább módszertant... nem egyszerű eldönteni smile 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.

Red Alert 3Nem vágom

Write a comment

New comments have been disabled for this post.

February 2014
M T W T F S S
January 2014March 2014
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28