160 likes | 326 Views
Aspekt-orienteret programmering (AOP). Lars Christensen Daniel Simonsen. Præsentation af AOP. Hvad er AOP og hvordan komplementerer det objekt-orienteret udvikling? Kodeeksempel Fordele og ulemper. AOP terminologi. Tværgående funktionalitet (eng. crosscutting concerns ) Advice
E N D
Aspekt-orienteret programmering (AOP) Lars Christensen Daniel Simonsen
Præsentation af AOP • Hvad er AOP og hvordan komplementerer det objekt-orienteret udvikling? • Kodeeksempel • Fordele og ulemper
AOP terminologi • Tværgående funktionalitet (eng. crosscutting concerns) • Advice • Point-cut • Aspekt (eng. aspect)
Tværgående funktionalitet • Ex. sikkerhed, validering af inddata, fejlhåndtering, logning m.m. Klasser (OO programmering)
Join punkt (eng. join point) • Et veldefineret punkt i programudførelsen, der bruges til at sammenføje eksekvering af ”ny” og ”gammel” kode • Eksempler på join punkter er metodekald, tilgang til variable og ved kode til undtagelseshåndtering (eng. exception handling)
Advice • Kode, der skal eksekveres på et bestemt tidspunkt; før, efter eller omkring et join punkt • before(): før join punktet • after(): efter join punktet • around(): kan styre om join punktet bliver eksekveret eller ej ved brug af proceed()
Pointcut • Et pointcut er en sprogkonstruktion, der udvælger et sæt af join punkter, der opfylder visse kriterier
Aspekt • Et aspekt er kombinationen af et pointcut og advice kode.
Introduction • Brug af introduction gør det muligt for aspekter at ændre programmets struktur; • Kan tilføje nye metoder og variable • Erklære, at en klasse implementerer et interface
Implementationer • AspectJ • Jboss AOP • Nanning • Aspectwerkz • Spring
Fordele • Reduceret kodekompleksitet og udviklingstid • Tilsyneladende ingen ydelsesforringelse • Man undgår fejl forårsaget af (næsten) identisk kode • Nemt at vedligeholde og udvide systemer ved at tilføje aspekter • Aspekter kan genbruges
Ulemper • Fejlfinding kan blive vanskeligere (?) • Mulighed for spaghettikode, hvis aspekter bliver brugt ukritisk