18
Aspektus-orientált nyelvek XML reprezentációja Kincses Róbert Debreceni Egyetem, Informatikai Intézet [email protected]

Aspektus-orientált nyelvek XML reprezentációjaAspektus-orientált nyelvek XML reprezentációja Kincses Róbert Debreceni Egyetem, Informatikai Intézet [email protected]

  • Upload
    others

  • View
    4

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Aspektus-orientált nyelvek XML reprezentációjaAspektus-orientált nyelvek XML reprezentációja Kincses Róbert Debreceni Egyetem, Informatikai Intézet kincsesr@inf.unideb.hu

Aspektus-orientált nyelvek XMLreprezentációja

Kincses RóbertDebreceni Egyetem, Informatikai Inté[email protected]

Page 2: Aspektus-orientált nyelvek XML reprezentációjaAspektus-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

• Azonban léteznek nehezen modellezhető problémák:– a programegységek határait átívelő problémák– a több, független feladatot megvalósító egységek

• XEROX SPARC megoldása: AOP

Page 3: Aspektus-orientált nyelvek XML reprezentációjaAspektus-orientált nyelvek XML reprezentációja Kincses Róbert Debreceni Egyetem, Informatikai Intézet kincsesr@inf.unideb.hu

AOP alapelvek• Alapfogalmak:

– komponens: jól körülhatárolható részfeladat megoldása, a rendszer elemi építőköve

– aspektus: olyan dolgok, amik a rendszer egészét befolyásolják, komponensek teljesítményét, viselkedését, szemantikáját módosítják

• AOP célja: a komponensek és aspektus elkülönítése, absztrakt kezelésük

Page 4: Aspektus-orientált nyelvek XML reprezentációjaAspektus-orientált nyelvek XML reprezentációja Kincses Róbert Debreceni Egyetem, Informatikai Intézet kincsesr@inf.unideb.hu

Aspektus-orientált rendszer

• „hagyományos” programozási nyelv: a komponensek megvalósítása

• egy vagy több aspektus nyelv: az aspektusok leprogramozása

• aspektusszövő (weaver): a nyelveket összekombinálja

• a programok, a megfelelő nyelveken megvalósítva.• kapcsolódási pont: a komponens nyelv szintaktikai

elemei, melyekhez az aspektusok kapcsolódnak

Page 5: Aspektus-orientált nyelvek XML reprezentációjaAspektus-orientált nyelvek XML reprezentációja Kincses Róbert Debreceni Egyetem, Informatikai Intézet kincsesr@inf.unideb.hu

AspectJ

• általános célú, aspektus-orientált kiterjesztése a Java nyelvnek

• elemei:– Kapcsolódási pont (join point)– Vágási pont (pointcut)– Tanács (advice)– Típusközi deklaráció (Inter-type declarations)– Aspektus (aspect)

Page 6: Aspektus-orientált nyelvek XML reprezentációjaAspektus-orientált nyelvek XML reprezentációja Kincses Róbert Debreceni Egyetem, Informatikai Intézet kincsesr@inf.unideb.hu

XML

• Az eXtensible Markup Language (XML) W3C ajánlás (3. kiadás: 2004. február)

• nyelveket lehet definiálni, melyek dokumentum osztályokat adnak meg

• hierarchikus adatok leírására; logikai struktúra a tagek segítségével

• jól formázott, érvényes dokumentum• sok további ajánlás épül rá

Page 7: Aspektus-orientált nyelvek XML reprezentációjaAspektus-orientált nyelvek XML reprezentációja Kincses Róbert Debreceni Egyetem, Informatikai Intézet kincsesr@inf.unideb.hu

XSLT és XPath

• eXtensible Stylesheet Language Transformations: XML dokumentumok transzformációja

• XML Path: olyan nyelvet definiál, amellyel XML dokumentumok részei címezhetőek

• az XSLT XPath kifejezésekkel éri el az XML dokumentumok részeit

Page 8: Aspektus-orientált nyelvek XML reprezentációjaAspektus-orientált nyelvek XML reprezentációja Kincses Róbert Debreceni Egyetem, Informatikai Intézet kincsesr@inf.unideb.hu

Példa: XML + XSLT<?xml version="1.0”?><?xml-stylesheettype="text/xsl"

href="simple.xsl"?><list><element value="7"/><element value="6"/></list>

<?xml version="1.0" encoding="ISO-8859-1"?><xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"><xsl:template match="/">

<html><head><title>List</title></head><body>Ez egy lista:<xsl:apply-templates/></body></html>

</xsl:template><xsl:template match="list">

