DOC PREVIEW
MSU CSE 870 - 12-AOP-suppl-new

This preview shows page 1-2-3-24-25-26 out of 26 pages.

Save
View full document
View full document
Premium Document
Do you want full access? Go Premium and unlock all 26 pages.
Access to all documents
Download any document
Ad free experience
View full document
Premium Document
Do you want full access? Go Premium and unlock all 26 pages.
Access to all documents
Download any document
Ad free experience
View full document
Premium Document
Do you want full access? Go Premium and unlock all 26 pages.
Access to all documents
Download any document
Ad free experience
View full document
Premium Document
Do you want full access? Go Premium and unlock all 26 pages.
Access to all documents
Download any document
Ad free experience
View full document
Premium Document
Do you want full access? Go Premium and unlock all 26 pages.
Access to all documents
Download any document
Ad free experience
View full document
Premium Document
Do you want full access? Go Premium and unlock all 26 pages.
Access to all documents
Download any document
Ad free experience
Premium Document
Do you want full access? Go Premium and unlock all 26 pages.
Access to all documents
Download any document
Ad free experience

Unformatted text preview:

A Brief Introduction to Aspect-Oriented ProgrammingHistorical View Of LanguagesAcknowledgementsProcedural LanguageFunctional LanguageLogical LanguageObject-Oriented ProgrammingOOP (cont’d)We Need MoreExample of Tangled CodeUntangling the Tangled CodeBasic Concepts in AOPAOP: LanguagesPictoral RepresentationAspectJ by ExampleAspectJ by Example (cont’d)PointcutsAdviceAspectsIntroductionIntroduction (cont’d)Slide 22Slide 23What Can AspectJ Do for UsConclusion and Open IssuesRelated WorkRRRA Brief Introduction to Aspect-Oriented ProgrammingRRRHistorical View Of Languages•Procedural language•Functional language•Object-Oriented languageRRRAcknowledgements•Zhenxiao Yang•Gregor KiczalesRRRProcedural Language•Also termed imperative language•Describe–An explicit sequence of steps to follow to produce a result•Examples: Basic, Pascal, C, FortranRRRFunctional Language•Describe everything as a function (e.g., data, operations)•(+ 3 4); (add (prod 4 5) 3)•Examples–LISP, Scheme, ML, HaskellRRRLogical Language•Also termed declarative language•Establish causal relationships between terms–Conclusion :- Conditions–Read as: If Conditions then Conclusion•Examples: Prolog, ParlogRRRObject-Oriented Programming•Describe –A set of user-defined objects –And communications among them to produce a (user-defined) result•Basic features–Encapsulation–Inheritance–PolymorphismRRROOP (cont’d)•Example languages–First OOP language: SIMULA-67 (1970)–Smalltalk, C++, Java–Many other:•Ada, Object Pascal, Objective C, DRAGOON, BETA, Emerald, POOL, Eiffel, Self, Oblog, ESP, POLKA, Loops, Perl, VB•Are OOP languages procedural?RRRWe Need More•Major advantage of OOP–Modular structure•Potential problems with OOP–Issues distributed in different modules result in tangled code.–Example: error logging, failure handling, performance optimizations•Potential result: Tangled Code–Change in the way logging is done affects many classesRRRExample of Tangled CodeRed indicates the error-logging codeRRRUntangling the Tangled Code•Constraint:–Want to preserve the benefits of OOP (encapsulation, modularity, inheritance, etc.)•Potential Solution:–Aspect-Oriented ProgrammingRRRBasic Concepts in AOP•Crosscutting: straddle across functional and hierarchical boundaries •Aspect: –Property cannot be cleanly encapsulated into a single procedure–Tend to affect performance or semantics of components in systematic waysRRRAOP: Languages•Components:–Component program–Aspect definition–Aspect Weaver•Constructs:–Join point: execution point in component program for integrating aspects–Pointcuts: refers to collection of join points and values of variables at those points–Advice: method-like constructs that define additional behavior at join points–Aspects: “units of modular cross-cutting implementation”•Pointcuts•Advice•Regular (Java) codeRRRPictoral RepresentationWeaverExecutableAspectCompilerCompilerExecutableRRRAspectJ by ExampleRRRAspectJ by Example (cont’d)•Define pointcuts•Define advice•IntroductionRRRPointcuts•pointcut–pointcut move(): call(void FigureElement.setXY(int,int)) || call(void Point.setX(int)) || call(void Point.setY(int)) || call(void Line.setP1(Point)) || call(void Line.setP2(Point)); –pointcut produce call(void Figure.make*(..))–pointcut setXY(FigureElement fe, int x, int y): call(void fe.setXY(x, y));RRRAdvice•Advice–after(): move(){ System.out.println(“A figure element moved. ”); } –after (FigureElement fe, int x, int y):setXY(fe,x,y){ System.out.println(fe + “ moved to ” +x,+ “ , ” + y); }RRRAspectsaspect FigureLog{ pointcut setXY(FigureElement fe, int x, int y): calls(void fe.setXY(x, y)); after(FigureElement fe, int x, int y): setXY(fe, x, y){ System.out.println(fe + " moved to (" + x + ", " + y + ")."); } }RRRIntroduction•Introduction–Add members to a set of Classes–Change inheritance structure of classesRRRIntroduction (cont’d)aspect PointObserving { private Vector Point.observers = new Vector(); public static void addObserver(Point p, Screen s) { p.observers.add(s); } public static void removeObserver(Point p, Screen s) { p.observers.remove(s); } ....}RRRIntroduction (cont’d)public class A1{ function foo(){…}}public class A2{ function foo(){…;super.foo();…}}public class A3{ function foo(){…;super.foo();…}}aspect A1A2A3{ declare parents: A2 extends A1; declare parents: A3 extends A2;}RRRIntroduction (cont’d)public class A1{ function foo(){…}}public class A2{ function foo(){…;super.foo();…}}public class A3{ function foo(){…;super.foo();…}}aspect A1A3A2{ declare parents: A3 extends A1; declare parents: A2 extends A3;}RRRWhat Can AspectJ Do for Us•Developing–Tracing, Logging, and Profiling–Pre- and Post-Conditions–Contract Enforcement•Production–Change Monitoring–Synchronization–Context Passing–Providing Consistent Behavior•IntroductionRRRConclusion and Open Issues•AOP vs OOP–AOP is not substitute for OOP–AOP makes OOP more powerful•AOP also has runtime overhead–We should use OOP as much as possible•Reuse of aspects•Tool supportRRRRelated Work•AspectJ•Reflection and meta-object protocols–Meta-object provides mechanism to control over base-objects•Subject-Oriented Programming•Intentional


View Full Document

MSU CSE 870 - 12-AOP-suppl-new

Documents in this Course
HW2

HW2

3 pages

splc1

splc1

21 pages

Lessons

Lessons

3 pages

revision

revision

13 pages

ft1

ft1

12 pages

john.dsn

john.dsn

21 pages

Survey

Survey

2 pages

revision

revision

38 pages

Load more
Download 12-AOP-suppl-new
Our administrator received your request to download this document. We will send you the file to your email shortly.
Loading Unlocking...
Login

Join to view 12-AOP-suppl-new and access 3M+ class-specific study document.

or
We will never post anything without your permission.
Don't have an account?
Sign Up

Join to view 12-AOP-suppl-new 2 2 and access 3M+ class-specific study document.

or

By creating an account you agree to our Privacy Policy and Terms Of Use

Already a member?