Download presentation
Presentation is loading. Please wait.
Published byVirginia Malone Modified over 9 years ago
1
Aspect Oriented Development Alex Beatty
2
Purpose Cross-cutting Concerns Join Points, Pointcuts, and Advices Weaving Invasive vs. Non-Invasive Static vs. Dynamic Introduction
3
What is a cross-cutting concern? Examples Reduction of code tangling and code scattering Abstraction Obliviousness Expert Development Object Reuse Purpose
4
Join Point - Point in the base code that aspect code can utilized Examples A method being called A method’s code being run Initialization Join Points
5
User defined join point(s) to utilize aspect code with AspectJ examples execution(!static * (Class1 || ClassA).*(..)); call(void Set*(int)); Explanation Pointcuts
6
Basically a function before, after, and around key words around has a special proceed() function Has access to some information from base code Function name, parameters, return type, return value Advice
7
Static vs dynamic Compile-time vs load- or run-time Invasive vs non-invasive Directly changing base code or not Weaving
8
Logging Coordination Security Mutual Exclusion Applications
9
Coordination Silent Single Bid Public English Style
10
Confusion about it’s role Anti-pattern: Action at a distance Downsides
11
Java-based Pointcuts Can use logical operators Can be named Advices are formatted like java functions AspectJ
12
pointcut functionExecution(): execution(!static * (Class1 || ClassA).*(..)) Name Join point type Join point specification AspectJ Pointcuts
13
Name Shorter than the pointcut itself Can include parameters to capture access to an object pointcut setter(Person p): target(p) && … AspectJ Pointcuts
14
Methods and Constructors call(Signature) / execution(Signature) AspectJ Pointcut Types //before call Person.walk(); //after call Private void walk() { //before execution //TODO: write function body //after execution }
15
Fields get(Signature) / set(Signature) E.g. set(int Racer.*) AspectJ Pointcut Types private int id; … //before set id = 42; //after set
16
Instanceof checks and context exposure this(type or id) / target(type or id) / args(type or id) E.g. args(newval), target(Racer) Others http://eclipse.org/aspectj/doc/released/progguide/quick.html#quick-pointcuts http://eclipse.org/aspectj/doc/released/progguide/quick.html#quick-pointcuts AspectJ Pointcut Types
17
void around(Racer r): criticalSection(r) { int i = (int) r.getId(); …proceed(); … } thisJoinPoint Can be used to get arguments, signature, target, etc thisJoinPoint.getArgs(); AspectJ Advices
18
Example of Mutual Exclusion Aspect
19
Questions
20
[1] Aspect-oriented software development. In Wikipedia. Retrieved October 20, 2013, from http://en.wikipedia.org/wiki/Aspect- oriented_software_development [2] Rohit Sethi. “Aspect-Oriented Programming and Security”. Retrieved October 28, 2013, from http://www.symantec.com/connect/articles/aspect-oriented-programming-and-security http://www.symantec.com/connect/articles/aspect-oriented-programming-and-security [3] Fuentes, Lidia; Sánchez, Pablo. “Aspect-Oriented Coordination”. In Science Direct. Retrieved from http://www.sciencedirect.com/science/article/pii/S1571066107004926 http://www.sciencedirect.com/science/article/pii/S1571066107004926 [4] Aspect Weaver. In Wikipedia. Retrieved October 28, 2013, from http://en.wikipedia.org/wiki/Aspect_weaver [5] Piveta, Eduardo Kessler; Zancanella, Luiz Carlos. “Aspect Weaving Strategies”. In Journal of Universal Computer Science. Retrieved from http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.2.9460&rep=rep1&type=pdfhttp://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.2.9460&rep=rep1&type=pdf [6] The AspectJ Programming Guide. Retrieved October 28, 2013, from http://eclipse.org/aspectj/doc/released/progguide/index.html http://eclipse.org/aspectj/doc/released/progguide/index.html References
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.