Aspektus-orientált nyelvek XML reprezentációja

Méret: px
Mutatás kezdődik a ... oldaltól:

Download "Aspektus-orientált nyelvek XML reprezentációja"

Átírás

1 Aspektus-orientált nyelvek XML reprezentációja Kincses Róbert Debreceni Egyetem, Informatikai Intézet Tartalomjegyzék 1. Bevezetés 2 2. Aspektus-orientált programozás és az AspectJ AOP alapelvek Aspektusok és komponensek Aspektus-orientált rendszer Az AspectJ alapjai Kapcsolódási pont (join point) Vágási pont (pointcut) Tanács (advice) Típusközi deklaráció (Inter-type declarations) Aspektus (aspect) XML specikációk Az XML-r l XSLT és XPath Az AspectJ XML reprezentációja Az XML formátum kialakítása Az XML dokumentum felhasználása AspectJ kód el állítása Más transzformációk

2 5. Összefoglalás és további fejlesztési irányok 14 Kivonat Az dolgozat témája egy olyan XML nyelv bemutatása, mely lehet vé teszi egy aspektus-orientált nyelv elemeinek reprezentálását. Egy olyan reprezentáció kerül bemutatásra, melyet egy konkrét nyelv alapján alakítunk ki, majd megvizsgáljuk ennek felhasználhatóságát is: hogyan lehetséges egy XML dokumentumból az eredeti nyelv fordítója számára értelmezhet szöveget nyerni, valamint milyen más célokra lehet azt felhasználni. Röviden áttekintjük, milyen más lehet ségeket nyújt az XML reprezentáció. Azt is megvizsgáljuk, hogy egy aspektus orientált nyelv mely részeit érdemes és lehetséges XML segítségével leírni. 1. Bevezetés Napjainkban a legtöbb szoftvert az Objektum-orientált technológiák segítségével készítik el. Az OO elvek használata a gyakorlatban hasznosnak bizonyult, a valós világ rendszerei jól modellezhet ek segítségükkel. Egy jól megtervezett és kivitelezett OO program karbantartható és könnyen továbbfejleszthet. Azonban léteznek olyan problémák, amelyeket nehéz elegánsan megvalósítani OO technikák segítségével. Olyan feladatokról van szó, amelyek a rendszer egészére vonatkoznak és a hagyományos programegységek határait átívelik. Az ilyen problémák megoldására az OO technikák nem kínálnak egyszer módot, hiszen a megoldás gyakran a forráskódban szétszórtan helyezkedik el. Az is el fordulhat, hogy a program egyes zárt egységei több feladatot látnak el egyszerre úgy, hogy a részfeladatok összefonódnak. Mindkét esetben nehéz újrafelhasználható formába önteni a kérdéses kódot. Az ilyen programot nehéz karbantarani, módosítani és továbbfejleszteni. Az ilyen típusú problémák megoldására született meg az Aspektus-orientált programozás (AOP). Az AOP egyszer és újrafelhasználható formában modellezi a hagyományos programozási módszerek egységeit szétfeszít problémákat. Az Aspektus-orientált programozás egyre népszer bb manapság, ezt bizonyítja, hogy több konkrét nyelv és keretrendszer is megjelent. Ennek a cikknek a célja, hogy egy konkrét aspektus-orientált nyelven keresztül megvizsgálja, milyen módon lehetséges azt XML dokumentumok segítségével leírni. Emellett, az XML dokumentumok felhasználásanak módjai is bemutatásra kerülnek. 2

3 2. Aspektus-orientált programozás és az AspectJ Ebben a fejezetben az Aspektus-orientált programozás elveinek rövid áttekintése található. Az fogalmak általános bemutatása után egy konkrét AOP nyelv, az AspectJ alapelvei kerülnek tárgyalásra AOP alapelvek A bevezet fejezetben tárgyalt nehézségekre kerestek és találtak egy megoldást [1] a XEROX Palo Altoi Kutatási Központjának (SPARC) munkatársai. Ezeket az objektumok határain átível, a programot független helyeken befolyásoló döntéseket, tényez ket elnevezték aspektusnak (aspect), és az aspektusokkal operáló programozási paradigmát pedig aspektus-orientált programozásnak (AOP). A megoldás életképességét mutatja, hogy azóta többféle implementáció, keretrendszer (framework) is megjelent.[2] 2.2. Aspektusok és komponensek A hagyományos (procedurális és objektum-orientált) programozási nyelvek segítségével úgy oldhatunk meg egy feladatot, hogy komponens ekre bontjuk. A komponensek (legalábbis jó tervezés esetén) jól körülhatárolható részfeladatokat oldanak meg, a teljes rendszer felépítésében elemi részekként vesznek részt. Könnyen modellezhet ek a hagyományos nyelvek eszközei (eljárások, metódusok, objektumok) segítségével. Ezzel szemben létez(het)nek olyan jellemz i a feladatnak, melyeket nehéz komponensekkel megvalósítani, mert a rendszert egészében hatják át és a komponensek teljesítményét, viselkedését, szemantikáját módosítják. Ezeket a jellemz ket nevezzük aspektusoknak. Ezt a két meghatározást alapul véve, az AOP célja a következ : Lehet vé tenni, hogy a komponensek és az aspektusok könnyen elkülöníthet ek legyenek egy rendszerben. Olyan mechanizmusok biztosítása, melyekkel a komponensek és az aspektusok absztrakt módon megfoghatóak és felépíthet bel lük a kívánt rendszer Aspektus-orientált rendszer Egy rendszer AOP alapú megvalósítása a következ kb l áll: Egy hagyományos programozási nyelv, amely segítségével a komponensek megvalósíthatóak. 3

4 Egy, vagy több aspektus nyelv, amelyekkel az aspektusok leprogramozhatóak. Egy aspektusszöv (aspect weaver), amely a nyelveket kombinálja. A komponenseket és az aspektusokat megvalósító programok, mindkett a megfelel nyelven megírva. A szövést végre lehet hajtani fordítási id ben, vagy elhalasztható a futási idejére. A kívánt rendszer létrehozásához az aspketusszöv nek fel kell dolgoznia a komponens és az aspektus nyelvet is, megfelel en összedolgozva ket. Nagyon fontos fogalom a kapcsolódási pont (join point), amely a komponens nyelv azon szemantikai elemeit jelöli, amelyekhez az aspektus nyelv kapcsolódhat Az AspectJ alapjai Az AspectJ egy általános célú, aspektus-orientált kiterjesztése a Java nyelvnek, egy új fogalmat és néhány új konstrukciót vezet be. Ezek segítségével lehet vé válik az objektumok határait átível szempontok leírását. Ez a fejezet ezeket a nyelvi elemeket taglalja. A teljes dokumentációt [3] tartalmazza Kapcsolódási pont (join point) A kapcsolódási pont (join point) az egyetlen új fogalom, amit az AspectJ bevezet, amely valójában egy már létez fogalom megnevezése. Egy kapcsolódási pont egy jól deniált pont a program végrehajtásában. Az AspectJ több ilyen pontot is deniál. Néhány konkrét kapcsolódási pont típus: Metódus hívás (Method Call) Amikor a metódust meghívják, a nem statikus metódusok super hívásait nem beleszámítva. Konstruktor hívás (Constructor call ) Amikor egy objektum konstruktorát meghívják. A létrejöv objektum a konstruktor hívás kapcsolódási pont visszatérési értéke, tehát a kapcsolódási pont visszatérési értékének típusa az objektum típusa. Az objektum elérhet egy visszatérés után tanács (lásd 2.4.3) segítségével. Mez hivatkozás (Field reference) Amikor egy nem statikus mez re hivatkoznak. Mez beállítása (Field set) Amikor a mez nek értéket adnak. Úgy tekintjük, hogy a mez beállítása kapcsolódási pontnak egy argumentuma van, amely az az érték, amelyre a mez t beállítják. A visszatérési értéke nincs (típusa void). 4