<ul><xsl:apply-templates/></ul></xsl:template><xsl:template match="element"><xsl:if test="@value &gt; 5"><li><xsl:value-of select="@value"/></li>

</xsl:if></xsl:template></xsl:stylesheet>

simple.xml

simple.xsl

Page 9: Aspektus-orientált nyelvek XML reprezentációjaAspektus-orientált nyelvek XML reprezentációja Kincses Róbert Debreceni Egyetem, Informatikai Intézet kincsesr@inf.unideb.hu

Példa: Az eredmény

Page 10: Aspektus-orientált nyelvek XML reprezentációjaAspektus-orientált nyelvek XML reprezentációja Kincses Róbert Debreceni Egyetem, Informatikai Intézet kincsesr@inf.unideb.hu

Az AspectJ XML reprezentációja

• az XML formátum kialakítása:– emberi olvasásra is alkalmas legyen– a nyelvi elemeket „felülről-lefelé” alakítjuk át– cél: lehető legtöbb elemet alakítsuk át

• az XML dokumentumok felhasználása– XSLT: automatikus átalakítás– többféle kimenet a felhasználás módjának

megfelelően

Page 11: Aspektus-orientált nyelvek XML reprezentációjaAspektus-orientált nyelvek XML reprezentációja Kincses Róbert Debreceni Egyetem, Informatikai Intézet kincsesr@inf.unideb.hu

Példa: az XML formátum (1)

public aspect SimpleAspect {//...}

<?xml version="1.0" encoding="UTF-8"?><aspect name="SimpleAspect" modifier="public">

</aspect>

Page 12: Aspektus-orientált nyelvek XML reprezentációjaAspektus-orientált nyelvek XML reprezentációja Kincses Róbert Debreceni Egyetem, Informatikai Intézet kincsesr@inf.unideb.hu

Példa: az XML formátum (2)pointcut argCheck(int score):call(void Proba.doSomething(int)) && args(score);

<pointcut><name>argCheck</name><formals><formal type="int" name="score"/></formals><and><primitive type="call">void Proba.doSomething(int)

</primitive><primitive type="args">score</primitive></and></pointcut>

Page 13: Aspektus-orientált nyelvek XML reprezentációjaAspektus-orientált nyelvek XML reprezentációja Kincses Róbert Debreceni Egyetem, Informatikai Intézet kincsesr@inf.unideb.hu

Példa: az XML formátum (3)before(int score): argCheck(score) {if( score < 0 || score > 100 ) thrownew IllegalArgumentException("illegal score: "+score);

}

<advice type="before"><formals><formal type="int" name="score"/></formals><pointcut><name>argCheck</name><exposes>score</exposes></pointcut><body>if( score < 0 || score > 100 ) thrownew IllegalArgumentException("illegal score:"+score);

</body></advice>

Page 14: Aspektus-orientált nyelvek XML reprezentációjaAspektus-orientált nyelvek XML reprezentációja Kincses Róbert Debreceni Egyetem, Informatikai Intézet kincsesr@inf.unideb.hu

Az XML felhasználási módjai

• AspectJ kód előállítása– automatikus kódelőállítása– Akkor van értelme, ha nincs AspectJ kód

• a XML állomány tartalmazhat dokumentációt– HTML alapú dokumentáció

• egy lépésben bytecode előállítása– a fordító az XML és a Java forrásokat fordítja le

Page 15: Aspektus-orientált nyelvek XML reprezentációjaAspektus-orientált nyelvek XML reprezentációja Kincses Róbert Debreceni Egyetem, Informatikai Intézet kincsesr@inf.unideb.hu

Példa: AspectJ kód előállítása (1)

Aspektus generálása:

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

Page 16: Aspektus-orientált nyelvek XML reprezentációjaAspektus-orientált nyelvek XML reprezentációja Kincses Róbert Debreceni Egyetem, Informatikai Intézet kincsesr@inf.unideb.hu

Példa: AspectJ kód előállítása (2)

Vágási pont generálása:<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><xsl:template match="primitive"><xsl:value-of select="@type"/>(<xsl:apply-templates/>)</xsl:template>

Page 17: Aspektus-orientált nyelvek XML reprezentációjaAspektus-orientált nyelvek XML reprezentációja Kincses Róbert Debreceni Egyetem, Informatikai Intézet kincsesr@inf.unideb.hu

Összefoglalás, további lehetőségek

Page 18: Aspektus-orientált nyelvek XML reprezentációjaAspektus-orientált nyelvek XML reprezentációja Kincses Róbert Debreceni Egyetem, Informatikai Intézet kincsesr@inf.unideb.hu

Köszönöm a figyelmet!

Kérdések, megjegyzések?