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

Save this PDF as:
 WORD  PNG  TXT  JPG

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 <xsl:text> aspect </xsl:text> <xsl:value-of { <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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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 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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

1. A k-szerver probléma

1. A k-szerver probléma 1. A k-szerver probléma Az egyik legismertebb on-line probléma a k-szerver probléma. A probléma általános deníciójának megadásához szükség van a metrikus tér fogalmára. Egy (M, d) párost, ahol M a metrikus

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

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

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

TestLine - OO Programozás alapjai Minta feladatsor

TestLine - OO Programozás alapjai Minta feladatsor 2016.09.20. 18:46:36 Oktató: n/a Kérdések száma: 16 kérdés Kitöltési idő: 29:45 Szélsőséges pontok: -196 pont +672 pont z Óbudai gyetem Programozás III című tárgyának előkövetelményeként létező Programozás

Részletesebben

Magas szintű adatmodellek Egyed/kapcsolat modell I.

Magas szintű adatmodellek Egyed/kapcsolat modell I. Magas szintű adatmodellek Egyed/kapcsolat modell I. Ullman-Widom: Adatbázisrendszerek. Alapvetés. 4.fejezet Magas szintű adatmodellek (4.1-4.3.fej.) (köv.héten folyt.köv. 4.4-4.6.fej.) Az adatbázis modellezés

Részletesebben

INFORMATIKAI ALAPISMERETEK

INFORMATIKAI ALAPISMERETEK Informatikai alapismeretek emelt szint 0802 ÉRETTSÉGI VIZSGA 2008. október 20. INFORMATIKAI ALAPISMERETEK EMELT SZINTŰ ÍRÁSBELI ÉRETTSÉGI VIZSGA JAVÍTÁSI-ÉRTÉKELÉSI ÚTMUTATÓ OKTATÁSI ÉS KULTURÁLIS MINISZTÉRIUM

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

OBJEKTUM ORIENTÁLT PROGRAMOZÁS JAVA NYELVEN. vizsgatételek

OBJEKTUM ORIENTÁLT PROGRAMOZÁS JAVA NYELVEN. vizsgatételek OBJEKTUM ORIENTÁLT PROGRAMOZÁS JAVA NYELVEN vizsgatételek 1. Az objektumorientált programozás szemlélete, az objektum fogalma 2. Az objektumorientált programozás alapelvei 3. A Java nyelv története, alapvető

Részletesebben

ERserver. iseries. Szolgáltatási minőség

ERserver. iseries. Szolgáltatási minőség ERserver iseries Szolgáltatási minőség ERserver iseries Szolgáltatási minőség Szerzői jog IBM Corporation 2002. Minden jog fenntartva Tartalom Szolgáltatási minőség (QoS)............................ 1

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

LOGIKA ÉS ÉRVELÉSTECHNIKA

LOGIKA ÉS ÉRVELÉSTECHNIKA LOGIKA ÉS ÉRVELÉSTECHNIKA ELTE TáTK Közgazdaságtudományi Tanszék Logika és érveléstechnika NULLADREND LOGIKA 3. Készítette: Szakmai felel s: 2011. február Készült a következ m felhasználásával: Ruzsa

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

Szoftver újrafelhasználás

Szoftver újrafelhasználás Szoftver újrafelhasználás Szoftver újrafelhasználás Szoftver fejlesztésekor korábbi fejlesztésekkor létrehozott kód felhasználása architektúra felhasználása tudás felhasználása Nem azonos a portolással

Részletesebben

Petőfi Irodalmi Múzeum. megújuló rendszere technológiaváltás

Petőfi Irodalmi Múzeum. megújuló rendszere technológiaváltás Petőfi Irodalmi Múzeum A Digitális Irodalmi Akadémia megújuló rendszere technológiaváltás II. Partnerek, feladatok Petőfi Irodalmi Múzeum Megrendelő, szakmai vezetés, kontroll Konzorcium MTA SZTAKI Internet

Részletesebben

Programozás III KIINDULÁS. Különböző sportoló típusok vannak: futó, magasugró, focista, akik teljesítményét más-más módon határozzuk meg.

Programozás III KIINDULÁS. Különböző sportoló típusok vannak: futó, magasugró, focista, akik teljesítményét más-más módon határozzuk meg. KIINDULÁS Különböző sportoló típusok vannak: futó, magasugró, focista, akik teljesítményét más-más módon határozzuk meg. Programozás III Az egyszerűség kedvéért mindegyiket a nevük alapján regisztráljuk,

Részletesebben

Abstract osztályok és interface-ek. 7-dik gyakorlat

Abstract osztályok és interface-ek. 7-dik gyakorlat Abstract osztályok és interface-ek 7-dik gyakorlat Abstract metódusok és osztályok Az OO fejlesztés során olyan osztályokat is kialakíthatunk, melyeket csak továbbfejlesztésre, származtatásra lehet használni,

Részletesebben

Visual C++ 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.

Visual C++ 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. Visual C++ 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. Az osztály egy olyan típus leíró struktúra, amely tartalmaz adattagokat

Részletesebben

Programozási környezetek

Programozási környezetek KOVÁSZNAI GERGELY ÉS BIRÓ CSABA EKF TTK Információtechnológia Tanszék Programozási környezetek Alkalmazható természettudományok oktatása a tudásalapú társadalomban TÁMOP-4.1.2.A/1-11/1-2011-0038 WPF Bevezetés

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

Gráfelméleti modell alkalmazása épít ipari kivitelezés ütemezésére

Gráfelméleti modell alkalmazása épít ipari kivitelezés ütemezésére Tamaga István Gráfelméleti modell alkalmazása épít ipari kivitelezés ütemezésére modell Készítsük el egy épít ipari kivitelezés gráfelméleti modelljét! Ekkor a kivitelezést megfeleltetjük egy gráfnak,

Részletesebben

Szakdolgozat egy fejezetének tartalomjegyzéke

Szakdolgozat egy fejezetének tartalomjegyzéke Szakdolgozat egy fejezetének tartalomjegyzéke 2. A tanulásszervezés módszerei és eszközei a Moodle keretrendszerben... 2 2. 1. Tartalomkezelés... 2 2. 1. 1. Szöveges oldal hozzáadása... 2 2. 1. 2. Weboldal

Részletesebben

Unit Teszt. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) Unit Teszt / 22