5 Vágási pont (pointcut) A vágási pontok megadják, hogy az AspectJ mely pontokon tudja egy program futását módosítani. A vágási pont (pointcut) segítségével ki lehet választani konkrét pontokat. Egy vágási pont tartalmazza a kapcsolódási pont típusát és a konkrét pontot. Például a call(void Point.setX(int)) vágási pont egy metódus hívás kapcsolódási pontot határoz meg, méghozzá a Point osztály setx metódusát, amelynek egy int paramétere van. Az AspectJ lehet séget biztosít a kapcsolódási pontok kombinálásara (vagy, és &&, nem!) és az összetettebb vágási pontokat el is nevezhetjük. A név segítségével kés bb egyszer bben hivatkozhatunk az adott vágási pontra. Mivel egy vágási pont a kapcsolódási pontokat nem csak egy típusból választhatja ki, hanem tetsz legesen sokból, ezért azt mondhatjuk, hogy átvágja (crosscut) a típusok határait. Amikor a kapcsolódási pontok kiválasztásánál pontos metódusok, mez k vagy más egységek nevét adjuk meg, akkor név alapú (name based) vágásról van szó. Lehet ség van azonban az úgynevezett jellemz alapú (property based) vágásra. Ebben az esetben nem pontos neveket, hanem mintát kell megadni, amely egyszerre több metódusra, mez re illeszekedhet. A minták mellett léteznek olyan vágási pontok is, amelyek deniciójukból adódóan választanak ki több kapcsolódási pontot egyszerre Tanács (advice) A vágási pontok által kiválasztott kapcsolódási pontokhoz kapcsolódó, típusokat átível viselkedés implementálását teszik lehet vé a tanács (advice). Az advice rendelkezik törzssel, mely programkódot tartalmaz. A kód akkor fut le, ha az advice-hoz kapcsolt vágási pontot elérte a program futása. Az AspectJ többféle advice-t deniál: before Akkor fut le, amikor a program futása elérte a kapcsolódási pontot, azel tt, hogy a kapcsolódási pontnál a program végrehajtása folytatódna. after Akkor fut le, amikor egy kapcsolódási pontnál a program futása éppen befejez dött. Mivel egy Java program futáskor egy kapcsolódási pontot kétféleképpen hagyhat el, ezért három fajta after tanács létezik: normál befejez dés esetén az after returning, kivétel esetén az after throwing tanács használható. Ha mindkét esetet gyelembe akarjuk venni, akkor egyszer en az after tanácsot kell alkalmaznunk. 5

6 around A kapcsolódási pont kódja helyett fut le. A kapcsolódási pont végrehajtása a proceed meghívásával lehetséges, amelynek paraméterezése megegyezik a tanács paraméterezésével. A vágási pontok a kapcsolódási pontok kiválasztása mellett képesek felfedni a végrehajtási környezetét az általuk kiválasztott kapcsolódási pontoknak (exposing context). A felfedett értékek használhatóak a tanácsok törzsében. A tanács deklarációjának a paraméterlistája adja meg a felfedett környezet elemeinek a nevét Típusközi deklaráció (Inter-type declarations) A típusközi deklaráció keresztül vágja az osztályokat és azok hierarchiáit. Olyan tagokat deklarálhatnak, amelyek több osztályon vágnak keresztül, vagy megváltoztathatják az osztályok között fenálló örökl dési viszonyt. A tanácsoktól eltér módon, fordítási id ben fejtik ki hatásukat. Nagyon hatékonyan használhatók abban az esetben, ha valamilyen több, egymástól az osztály-hierarchiában távol álló osztályt kell azonos funkcionalitással felruházni. Az AspectJ nélkül ezt a feladatot egy interfész bevezetésével lehetne megoldani (melyet a megfelel osztáyok implementálnának). A típusközi deklarációk segítségével azonban az eredeti osztályok forráskódjának módosítása nélkül, egy helyen lehet a megfelel funkcionalitást implementálni Aspektus (aspect) Az aspektusok vágási pontokat, tanácsokat és típusközi deklarációkat fognak egybe. Az aspektus hasonlít az osztályra, lehetnek metódusai, mez i, inicializátoria az aspektus-orientált tagok mellett. 3. XML specikációk Ez a fejezet röviden ismerteti azokat a XML specikációkat, melyeket a reprezentációhoz felhasználunk. El ször az XML kerül bemutatásra, majd az XSLT és az XPath specikációk rövid leírása következik Az XML-r l Az extensible Markup Language (XML) specikációját [4] a W3C XML Core Munkacsoport készítette. Az XML egy részhalmaza az SGML-nek. Az XMLt úgy tervezték meg, hogy a feldolgozásához használt eszközök könnyen imp- 6

7 lementálhatóak legyenek és biztosítsa az interoperábilitást mind a HTML-el, mind az SGML-el. Az XML segítségével nyelveket lehet kialakítani, amelyek dokumentum osztályokat írnak le. Ezek a dokumentumok hierarchikus szerekzet adatok tárolhatnak. A W3C ajánlása az XML dokumentumokat feldolgozó programok viselkedésével is foglalkozik. Egy XML dokumentum entitásokból áll, amelyek elemzett és nem elemzett részekre osztható. Az elemzett részek karakterekb l állnak, melyek egy része karakteres adat, egy része pedig úgynevezett markup (jelölés). A markup adja meg a dokumentum részeinek leírását és alakítja ki annak logika struktúráját. Egy egyszer XML dokumentum a következ képpen néz ki: <?xml version="1.0" standalone="yes"?> <list> <element value="5"/> <element value="1"/> <list> Az els sor az úgynevezett prolog részbe tartozik, melynek feladata, hogy speciális információkat tároljon az egász dokumentumra vonatkozóan. A fenti példa természetesen nem meríti ki a prolog összes lehet ségét. Sok más mellett itt lehet megadni a dokumentum kódolását is. Az XML dokumentum mindig tartalmaz pontosan egy markup elemet, amelyet a gyökérelemnek nevezünk. Ez lehet üres is. A további elemek egymásba ágyazva, tetsz leges számban és sorrendben helyezhet ek el a dokumentumban (a gyökérelem tartalmaként). Az XML specikáció nem határoz meg markup készletet, melyb l dokumentumainkat felépíthetjük (extensible), hanem a logikai szerekzetre határoz meg szabályokat. Az egyik nagyon fontos követelmény a jól formázottság (well-formedness), mely azt jelenti, hogy a tagek nem fedhetik át egymást: vagy azonos szinten kell lenniük a hierarciában, vagy teljes tartalmazás kell fennálljon. Egy másik tulajdonsága az XML dokumentumnak az érvényesség (validity). Ahhoz, hogy egy XML dokumentum érvényes legyen, meg kell adni, hogy milyen szabályoknak kell megfelelnie. Erre több lehet ség is van, az egyik ezek közül a Document Type Denition (DTD) megadása. Egy XML dokumentum érvényes, ha jól formázott és megfelel a DTD-nek. Az XML használalata igen elterjedt manapság, szinte minden komolyabb szoftver rendszer használja valamilyen formában. Az XML specikáció mellett sok olyan specikáció jelent meg, amely a XML-re épül, annak egyfajta alkalmazása.[5] 7

8 3.2. XSLT és XPath A dolgozatban közvetlenül is felhasznált XML-re épül specikációk a következ k: az XSL Transzformációk (XSL Transformations) [6] és az XML Útvonal nyelv (XML Path Language) [7], amelyek az XSL javaslat család részei. Az el bbi olyan transzformációk leírására szolgál, amellyel XML dokumentumok alakíthatóak át. Az XPath egy olyan nyelvet deniál, amellyel az XML dokumentum részeire lehet hivatkozni. Az XSLT használja az XPath-t. Egy XSLT stíluslap egy XML dokumentum osztály prezentációját adja meg úgy, hogy megadja, hogy a dokumentum osztály egy példányát hogyan kell egy másik XML dokumentumba transzformálni. Az eredmény dokumentum több fajta lehet, mint például XHTML vagy XSL-FO. Az XSLT mük dését röviden úgy lehet összefoglalni, hogy egy forrás fát átalakít egy eredmény fává. A transzformálási folyamat során az XSLT az XPath segítségével jelöli ki a forrás dokumentum azon részeit, amelyek bizonyos mintákra illeszkednek. A feldolgozás során az illeszked rész a minta alapján kerül átalakításra. A forrás dokumentum azon részei, melyekre egyetlen minta sem illeszkedik, változtatás nélkül kerülnek az eredmény dokumentumba. A transzformációt egy olyan program végzi el, amely feldolgozza a forrás dokumentumot és a hozzá kapcsolt stíluslapot, majd a stíluslapban talált transzformációs utasításoknak megfelel en el állítja az eredmény dokumentumot. A stíluslapot a követekz módon lehet az XML állományhoz csatolni: <?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="simple.xsl"?> <list> <element value="5"/> <element value="1"/> </list> Így a simple.xsl állomány a fenti XML dokumentum stíluslapja lett. A stíluslap tartalma a következ lehet: <?xml version="1.0" encoding="iso "?> <xsl:stylesheet version="1.0" xmlns:xsl=" <xsl:template match="/"> <html> <head><title>list</title></head> <body> 8

