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