Unit Teszt. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) Unit Teszt / 22 Unit Teszt Tóth Zsolt Miskolci Egyetem 2013 Tóth Zsolt (Miskolci Egyetem) Unit Teszt 2013 1 / 22 Tartalomjegyzék 1 Bevezetés 2 Unit Teszt 3 Példa Tóth Zsolt (Miskolci Egyetem) Unit Teszt 2013 2 / 22 Szoftvertesztelés

Részletesebben

A J2EE fejlesztési si platform (application. model) 1.4 platform. Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem

A J2EE fejlesztési si platform (application. model) 1.4 platform. Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem A J2EE fejlesztési si platform (application model) 1.4 platform Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem Utolsó módosítás: 2007. 11.13. A J2EE application model A Java szabványok -

Részletesebben

Java grafikai lehetőségek

Java grafikai lehetőségek Szerver oldali Java programozás 2007-08/II. 3. óra Java grafikai lehetőségek Java grafikai lehetőségek Képek generálása servletekkel szenasi.sandor@nik.bmf.hu Adatbázisok elérése Témakörök Java grafikai

Részletesebben

Kommunikáció. Folyamatok közötti kommunikáció. Minden elosztott rendszer alapja

Kommunikáció. Folyamatok közötti kommunikáció. Minden elosztott rendszer alapja Kommunikáció Folyamatok közötti kommunikáció Minden elosztott rendszer alapja Marshalling Alap primitívek Direkt, indirekt portok Blokkolás, nem blokkolás Pufferelés Megbízhatóság RPC Az RPC jellemzői

Részletesebben

Object Orgy PROJEKTTERV 1 (9) Adattípusok menedzselése Palatinus Endre 2010-09-27 1.0

Object Orgy PROJEKTTERV 1 (9) Adattípusok menedzselése Palatinus Endre 2010-09-27 1.0 Object Orgy PROJEKTTERV 1 (9) Projektterv 1 Összefoglaló 2 Verziók Ez az projekt projektterve, ahol kitérünk a megrendelt szoftver elvárt szolgáltatásaira, és a tárgy keretein belül a projekt során felhasználandó

Részletesebben

Automatikus tesztgenerálás modell ellenőrző segítségével

Automatikus tesztgenerálás modell ellenőrző segítségével Méréstechnika és Információs Rendszerek Tanszék Automatikus tesztgenerálás modell ellenőrző segítségével Micskei Zoltán műszaki informatika, V. Konzulens: Dr. Majzik István Tesztelés Célja: a rendszerben

Részletesebben

Hivatkozás hagyományos és elektronikus forrásokra

Hivatkozás hagyományos és elektronikus forrásokra Hivatkozás hagyományos és elektronikus forrásokra Fogalmak: Referenciák (hivatkozások): Plagizálás (ollózás, irodalmi lopás) Referencia lista (hivatkozási jegyzék) Bibliográfia (felhasznált irodalom):

Részletesebben

Verifikáció és validáció Általános bevezető

Verifikáció és validáció Általános bevezető Verifikáció és validáció Általános bevezető Általános Verifikáció és validáció verification and validation - V&V: ellenőrző és elemző folyamatok amelyek biztosítják, hogy a szoftver megfelel a specifikációjának

Részletesebben

Webshop készítése ASP.NET 3.5 ben I.

Webshop készítése ASP.NET 3.5 ben I. Webshop készítése ASP.NET 3.5 ben I. - Portál kialakíása - Mesteroldal létrehozása - Témák létrehozása Site létrehozása 1. File / New Web site 2. A Template k közül válasszuk az ASP.NEt et, nyelvnek (Language)

Részletesebben

Objektum Vezérelt Szoftverek Analízise