9 <xsl:apply-templates/> </body> </html> </xsl:template> <xsl:template match="list"> <ul> <xsl:apply-templates/> </ul> </xsl:template> <xsl:template match="element"> <xsl:if = 5"> <li><xsl:value-of </xsl:if> </xsl:template> </xsl:stylesheet> Amint a példán is látszik a stíluslap maga is egy XML állomány. A második sor tartalmazza a gyökér elem nyitó tagjét és egyben a stíluslap névterületét is meghatározza (ezt rögzíti a specikáció). Ezek után minták következnek (<xsl:template>), melyek megadják, mire illeszkednek. Az sikeres illesztés mindig kiválaszt egy aktuális csomópontot és egy aktuális csomópont-listát. Egy-egy mintán belül helyezkednek el az eredmény dokumentumba kerül elemek és a további szabályok. A példa tartalmaz egyszer XPath kifejezéseket is, mint például = 5 kifejezés a feltételes feldolgozó utasítás feltételeként. Ha ez a kifejezés igaz, azaz az aktuális <element> tag value attribútumának értéke 5, akkor az <xsl:if> tagben megadott formázási utasítások végrehajtódnak. A transzformáció eredménye a fenti XML állományt feltételezve az alábbi: <html> <head><title>list</title></head> <body> <ul> <li>5</li> </ul> </body> </html> 9

10 4. Az AspectJ XML reprezentációja Ennek a szakasznak a célja, hogy röviden bemutassa, milyen módon lehetséges az AspectJ aspektus-orientált nyelvi elemeit XML dokumentumok segítségével reprezentálni. Emellett azt is megvizsgájuk, hogyan lehet az XML dokumentumokat felhasználni Az XML formátum kialakítása Ahhoz, hogy az AspectJ elemeit XML dokumentumok segítségével reprezentáljuk, el ször ki kell alakítani a megfelel XML szintaktikáju nyelvet. Erre a célra szabványosított megoldás nem áll rendelkezésre, tehát saját formátumot kell létrehozni. Az XML nyelv kialakításánál érdemes olyan megoldásra törekedni, amely olyan XML dokumentumokat eredményez, amelyek az ember számára is könnyen el állíthatóak és olvasatóak. Így megkönnyíthet az XML dokumentumként reprezentált AspectJ kóddal való munka, ugyanis annak szerkesztése nem (feltétlenül) igényel speciális eszközöket (XML szerkeszt t). Az AspectJ kód átalakítását több lépésben végezhetjük el. A nyelv elemeit kív lr l befelé haladva alakítjuk át (a nagyobb szintaktikai egységeket vesszül el ször). A végcél az, hogy a lehet legtöbb részt írjuk le XML segítségével. Lássuk az átalakítás lépéseit, néhány példával illusztrálva! Els lépésként tételezzük fel, hogy egy-egy aspketus denícója egy-egy külön állományban szerepel és abban az állományban csak egy aspektus szerepel. Adott egy SimpleAspect.aj nev állomány, melyben szerepel egy aspektus: public aspect SimpleAspect { //... } A fenti feltevés mellett egyszer vé válik a gyökérelem megválasztása, amelyet rögtön felruházhatunk az aspektus jellemz ivel is: <?xml version="1.0" encoding="iso "?> <aspect name="simpleaspect" modifier="public"> </aspect> Az itt látható aspektusnak csak a neve (SimpleAspect) és egy módosítója (public) van megadva. Az aspektus más jellemz it hasonló módon lehet leírni. 10

11 Az aspektus törzsét nyilván az <aspect> tagek között kell megadni. Az ott elhelyezhet elemeket a fentihez hasonlóan képezhetjük le XML elemekre. Vegyük sorra az aspektus vágási pontjainak leírását: pointcut dosomething(): call( void Foo.doSomething(int) ); Ennek a vágási pontnak egyfajta leképezése lehet a következ : <pointcut> <name>dosomething</name> <primitive type="call"> void Foo.doSomething(int) </primitive> </pointcut> Ezen a példán egy egyszer vágási pont XML reprezentációját láthatjuk. A vágási pontnak a neve (dosomething) valamint az egyetlen primitív vágási pontja (<primitive>) van megadva. Egy vágási pont ennél sokkal összetettebb is lehet, ekkor több dolgot kell leírnunk: pointcut argcheck(int score): call(void Proba.doSomething(int)) && args(score); Ebben az esetben a vágási pontnak formális paramétere is van, illetve két elemi vágási pontot is tartalmaz, melyek and kapcsolatban vannak. Így a reprezentáció is bonyolultabbá válik: <pointcut> <name>argcheck</name> <formals> <formal type="int" name="score"></formal> </formals> <and> <primitive type="call"> void Proba.doSomething(int) </primitive> <primitive type="args"> score </primitive> </and> </pointcut> 11

12 A teljes vágási pont deníciónak megfelel XML reprezentáció elkészíthet az AspectJ referencia alapján. A következ példában egy egyszer tanács kódja látható: before(int score): argcheck(score) { if( score < 0 score > 100 ) throw new IllegalArgumentException("illegal score: "+score); } Természetesen a példában nem szerepel a tanács minden lehetséges jellemz je. Egy lehetséges reprezentáció a következ : <advice type="before"> <formals> <formal type="int" name="score"></formal> </formals> <pointcut> <name>argcheck</name> <exposes>score</exposes> </pointcut> <body> if( score < 0 score > 100 ) throw new IllegalArgumentException("illegal score:"+score); </body> </advice> A fentiek csupán egyszer példák, melyek megmutatják, hogy lehetséges XML formában reprezentálni egy aspektust. A reprezentáció nem végleges és nem teljes, azonban az alapvet felhasználási lehet ségek kipróbálásához megfelel Az XML dokumentum felhasználása Ebben a fejezetben azt vizsgáljuk meg, hogy az el z ekben el állított XML dokumentumot milyen módon lehet felhaszálni. Az átalakítás technológiája egyértelm en az XSLT, így a különféle kimeneti formátumok el állításához csupán egy-egy XSL transzformációt leíró állományt kell készíteni AspectJ kód el állítása Ez a szakasz az AspectJ programkód el állítási módját vizsgálja, mely az 4.1 fejezetben leírtak megfordítása és automatikus végrehajtása. Nyilvánvaló, 12

13 hogy ez a m velet akkor nyer értelmet, amikor nem rendelkezünk az AspectJ kóddal, hanem csupán az XML dokumentum áll rendelekzésünkre. A következ kben egy olyan XSL transzformáció kerül részleteiben bemutatásra, amely az el z ekben tárgyalt AspectJ kód el állítására alkalmas. El ször lássuk, hogyan lehet a forrás vázát, az aspektust el állítani: <xsl:template match="aspect"> <xsl:value-of select="@modifier"/> <xsl:text> aspect </xsl:text> <xsl:value-of select="@name"/> { <xsl:apply-templates select="pointcut"/> <xsl:apply-templates select="advice"/> } </xsl:template> A fent megadott template egy <aspect> tagre alkalmazva, a példa esetén a következ kimenetet adja: public aspect SimpleAspect {... } Amint látható, a template további template-k alkalmazását írja el, a következ példa ezek közül az els t szemlélteti: <xsl:template match="pointcut"> pointcut <xsl:apply-templates select="name"/> <xsl:apply-template select="formals"/> <xsl:apply-templates select="and"/> <xsl:apply-templates select="primitive"/> <xsl:text>;</xsl:text> </xsl:template> A kimenet többféleképpen alakulhat. Ha a vágási pont tartalmaz formális paramétereket, akkor azok a <formals> tagekre illeszked minta alapján generálódnak. Ha a vágási pont több elemi vágási pontból tev dik össze, akkor azok valamilyen logikai jellel vannak összekapcsolva. A fenti részlet csak az and kapcsolatra mutat példát, azonban a not és az or hasonlóképpen implementálható. Amennyiben csak egyetlen elemi vágási pontot tartalmaz, akkor csupán annak a kódja generálódik. Utolsóként következzen egy elemi vágási pont transzformáláshoz szükséges kód és annak eredménye: 13

14 <xsl:template match="primitive"> <xsl:value-of <xsl:apply-templates/> ) </xsl:template> Ez a minta a következ kimenetet adja egy metódushívás elemi vágási pontjára alkalmazva: pointcut dosomething: call( void Proba.doSomething(int) ) ; A többi elem az XML dokumentumban hasonló elvek alapján könnyen feldolgozható. Az eredmény pedig egy olyan szöveg, amelyet az AspectJ fordító képes értelmezni Más transzformációk Az XML dokumentumok felhasználására más lehet ség is adódik. Ha a fent ismertetett formátumot megfelel en kiegészítjük, akkor lehetségessé válik dokumentáció mellékelésére az elemekhez. Ezeket a dokumentációs részeket egy megfelel transzformáció segítségével összegy jthetjük és el állíthatjuk az aspektushoz tartozó dokumentációt, például HTML formátumban. Lehetséges egy olyan fordító programot írni, amely közvetlenül az XML dokumentum feldolgozásával és a Java osztályok segítségével el állítja az aspektus-orientált kóddal kiegészített class állományokat. A kimeneti formátumok számának és a felhasználási lehet ségeknek csak az XSL transzformációk lehet ségei és a kiválasztott XML reprezentáció korlátai szabnak határt. 5. Összefoglalás és további fejlesztési irányok A dolgozat egy konkrét AOP nyelv, az AspectJ elemeinek XML dokumentumokkal történ reprezentációját ismerteti. Röviden vázolja a reprezentáció el állítását, majd annak fontosabb felhasználásait is tárgyalja. Lássunk néhány további fejlesztési lehet séget. A 4.1 részben az XML dokumentum el állítása kézzel történt. Az egyik lehet ség ennek a folyamatnak az automatizálása, mely egy speciális fordító program megírását jelenti. A fordítás eredménye az XML dokumentum lenne. A XML formátum automatikus ellen rzéséhez szükséges lenne egy séma el állítása. Ekkor lehet vé válna, hogy az XML állomány feldolgozás közben validáláson is átessen. 14