Objektum Vezérelt Szoftverek Analízise Objektum Vezérelt Szoftverek Analízise Ferenc Rudolf és Beszédes Árpád ferenc@inf.u-szeged.hu beszedes@inf.u-szeged.hu Szegedi Tudományegyetem FrontEndART Szoftver Kft. Bevezetés A szoftver rendszerek

Részletesebben

Absztrakció. Objektum orientált programozás Bevezetés. Általános Informatikai Tanszék Utolsó módosítás:

Absztrakció. Objektum orientált programozás Bevezetés. Általános Informatikai Tanszék Utolsó módosítás: Objektum orientált programozás Bevezetés Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2008. 03. 04. OOPALAP / 1 A program készítés Absztrakciós folyamat, amelyben a valós világban

Részletesebben

Származtatási mechanizmus a C++ nyelvben

Származtatási mechanizmus a C++ nyelvben Származtatási mechanizmus a C++ nyelvben Miskolci Egyetem Általános Informatikai Tanszék CPP2 / 1 Az öröklődés s fogalma 1. Egy osztály deklarálható valamely más osztály(ok) leszármazottjaként. Az deklaráció

Részletesebben

Taylor-polinomok. 1. Alapfeladatok. 2015. április 11. 1. Feladat: Írjuk fel az f(x) = e 2x függvény másodfokú Maclaurinpolinomját!

Taylor-polinomok. 1. Alapfeladatok. 2015. április 11. 1. Feladat: Írjuk fel az f(x) = e 2x függvény másodfokú Maclaurinpolinomját! Taylor-polinomok 205. április.. Alapfeladatok. Feladat: Írjuk fel az fx) = e 2x függvény másodfokú Maclaurinpolinomját! Megoldás: A feladatot kétféle úton is megoldjuk. Az els megoldásban induljunk el

Részletesebben

Programozás C++ -ban 2007/7

Programozás C++ -ban 2007/7 Programozás C++ -ban 2007/7 1. Másoló konstruktor Az egyik legnehezebben érthető fogalom C++ -ban a másoló konstruktor, vagy angolul "copy-constructor". Ez a konstruktor fontos szerepet játszik az argumentum

Részletesebben

Bevezetés. Párhuzamos vetítés és tulajdonságai

Bevezetés. Párhuzamos vetítés és tulajdonságai Bevezetés Az ábrázoló geometria célja a háromdimenziós térben elhelyezkedő alakzatok helyzeti és metrikus viszonyainak egyértelműen és egyértelműen visszaállítható (rekonstruálható) módon történő való

Részletesebben

Programozási nyelvek Java

Programozási nyelvek Java Programozási nyelvek Java 11.gyakorlat Operációsrendszertől függő tulajdonságok PATH elválasztó Unix ":" Windows ";" final String PATH_SEPARATOR = File.pathSeparator; Ugyanaz, csak karakterkent final char

Részletesebben

Az annotáció elvei. Oravecz Csaba MTA Nyelvtudományi Intézet {oravecz}@nytud.hu. MANYE vitaülés 2006. február 20.

Az annotáció elvei. Oravecz Csaba MTA Nyelvtudományi Intézet {oravecz}@nytud.hu. MANYE vitaülés 2006. február 20. Oravecz Csaba MTA Nyelvtudományi Intézet {oravecz}@nytud.hu MANYE vitaülés 2006. február 20. Bevezetés Nyelvi erőforrások, szöveges adatbázisok növekvő jelentősége. Bevezetés Nyelvi erőforrások, szöveges

Részletesebben

Funkcionális és logikai programozás. { Márton Gyöngyvér, 2012} { Sapientia, Erdélyi Magyar Tudományegyetem }

Funkcionális és logikai programozás. { Márton Gyöngyvér, 2012} { Sapientia, Erdélyi Magyar Tudományegyetem } Funkcionális és logikai programozás { Márton Gyöngyvér, 2012} { Sapientia, Erdélyi Magyar Tudományegyetem } http://www.ms.sapientia.ro/~mgyongyi ` 1 Jelenlét: Követelmények, osztályozás Az első 4 előadáson

Részletesebben

Eötvös Loránd Tudományegyetem Tanító- és Óvóképző Kar. Útmutató a szakdolgozat szerkesztéséhez

Eötvös Loránd Tudományegyetem Tanító- és Óvóképző Kar. Útmutató a szakdolgozat szerkesztéséhez Eötvös Loránd Tudományegyetem Tanító- és Óvóképző Kar Útmutató a szakdolgozat szerkesztéséhez Sarbó Gyöngyi 2013 TARTALOMJEGYZÉK TARTALOMJEGYZÉK... 1 ELŐSZÓ... 2 ALAPOK... 3 TERJEDELEM ÉS MÉRET... 3 FORMAI

Részletesebben

Java II. I A Java programozási nyelv alapelemei

Java II. I A Java programozási nyelv alapelemei Java2 / 1 Java II. I A Java programozási nyelv alapelemei Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2009. 02. 09. Java II.: Alapelemek JAVA2 / 1 A Java formalizmusa A C, illetve

Részletesebben