15 Amennyiben a XML reprezentáció elég általánossá válik és kevés nyelvfügg dolgot tartalmaz, akkor lehet ség nyílik arra, hogy egy XML dokumentumból más aspektus-orientált nyelveknek megfelel forráskódot is generáljunk. Ez azonban a lehetséges nyelvek megvizsgálását és az XML reprezntáció tökéletesítését kívánja meg. Hivatkozások [1] G. Kiczales, J. Lamping, A. Mendhekar, C. Maeda, C. Lopes, J. Loingtier and J. Irwin: Aspect-Oriented Programming, European Conference on Object-Oriented Programming (ECOOP), June [2] AOSD Homepage Research Projects, [3] The AspectJ T M Programming Guide checkout /aspectj-home/doc/progguide/index.html [4] Tim Bray, Jean Paoli, C. M. Sperberg-McQueen, Eve Maler, François Yergeau: Extensible Markup Language (XML) 1.0 (Third Edition), [5] W3C Technical Reports and Publications [6] James Clark (ed): XSL Transformations (XSLT) Version [7] James Clark, Steve DeRose: XML Path Language (XPath) Version

Aspektus-orientált nyelvek XML reprezentációja. Kincses Róbert Debreceni Egyetem, Informatikai Intézet

Aspektus-orientált nyelvek XML reprezentációja. Kincses Róbert Debreceni Egyetem, Informatikai Intézet Aspektus-orientált nyelvek XML reprezentációja Kincses Róbert Debreceni Egyetem, Informatikai Intézet kincsesr@inf.unideb.hu Bevezetés OOP: helyesen alkalmazva jó minőségű szoftvert lehet vele előállítani

Részletesebben

Dokumentumformátumok Jelölő nyelvek XML XML. Sass Bálint sass@digitus.itk.ppke.hu. Bevezetés a nyelvtechnológiába 2. gyakorlat 2007. szeptember 20.

Dokumentumformátumok Jelölő nyelvek XML XML. Sass Bálint sass@digitus.itk.ppke.hu. Bevezetés a nyelvtechnológiába 2. gyakorlat 2007. szeptember 20. XML Sass Bálint sass@digitus.itk.ppke.hu Bevezetés a nyelvtechnológiába 2. gyakorlat 2007. szeptember 20. 1 DOKUMENTUMFORMÁTUMOK 2 JELÖLŐ NYELVEK 3 XML 1 DOKUMENTUMFORMÁTUMOK 2 JELÖLŐ NYELVEK 3 XML DOKUMENTUMFORMÁTUMOK

Részletesebben

Interfészek. PPT 2007/2008 tavasz.

Interfészek. PPT 2007/2008 tavasz. Interfészek szenasi.sandor@nik.bmf.hu PPT 2007/2008 tavasz http://nik.bmf.hu/ppt 1 Témakörök Polimorfizmus áttekintése Interfészek Interfészek kiterjesztése 2 Már megismert fogalmak áttekintése Objektumorientált

Részletesebben

Már megismert fogalmak áttekintése

Már megismert fogalmak áttekintése Interfészek szenasi.sandor@nik.bmf.hu PPT 2007/2008 tavasz http://nik.bmf.hu/ppt 1 Témakörök Polimorfizmus áttekintése Interfészek Interfészek kiterjesztése Eseménykezelési módszerek 2 Már megismert fogalmak

Részletesebben

XML technikák II Kovács, László

XML technikák II Kovács, László XML technikák II Kovács, László XML technikák II Kovács, László Kelet-Magyarországi Informatika Tananyag Tárház Nemzeti Fejlesztési Ügynökség http://ujszechenyiterv.gov.hu/ 06 40 638-638 Lektor Dr. Johanyák

Részletesebben

S0-02 Típusmodellek (Programozás elmélet)

S0-02 Típusmodellek (Programozás elmélet) S0-02 Típusmodellek (Programozás elmélet) Tartalom 1. Absztrakt adattípus 2. Adattípus specifikációja 3. Adattípus osztály 4. Paraméterátadás 5. Reprezentációs függvény 6. Öröklődés és polimorfizmus 7.

Részletesebben

Szerializáció. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) Szerializáció / 22

Szerializáció. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) Szerializáció / 22 Szerializáció Tóth Zsolt Miskolci Egyetem 2014 Tóth Zsolt (Miskolci Egyetem) Szerializáció 2014 1 / 22 Tartalomjegyzék 1 Szerializációs Alapfogalmak 2 Szerializációs Megoldások Object Szerializáció XML

Részletesebben

Programozási nyelvek Java

Programozási nyelvek Java statikus programszerkezet Programozási nyelvek Java Kozsik Tamás előadása alapján Készítette: Nagy Krisztián 2. előadás csomag könyvtárak könyvtárak forrásfájlok bájtkódok (.java) (.class) primitív osztály

Részletesebben

Java programozási nyelv 4. rész Osztályok II.

Java programozási nyelv 4. rész Osztályok II. Java programozási nyelv 4. rész Osztályok II. Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet Soós Sándor 2005. szeptember A Java programozási nyelv Soós Sándor 1/17 Tartalomjegyzék

Részletesebben

C++ programozási nyelv Konstruktorok-destruktorok

C++ programozási nyelv Konstruktorok-destruktorok C++ programozási nyelv Konstruktorok-destruktorok Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet Soós Sándor 2004. szeptember A C++ programozási nyelv Soós Sándor 1/20 Tartalomjegyzék

Részletesebben

és az instanceof operátor

és az instanceof operátor Java VIII. Az interfacei és az instanceof operátor Krizsán Zoltán Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2005. 10. 24. Java VIII.: Interface JAVA8 / 1 Az interfészről általában

Részletesebben

Java programozási nyelv 5. rész Osztályok III.

Java programozási nyelv 5. rész Osztályok III. Java programozási nyelv 5. rész Osztályok III. Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet Soós Sándor 2005. szeptember A Java programozási nyelv Soós Sándor 1/20 Tartalomjegyzék

Részletesebben

XML (DTD) (XSD) DOM SAX XSL. XML feldolgozás

XML (DTD) (XSD) DOM SAX XSL. XML feldolgozás XML feldolgozás Áttekintés XML -bevezetés (XML érvényességének vizsgálata (DTD, XSD)) XML feldolgozók (DOM, SAX) XML transformációk (XSLT) Áttekintés XML -bevezetés (XML érvényességének vizsgálata (DTD,

Részletesebben

Java VIII. Az interfacei. és az instanceof operátor. Az interfészről általában. Interfészek JAVA-ban. Krizsán Zoltán

Java VIII. Az interfacei. és az instanceof operátor. Az interfészről általában. Interfészek JAVA-ban. Krizsán Zoltán Java VIII. Az interfacei és az instanceof operátor Krizsán Zoltán Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2005. 10. 24. Java VIII.: Interface JAVA8 / 1 Az interfészről általában

Részletesebben

GENERIKUS PROGRAMOZÁS Osztálysablonok, Általános felépítésű függvények, Függvénynevek túlterhelése és. Függvénysablonok

GENERIKUS PROGRAMOZÁS Osztálysablonok, Általános felépítésű függvények, Függvénynevek túlterhelése és. Függvénysablonok GENERIKUS PROGRAMOZÁS Osztálysablonok, Általános felépítésű függvények, Függvénynevek túlterhelése és Függvénysablonok Gyakorlatorientált szoftverfejlesztés C++ nyelven Visual Studio Community fejlesztőkörnyezetben

Részletesebben

Zenetár a webszerverünkön,

Zenetár a webszerverünkön, Zenetár a webszerverünkön, avagy XML használata PHP 5 alatt. Ercsey Balázs (laze) netpeople.hu Zenetár a webszerverünkön Miről lesz szó? XML Objektum orientált szemléletmód PHP4 PHP5 Az XML W3C szabvány

Részletesebben

2011.11.29. JUnit. JUnit használata. IDE támogatás. Parancssori használat. Teszt készítése. Teszt készítése

2011.11.29. JUnit. JUnit használata. IDE támogatás. Parancssori használat. Teszt készítése. Teszt készítése Tartalom Integrált fejlesztés Java platformon JUnit JUnit használata Tesztelési technikák Demo 2 A specifikáció alapján teszteljük a program egyes részeit, klasszikus V-modell szerint Minden olyan metódust,

Részletesebben

Nyilvántartási Rendszer

Nyilvántartási Rendszer Nyilvántartási Rendszer Veszprém Megyei Levéltár 2011.04.14. Készítette: Juszt Miklós Honnan indultunk? Rövid történeti áttekintés 2003 2007 2008-2011 Access alapú raktári topográfia Adatbázis optimalizálás,

Részletesebben

XSLT ( XSL Transformations)

XSLT ( XSL Transformations) XSLT ( XSL Transformations) Tartalomjegyzék: 1. Az XSLT helye... 3 2. Az XSLT feldolgozás... 3 3. Az XSLT stíluslapok felépítése... 4 3.1. Sablonok... 4 3.2. Minták és kifejezések... 4 3.3. Az XSLT stíluslap

Részletesebben

Interfészek. Programozás II. előadás. Szénási Sándor.

Interfészek. Programozás II. előadás.  Szénási Sándor. Interfészek előadás http://nik.uni-obuda.hu/prog2 Szénási Sándor szenasi.sandor@nik.uni-obuda.hu Óbudai Egyetem,Neumann János Informatikai Kar Polimorfizmus áttekintése Interfészek Interfészek alkalmazása

Részletesebben

Grafikus keretrendszer komponensalapú webalkalmazások fejlesztéséhez

Grafikus keretrendszer komponensalapú webalkalmazások fejlesztéséhez Grafikus keretrendszer komponensalapú webalkalmazások fejlesztéséhez Székely István Debreceni Egyetem, Informatikai Intézet A rendszer felépítése szerver a komponenseket szolgáltatja Java nyelvű implementáció

Részletesebben

Komponensek együttműködése web-alkalmazás környezetben. Jónás Richárd Debreceni Egyetem T-Soft Mérnökiroda KFT richard.jonas@tsoft.

Komponensek együttműködése web-alkalmazás környezetben. Jónás Richárd Debreceni Egyetem T-Soft Mérnökiroda KFT richard.jonas@tsoft. Komponensek együttműködése web-alkalmazás környezetben Jónás Richárd Debreceni Egyetem T-Soft Mérnökiroda KFT Komponensek a gyakorlatban A szoftverkomponenseket fejlesztő csoportoknak szüksége van olyan

Részletesebben

Programozás alapjai Bevezetés

Programozás alapjai Bevezetés Programozás alapjai Bevezetés Miskolci Egyetem Általános Informatikai Tanszék Programozás alapjai Bevezetés SWF1 / 1 Tartalom A gépi kódú programozás és hátrányai A magas szintÿ programozási nyelv fogalma

Részletesebben

Programozási alapismeretek 4.

Programozási alapismeretek 4. Programozási alapismeretek 4. Obejktum-Orientált Programozás Kis Balázs Bevezetés I. Az OO programozási szemlélet, egy merőben más szemlélet, az összes előző szemlélettel (strukturális, moduláris, stb.)

Részletesebben

Adatszerkezetek és algoritmusok

Adatszerkezetek és algoritmusok 2009. november 13. Ismétlés El z órai anyagok áttekintése Ismétlés Specikáció Típusok, kifejezések, m veletek, adatok ábrázolása, típusabsztakció Vezérlési szerkezetek Függvények, paraméterátadás, rekurziók

Részletesebben

XML alapú adatbázis-kezelés. (Katona Endre diái alapján)

XML alapú adatbázis-kezelés. (Katona Endre diái alapján) XML alapú adatbázis-kezelés Adatstruktúrák: Digitális kép, hang: teljesen strukturálatlan A web (linkek): részben strukturált Relációs: teljesen strukturált Motiváció: (Katona Endre diái alapján) Ismeretlen

Részletesebben

OOP. Alapelvek Elek Tibor

OOP. Alapelvek Elek Tibor OOP Alapelvek Elek Tibor OOP szemlélet Az OOP szemlélete szerint: a valóságot objektumok halmazaként tekintjük. Ezen objektumok egymással kapcsolatban vannak és együttműködnek. Program készítés: Absztrakciós

Részletesebben

Objektum orientált kiterjesztés A+ programozási nyelvhez

Objektum orientált kiterjesztés A+ programozási nyelvhez Szegedi Tudományegyetem Informatikai Tanszékcsoport Objektum orientált kiterjesztés A+ programozási nyelvhez Diplomamunka terve Készítette: Bátori Csaba programtervező matematikus hallgató Témavezető:

Részletesebben

Objektumorientált programozás C# nyelven

Objektumorientált programozás C# nyelven Objektumorientált programozás C# nyelven 1. rész Osztályok és objektumok Mezık és metódusok Konstruktor és destruktor Névterek és hatókörök Láthatósági szintek Osztály szintő tagok Beágyazott osztályok

Részletesebben

Web-fejlesztés NGM_IN002_1

Web-fejlesztés NGM_IN002_1 Web-fejlesztés NGM_IN002_1 Alap reprezentációs technológiák HTML Hyper Text Markup Language SGML alkalmazás Dokumentum-struktúra leírásra nem lap leírás! hiperszöveg dokumentum szemantika fejlécek listák

Részletesebben

Programozási nyelvek Java

Programozási nyelvek Java Programozási nyelvek Java Kozsik Tamás előadása alapján Készítette: Nagy Krisztián 8. előadás Öröklődés - megnyitunk egy osztályt egy másik előtt zárt egységeket szeretünk készíteni (láthatósági kérdés:

Részletesebben

Pelda öröklődésre: import java.io.*; import java.text.*; import java.util.*; import extra.*;

Pelda öröklődésre: import java.io.*; import java.text.*; import java.util.*; import extra.*; Java osztály készítése, adattagok, és metódusok, láthatóság, konstruktor, destruktor. Objektum létrehozása, használata, öröklés. ( Előfeltétel 12. Tétel ) Az osztály egy olyan típus leíró struktúra, amely

Részletesebben

Java Server Pages - JSP. Web Technológiák. Java Server Pages - JSP. JSP lapok életciklusa

Java Server Pages - JSP. Web Technológiák. Java Server Pages - JSP. JSP lapok életciklusa Web Technológiák Java Server Pages - JSP Répási Tibor egyetemi tanársegéd Miskolc Egyetem Infomatikai és Villamosmérnöki Tanszékcsoport (IVM) Általános Informatikai Tanszék Iroda: Inf.Int. 108. Tel: 2101

Részletesebben

Programozási nyelvek Java

Programozási nyelvek Java Programozási nyelvek Java Kozsik Tamás előadása alapján Készítette: Nagy Krisztián 9. előadás Interface - típust vezet be, de osztálypéldány nem készíthető belőle (statikus típust ad) - több osztály is

Részletesebben

SZOFTVERES SZEMLÉLTETÉS A MESTERSÉGES INTELLIGENCIA OKTATÁSÁBAN _ Jeszenszky Péter Debreceni Egyetem, Informatikai Kar jeszenszky.peter@inf.unideb.

SZOFTVERES SZEMLÉLTETÉS A MESTERSÉGES INTELLIGENCIA OKTATÁSÁBAN _ Jeszenszky Péter Debreceni Egyetem, Informatikai Kar jeszenszky.peter@inf.unideb. SZOFTVERES SZEMLÉLTETÉS A MESTERSÉGES INTELLIGENCIA OKTATÁSÁBAN _ Jeszenszky Péter Debreceni Egyetem, Informatikai Kar jeszenszky.peter@inf.unideb.hu Mesterséges intelligencia oktatás a DE Informatikai

Részletesebben

Osztályok. 4. gyakorlat

Osztályok. 4. gyakorlat Osztályok 4. gyakorlat Az osztály fogalma Az objektumok formai leírása, melyek azonos tulajdonsággal és operációkkal rendelkeznek. Osztályból objektum készítését példányosításnak nevezzük. Minden objektum

Részletesebben

Enterprise JavaBeans. Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem. Az Enterprise JavaBeans

Enterprise JavaBeans. Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem. Az Enterprise JavaBeans Enterprise JavaBeans Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem Az Enterprise JavaBeans Az Enterprise Javabeans Az Enterprise JavaBeans (EJB) server oldali komponens, amely Az üzleti

Részletesebben

Java VI. Egy kis kitérő: az UML. Osztály diagram. Általános Informatikai Tanszék Utolsó módosítás: 2006. 03. 07.

Java VI. Egy kis kitérő: az UML. Osztály diagram. Általános Informatikai Tanszék Utolsó módosítás: 2006. 03. 07. Java VI. Öröklődés Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2006. 03. 07. Java VI.: Öröklődés JAVA6 / 1 Egy kis kitérő: az UML UML: Unified Modelling Language Grafikus eszköz objektum

Részletesebben

Web-fejlesztés NGM_IN002_1

Web-fejlesztés NGM_IN002_1 Web-fejlesztés NGM_IN002_1 Rich Internet Applications RIA Vékony-kliens generált (statikus) HTML megjelenítése szerver oldali feldolgozással szinkron oldal megjelenítéssel RIA desktop alkalmazások funkcionalitása

Részletesebben

1. Az XML és XHTML nyelvek. Az XML leíró nyelv Szabályok XHTML írásra. Tartalom. 1.1. Az XML leíró nyelv

1. Az XML és XHTML nyelvek. Az XML leíró nyelv Szabályok XHTML írásra. Tartalom. 1.1. Az XML leíró nyelv Az XML leíró nyelv Szabályok XHTML írásra Tartalom 1. Az XML és XHTML nyelvek...1 1.1. Az XML leíró nyelv...1 1.1.1. Néhány alapvető nyelvi elem...2 1.1.1.1. Az XML deklaráció...2 1.1.1.2. Elemek és az

Részletesebben

Java VI. Miskolci Egyetem Általános Informatikai Tanszék. Utolsó módosítás: Ficsor Lajos. Java VI.: Öröklődés JAVA6 / 1

Java VI. Miskolci Egyetem Általános Informatikai Tanszék. Utolsó módosítás: Ficsor Lajos. Java VI.: Öröklődés JAVA6 / 1 Java VI. Öröklődés Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2006. 03. 07. Java VI.: Öröklődés JAVA6 / 1 Egy kis kitérő: az UML UML: Unified Modelling Language Grafikus eszköz objektum

Részletesebben

Grafikus keretrendszer komponensalapú webalkalmazások fejlesztéséhez

Grafikus keretrendszer komponensalapú webalkalmazások fejlesztéséhez Grafikus keretrendszer komponensalapú webalkalmazások fejlesztéséhez Székely István Debreceni Egyetem, Informatikai Intézet iszekely@inf.unideb.hu Kivonat Az Internet utóbbi években végbemenő nagymértékű

Részletesebben

Bevezetés a Python programozási nyelvbe

Bevezetés a Python programozási nyelvbe Bevezetés a Python programozási nyelvbe 7. Gyakorlat osztályok, objektumok (utolsó módosítás 2018. aug. 28.) Szathmáry László Debreceni Egyetem Informatikai Kar 2018-2019, 1. félév OO programozás Pythonban

Részletesebben

Eseménykezelés. Szoftvertervezés és -fejlesztés II. előadás. Szénási Sándor.

Eseménykezelés. Szoftvertervezés és -fejlesztés II. előadás.   Szénási Sándor. Eseménykezelés előadás http://nik.uni-obuda.hu/sztf2 Szénási Sándor szenasi.sandor@nik.uni-obuda.hu Óbudai Egyetem,Neumann János Informatikai Kar Függvénymutatókkal Származtatással Interfészekkel Egyéb

Részletesebben

ISA szimulátor objektum-orientált modell (C++)

ISA szimulátor objektum-orientált modell (C++) Budapesti Műszaki és Gazdaságtudományi Egyetem ISA szimulátor objektum-orientált modell (C++) Horváth Péter Elektronikus Eszközök Tanszéke 2015. február 12. Horváth Péter ISA szimulátor objektum-orientált

Részletesebben

Objektumorientált paradigma és programfejlesztés Bevezető

Objektumorientált paradigma és programfejlesztés Bevezető Objektumorientált paradigma és programfejlesztés Bevezető Vámossy Zoltán vamossy.zoltan@nik.uni-obuda.hu Óbudai Egyetem Neumann János Informatikai Kar Ficsor Lajos (Miskolci Egyetem) prezentációja alapján

Részletesebben

Programozás II. 3. gyakorlat Objektum Orientáltság C++-ban

Programozás II. 3. gyakorlat Objektum Orientáltság C++-ban Programozás II. 3. gyakorlat Objektum Orientáltság C++-ban Tartalom OOP ismétlés Osztályok létrehozása Adattagok láthatóságai, elnevezési ajánlások Konstruktor, destruktor this pointer Statikus és dinamikus

Részletesebben

Enterprise JavaBeans 1.4 platform (EJB 2.0)

Enterprise JavaBeans 1.4 platform (EJB 2.0) Enterprise JavaBeans 1.4 platform (EJB 2.0) Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem Utolsó módosítás: 2007. 11.13. Az Enterprise JavaBeans Az Enterprise Javabeans Az Enterprise JavaBeans

Részletesebben

Dr. Pál László, Sapientia EMTE, Csíkszereda WEB PROGRAMOZÁS 2.ELŐADÁS. Objektumorientált programozás 2015-2016

Dr. Pál László, Sapientia EMTE, Csíkszereda WEB PROGRAMOZÁS 2.ELŐADÁS. Objektumorientált programozás 2015-2016 Dr. Pál László, Sapientia EMTE, Csíkszereda WEB PROGRAMOZÁS 2.ELŐADÁS 2015-2016 Objektumorientált programozás OOP PHP-ben 2 A PHP az 5.0-as verziójától megvalósítja az OO eszközrendszerét OO eszközök:

Részletesebben

Objektumorientált paradigma és a programfejlesztés

Objektumorientált paradigma és a programfejlesztés Objektumorientált paradigma és a programfejlesztés Vámossy Zoltán vamossy.zoltan@nik.uni-obuda.hu Óbudai Egyetem Neumann János Informatikai Kar Ficsor Lajos (Miskolci Egyetem) prezentációja alapján Objektumorientált

Részletesebben

III. OOP (objektumok, osztályok)

III. OOP (objektumok, osztályok) III. OOP (objektumok, osztályok) 1. Természetes emberi gondolkozás Az Objektumorientált paradigma alapelvei nagyon hasonlítanak az emberi gondolkozásra. Érdemes ezért elsőként az emberi gondolkozás elveit

Részletesebben

Flex tutorial. Dévai Gergely

Flex tutorial. Dévai Gergely Flex tutorial Dévai Gergely A Flex (Fast Lexical Analyser) egy lexikáliselemz -generátor: reguláris kifejezések sorozatából egy C/C++ programot generál, ami szövegfájlokat képes lexikai elemek sorozatára

Részletesebben

OOP és UML Áttekintés

OOP és UML Áttekintés OOP és UML Áttekintés Tóth Zsolt Miskolci Egyetem 2013 Tóth Zsolt (Miskolci Egyetem) OOP és UML Áttekintés 2013 1 / 32 Tartalom jegyzék 1 OOP Osztály Öröklődés Interfész, Absztrakt Osztály Kivétel kezelés

Részletesebben

1. Mi a fejállományok szerepe C és C++ nyelvben és hogyan használjuk őket? 2. Milyen alapvető változókat használhatunk a C és C++ nyelvben?

1. Mi a fejállományok szerepe C és C++ nyelvben és hogyan használjuk őket? 2. Milyen alapvető változókat használhatunk a C és C++ nyelvben? 1. Mi a fejállományok szerepe C és C++ nyelvben és hogyan használjuk őket? 2. Milyen alapvető változókat használhatunk a C és C++ nyelvben? 3. Ismertesse a névtér fogalmát! 4. Mit értünk a "változó hatóköre"

Részletesebben

Szoftvertechnolo gia gyakorlat

Szoftvertechnolo gia gyakorlat Szoftvertechnolo gia gyakorlat Dr. Johanyák Zsolt Csaba http://johanyak.hu 1. Dependency Injection (függőség befecskendezés) tervezési minta A tervezési minta alapgondolata az, hogy egy konkrét feladatot

Részletesebben

XML adatbázis kezelésének lehetőségei

XML adatbázis kezelésének lehetőségei Debreceni Egyetem Informatika Kar XML adatbázis kezelésének lehetőségei Témavezető: Dr. Adamkó Attila egyetemi adjunktus Készítette: Buka Balázs programtervező informatikus Debrecen 2010 1 Tartalo mjegyzék

Részletesebben

Bevezetés a programozásba Előadás: Tagfüggvények, osztály, objektum

Bevezetés a programozásba Előadás: Tagfüggvények, osztály, objektum Bevezetés a programozásba 2 1. Előadás: Tagfüggvények, osztály, objektum Ismétlés int main() { string s; s; s= bla ; cout

Részletesebben

C++ programozási nyelv

C++ programozási nyelv C++ programozási nyelv Gyakorlat - 13. hét Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet Soós Sándor 2004. december A C++ programozási nyelv Soós Sándor 1/10 Tartalomjegyzék Objektumok

Részletesebben

Szemantikus Web Semantic Web A szemantikus web alkalmas megközelítés, illetve megfelel nyelvekkel, eszközökkel támogatja az intelligens információs

Szemantikus Web Semantic Web A szemantikus web alkalmas megközelítés, illetve megfelel nyelvekkel, eszközökkel támogatja az intelligens információs Szemantikus Web Semantic Web A szemantikus web alkalmas megközelítés, illetve megfelel nyelvekkel, eszközökkel támogatja az intelligens információs rendszerek fejlesztését az elosztott információs környezetben.

Részletesebben

XmlGessünk 13. rész - Az XML Schema II.

XmlGessünk 13. rész - Az XML Schema II. XmlGessünk 13. rész - Az XML Schema II. Az elz részben láthattuk, hogyan kell közvetlen egymásba ágyazással, referenciákkal és típusok definiálásával egyszerbb sémákat szerkeszteni. Részletesen megnéztük

Részletesebben

Sztöchiometriai egyenletrendszerek minimális számú aktív változót tartalmazó megoldásainak meghatározása a P-gráf módszertan alkalmazásával

Sztöchiometriai egyenletrendszerek minimális számú aktív változót tartalmazó megoldásainak meghatározása a P-gráf módszertan alkalmazásával Sztöchiometriai egyenletrendszerek minimális számú aktív változót tartalmazó megoldásainak meghatározása a P-gráf módszertan alkalmazásával * Pannon Egyetem, M szaki Informatikai Kar, Számítástudomány

Részletesebben

Bevezetés a programozásba I.

Bevezetés a programozásba I. Bevezetés a programozásba I. 6. gyakorlat C++ alapok, szövegkezelés Surányi Márton PPKE-ITK 2010.10.12. Forrásfájlok: *.cpp fájlok Fordítás: a folyamat, amikor a forrásfájlból futtatható állományt állítunk

Részletesebben

2019, Funkcionális programozás. 2. el adás. MÁRTON Gyöngyvér

2019, Funkcionális programozás. 2. el adás. MÁRTON Gyöngyvér Funkcionális programozás 2. el adás Sapientia Egyetem, Matematika-Informatika Tanszék Marosvásárhely, Románia mgyongyi@ms.sapientia.ro 2019, tavaszi félév Mir l volt szó? Követelmények, osztályozás Programozási

Részletesebben

3. Osztályok II. Programozás II

3. Osztályok II. Programozás II 3. Osztályok II. Programozás II Bevezető feladat Írj egy Nevsor osztályt, amely legfeljebb adott mennyiségű nevet képes eltárolni. A maximálisan tárolható nevek számát a konstruktorban adjuk meg. Az osztályt

Részletesebben

Osztálytervezés és implementációs ajánlások

Osztálytervezés és implementációs ajánlások Osztálytervezés és implementációs ajánlások Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2006. 04. 24. Osztálytervezés és implementációs kérdések OTERV / 1 Osztály tervezés Egy nyelv

Részletesebben

Programozás módszertan p.1/46

Programozás módszertan p.1/46 Programozás módszertan Öröklődés Pere László (pipas@linux.pte.hu) PÉCSI TUDOMÁNYEGYETEM TERMÉSZETTUDOMÁNYI KAR INFORMATIKA ÉS ÁLTALÁNOS TECHNIKA TANSZÉK MAGYAR TUDOMÁNYOS AKADÉMIA SZÁMÍTÁSTECHNIKAI ÉS

Részletesebben

Az XML Bevezetés. Fabók Zsolt Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem. Utolsó módosítás:

Az XML Bevezetés. Fabók Zsolt Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem. Utolsó módosítás: Az XML Bevezetés Fabók Zsolt Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem Utolsó módosítás: 2007. 10. 02. Szüks kségessége 2 Java: plattform független programok XML: plattform független

Részletesebben

ELTE SAP Excellence Center Oktatóanyag 1

ELTE SAP Excellence Center Oktatóanyag 1 Oktatóanyag 1 Oktatóanyag 2 Az oktatás folyamán használt példák a fent látható egyszerű modell implementációi. Oktatóanyag 3 A definíciós részben definiálja a fejlesztő az egyes attribútumokat, metódusokat,

Részletesebben

Osztálytervezés és implementációs ajánlások

Osztálytervezés és implementációs ajánlások Osztálytervezés és implementációs ajánlások Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2006. 04. 24. Osztálytervezés és implementációs kérdések OTERV / 1 Osztály tervezés Egy nyelv

Részletesebben

Számítógép és programozás 2

Számítógép és programozás 2 Számítógép és programozás 2 10. Előadás Öröklődés http://digitus.itk.ppke.hu/~flugi/ Tagfüggvény struct Particle { int x,y; unsigned char r,g,b; void rajzol() { gout

Részletesebben

Java V. Osztályszint. lyszintű ű tagok. Példányváltozó. Osztályváltozó. Általános Informatikai Tanszék Utolsó módosítás:

Java V. Osztályszint. lyszintű ű tagok. Példányváltozó. Osztályváltozó. Általános Informatikai Tanszék Utolsó módosítás: Java V. szint lyszintű ű tagok A final minősítő Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2005. 10. 05. Java V.: szintű tagok JAVA5 / 1 Példányváltozó Az eddig megismert adattagokból

Részletesebben

Bevezetés, a C++ osztályok. Pere László

Bevezetés, a C++ osztályok. Pere László Programozás módszertan II. p. Programozás módszertan II. Bevezetés, a C++ osztályok Pere László (pipas@linux.pte.hu) PÉCSI TUDOMÁNYEGYETEM TERMÉSZETTUDOMÁNYI KAR INFORMATIKA ÉS ÁLTALÁNOS TECHNIKA TANSZÉK

Részletesebben

C# osztálydeníció. Krizsán Zoltán 1. .net C# technológiák tananyag objektum orientált programozás tananyag

C# osztálydeníció. Krizsán Zoltán 1. .net C# technológiák tananyag objektum orientált programozás tananyag C# osztálydeníció Krizsán Zoltán 1 Általános Informatikai Tanszék Miskolci Egyetem.net C# technológiák tananyag objektum orientált programozás tananyag Tartalom 1 Bevezetés 2 Osztály létrehozása, deníció

Részletesebben

Szervlet-JSP együttműködés

Szervlet-JSP együttműködés Java programozási nyelv 2007-2008/ősz 10. óra Szervlet-JSP együttműködés Kérés továbbítás technikái legradi.gabor@nik.bmf.hu szenasi.sandor@nik.bmf.hu Szervlet-JSP együttműködés Témakörök Osztálykönyvtár

Részletesebben

Tájékoztató. Használható segédeszköz: -

Tájékoztató. Használható segédeszköz: - A 35/2016. (VIII. 31.) NFM rendelet szakmai és vizsgakövetelménye alapján. Szakképesítés, azonosító száma és megnevezése 54 481 06 Informatikai rendszerüzemeltető Tájékoztató A vizsgázó az első lapra írja

Részletesebben

OOP #14 (referencia-elv)

OOP #14 (referencia-elv) OOP #14 (referencia-elv) v1.0 2003.03.19. 21:22:00 Eszterházy Károly Főiskola Információtechnológia tsz. Hernyák Zoltán adj. e-mail: aroan@ektf.hu web: http://aries.ektf.hu/~aroan OOP OOP_14-1 - E jegyzet

Részletesebben

Szerver oldali Java programozás 2007-08/II. 1. óra. Elemkönyvtárak. Elemkönyvtárak használata Saját elemkönyvtár készítése. szenasi.sandor@nik.bmf.

Szerver oldali Java programozás 2007-08/II. 1. óra. Elemkönyvtárak. Elemkönyvtárak használata Saját elemkönyvtár készítése. szenasi.sandor@nik.bmf. Szerver oldali Java programozás 2007-08/II. 1. óra Elemkönyvtárak Elemkönyvtárak használata Saját elemkönyvtár készítése szenasi.sandor@nik.bmf.hu Adatbázisok elérése Témakörök Elemkönyvtárak használata

Részletesebben

Programozási nyelvek (ADA)

Programozási nyelvek (ADA) Programozási nyelvek (ADA) Kozsik Tamás előadása alapján Készítette: Nagy Krisztián 3. előadás Programozási nyelv felépítése szabályok megadása Lexika Milyen egységek építik fel? Szintaktikus szabályok

Részletesebben

Modellező eszközök, kódgenerálás

Modellező eszközök, kódgenerálás Modellező eszközök, kódgenerálás Budapesti Műszaki és Gazdaságtudományi Egyetem Hibatűrő Rendszerek Kutatócsoport Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek

Részletesebben

A C programozási nyelv III. Pointerek és tömbök.

A C programozási nyelv III. Pointerek és tömbök. A C programozási nyelv III. Pointerek és tömbök. Miskolci Egyetem Általános Informatikai Tanszék A C programozási nyelv III. (Pointerek, tömbök) CBEV3 / 1 Mutató (pointer) fogalma A mutató olyan változó,

Részletesebben

Regionális forduló november 19.

Regionális forduló november 19. Regionális forduló 2016. november 19. 9-10. osztályosok feladata Feladat Írjatok Markdown HTML konvertert! A markdown egy nagyon népszerű, nyílt forráskódú projektekben gyakran használt, jól olvasható

Részletesebben

Java programozási nyelv

Java programozási nyelv Java programozási nyelv 2. rész Vezérlő szerkezetek Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet Soós Sándor 2005. szeptember A Java programozási nyelv Soós Sándor 1/23 Tartalomjegyzék

Részletesebben

Objektumorientált programozás C# nyelven

Objektumorientált programozás C# nyelven Objektumorientált programozás C# nyelven 2. rész Öröklés és többalakúság Nemvirtuális metódusok, elrejtés Virtuális metódusok, elrejtés Típuskényszerítés, az is és as operátorok Absztrakt osztályok, absztrakt

Részletesebben

Mechatronika és mikroszámítógépek 2017/2018 I. félév. Bevezetés a C nyelvbe

Mechatronika és mikroszámítógépek 2017/2018 I. félév. Bevezetés a C nyelvbe Mechatronika és mikroszámítógépek 2017/2018 I. félév Bevezetés a C nyelvbe A C programozási nyelv A C egy általános célú programozási nyelv, melyet Dennis Ritchie fejlesztett ki Ken Thompson segítségével

Részletesebben

Gibbs-jelenség viselkedésének vizsgálata egyszer négyszögjel esetén

Gibbs-jelenség viselkedésének vizsgálata egyszer négyszögjel esetén Matematikai modellek, I. kisprojekt Gibbs-jelenség viselkedésének vizsgálata egyszer négyszögjel esetén Unger amás István B.Sc. szakos matematikus hallgató ungert@maxwell.sze.hu, http://maxwell.sze.hu/~ungert

Részletesebben

Vezetéses Totó kulcsok Enciklopédiája I.

Vezetéses Totó kulcsok Enciklopédiája I. Szerencsetippek Sorozat Vezetéses Totó kulcsok Enciklopédiája I. 781 Vezetéses Totó kulcs 13 találat garanciával, 0 hibapontos játékokhoz 4-366080 tipposzlopon 605 Vezetéses Totó kulcs 12 találat garanciával,

Részletesebben

Komponens alapú programozás Bevezetés

Komponens alapú programozás Bevezetés Komponens alapú programozás Bevezetés Ficsor Lajos Miskolci Egyetem Általános Informatikai Tanszék Ez a tananyag felhasználja a TEMPUS S_JEP-12495-97 Network Computing Chapter 8 Developing of Network Computing

Részletesebben

Miután létrehoztuk, szeretnénk neki beszédesebb nevet adni. A név változtatásához a következőt kell tenni:

Miután létrehoztuk, szeretnénk neki beszédesebb nevet adni. A név változtatásához a következőt kell tenni: Excel objektumok Az excelben az osztályokat úgynevezett class modulokként hozzuk létre. Miután létrehoztuk, szeretnénk neki beszédesebb nevet adni. A név változtatásához a következőt kell tenni: View-ba

Részletesebben

Név: Neptun kód: Pontszám:

Név: Neptun kód: Pontszám: Név: Neptun kód: Pontszám: 1. Melyek a szoftver minőségi mutatói? Fejlesztési idő, architektúra, programozási paradigma. Fejlesztőcsapat összetétele, projekt mérföldkövek, fejlesztési modell. Karbantarthatóság,

Részletesebben

Kommunikáció. Távoli eljáráshívás. RPC kommunikáció menete DCE RPC (1) RPC - paraméterátadás. 3. előadás Protokollok. 2. rész

Kommunikáció. Távoli eljáráshívás. RPC kommunikáció menete DCE RPC (1) RPC - paraméterátadás. 3. előadás Protokollok. 2. rész 3. előadás Protokollok Kommunikáció 2. rész RPC (Remote Procedure Call) távoli eljáráshívás RMI (Remote Method Invocation) távoli metódushívás MOM (Message-Oriented Middleware) üzenetorientált köztesréteg

Részletesebben

A C programozási nyelv III. Pointerek és tömbök.

A C programozási nyelv III. Pointerek és tömbök. A C programozási nyelv III. Pointerek és tömbök. Miskolci Egyetem Általános Informatikai Tanszék A C programozási nyelv III. (Pointerek, tömbök) CBEV3 / 1 Mutató (pointer) fogalma A mutató olyan változó,

Részletesebben

S01-8 Komponens alapú szoftverfejlesztés 2

S01-8 Komponens alapú szoftverfejlesztés 2 S01-8 Komponens alapú szoftverfejlesztés 2 Tartalom 1. Komponens megvalósítása: kölcsönhatás modell, viselkedési vagy algoritmikus modell és strukturális modell. 2. Komponens megtestesítés: finomítás és

Részletesebben

Adatexport útmutató Könyvvizsgálói program számára átadott adatok XML formátumban

Adatexport útmutató Könyvvizsgálói program számára átadott adatok XML formátumban Adatexport útmutató Könyvvizsgálói program számára átadott adatok XML formátumban v.1.0.1.6 (2011-01-10) Adatexport útmutató - 1.0.1.0 Tartalomjegyzék 1. Az XML tartalmi követelménye 3 1.1 Általános leírás

Részletesebben

Programfejlesztési Modellek

Programfejlesztési Modellek Programfejlesztési Modellek Programfejlesztési fázisok: Követelmények leírása (megvalósíthatósági tanulmány, funkcionális specifikáció) Specifikáció elkészítése Tervezés (vázlatos és finom) Implementáció

Részletesebben

DocBook útmutató. Jeszenszky Péter Debreceni Egyetem, Informatikai Kar jeszenszky.peter@inf.unideb.hu

DocBook útmutató. Jeszenszky Péter Debreceni Egyetem, Informatikai Kar jeszenszky.peter@inf.unideb.hu DocBook útmutató Jeszenszky Péter Debreceni Egyetem, Informatikai Kar jeszenszky.peter@inf.unideb.hu Mi a DocBook? (1) XML formátum műszaki dokumentációhoz Eredetileg hardver és szoftver dokumentáció készítéséhez

Részletesebben

Modellinformációk szabványos cseréje. Papp Ágnes, Debreceni Egyetem EFK

Modellinformációk szabványos cseréje. Papp Ágnes, Debreceni Egyetem EFK Modellinformációk szabványos cseréje Papp Ágnes, agi@delfin.unideb.hu Debreceni Egyetem EFK Tartalom MOF, UML, XMI Az UML és az XML séma MDA - Model Driven Architecture Networkshop 2004 2 Az OMG metamodell

Részletesebben

Az XML kidolgozásakor a fejlesztés szempontjait tíz pontban foglalták össze:

Az XML kidolgozásakor a fejlesztés szempontjait tíz pontban foglalták össze: 1 XML XML... 1 FELÉPÍTÉS... 2 KARAKTEREK, ELNEVEZÉSEK... 3 NÉVTEREK (NAMESPACES)... 4 Név konfliktus.... 4 Megoldás név előtéttel... 4 Megoldás névtér használatával.... 5 TULAJDONSÁGOK... 5 DTD (DOCUMENT

Részletesebben

Programozás II. labor

Programozás II. labor Programozás II. labor 1. rész Programozási tételek Öröklődés Interfészek Eseménykezelés Kivételkezelés Visszalépéses keresés Programozás II. Programozási tételek OOP alapok ismétlése Öröklődés Öröklődés

Részletesebben

C++ programozási nyelv

C++ programozási nyelv C++ programozási nyelv Gyakorlat - 8. hét Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet Soós Sándor 2004. november A C++ programozási nyelv Soós Sándor 1/12 Tartalomjegyzék Miért

Részletesebben

Predikátumkalkulus. 1. Bevezet. 2. Predikátumkalkulus, formalizálás. Predikátumkalkulus alapfogalmai, formalizálás, tagadás, logikailag igaz formulák.

Predikátumkalkulus. 1. Bevezet. 2. Predikátumkalkulus, formalizálás. Predikátumkalkulus alapfogalmai, formalizálás, tagadás, logikailag igaz formulák. Predikátumkalkulus Predikátumkalkulus alapfogalmai, formalizálás, tagadás, logikailag igaz formulák. 1. Bevezet Nézzük meg a következ két kijelentést: Minden almához tartozik egy fa, amir l leesett. Bármely

Részletesebben