Introduction to
Aspect Oriented Programming
Presented By:Kotaiah Choudary. Ravipati
M.Tech IInd Year.
School of Info. Tech.
19 August 2005 Aspect Oriented Programming 2
Contents
• Introduction
• AOP Methodology
• AOP Languages
• AspectJ
19 August 2005 Aspect Oriented Programming 3
Programming Methodologies
m/c Programming
Assembly Programming
Procedural Programming
OO Programming
AO Programming
Programming Methodologies Evaluation
Concern Abstraction
Function Abstractio
n
Object Abstraction
Introduction
19 August 2005 Aspect Oriented Programming 4
Present Design Problem
• The architect’s dilemma– How much design is too much?
Introduction
19 August 2005 Aspect Oriented Programming 5
Terminology
• Concern– A specific requirement or consideration that must be
addressed in order to satisfy the overall system goal– E.g. Banking system:
Customer and Account management, Interbanking transactions, ATM transactions,
Persistence of all entities, Transaction integrity, Authorization of access to various services, Logging, Security, Error checking, Policy enforcement
Introduction
19 August 2005 Aspect Oriented Programming 6
Terminology cont
• Core concerns– Central functionality of a Business logic (single
module)– Customer and Account management, Interbanking
transactions, ATM transactions
• Crosscut concerns– System-level, peripheral requirements (multiple
modules)– Persistence of all entities, Transaction integrity,
Authorization of access to various services, logging, Security, Error checking, Policy enforcement
Introduction
19 August 2005 Aspect Oriented Programming 7
Typical Application
Accounting
ATM
Database
System
Introduction
Persistence Logging
Business Logic
Concern
Persistence
LoggingImplementation
modules
Accounting
ATM
Database
System
Persistence
Logging
19 August 2005 Aspect Oriented Programming 8
Implementation by Traditional Languages
Accounting Module
ATM Module
Database Module
Logging Module
API invocations
Introduction
19 August 2005 Aspect Oriented Programming 9
Implementation by AOP
Accounting Module
ATM Module
Database Module
Logging ModuleLogging Aspect
APIInvocation
Automatically Weaving Invocations
Aspect: A modular unit of crosscutting concern implementation
Introduction
19 August 2005 Aspect Oriented Programming 10
AOP Methodology
• The idea behind AOP is “Separation of concern”
• AOP builds upon Existing Methodologies (OOP, Procedural programming), augmenting them with concepts and constructs in order to modularize crosscutting concerns.
• Now, concern consists of what?
AOP Methodology
19 August 2005 Aspect Oriented Programming 11
AOP Development StagesAOP Methodology
Business Logic
Security
Logging
Persistence
Identify concerns
Integrating all concerns
19 August 2005 Aspect Oriented Programming 12
AOP Languages
• AOP Language Specification– Describes the language constructs and
syntax– Specification for implementing the
individual concerns and rules for weaving different concerns
AOP Languages
19 August 2005 Aspect Oriented Programming 13
AOP Languages cont
• AOP language implementation– Verifies the code and translates the code into
an executable form– Implementation done by two steps
• Combining individual concerns using the weaving rules - Weaving
• Then converting result into executable code.
• Some AOP Languages– AspectJ, Aspect#, AspectC++, PHPaspect.
AOP Languages
19 August 2005 Aspect Oriented Programming 14
AspectJ
• Aspect-oriented extension to Java language• Language Specification• Language Implementation
– Concern by Java Language– Weaving rules by extension Tools
• Crosscutting in AspectJ– Implementation of the weaving rules by the compiler – 2 Types:
• Dynamic Crosscutting– Weaving of new Behavior into execution of program
• Static Crosscutting– weaving of modifications into the static structure, to support the
Dynamic Crosscutting
AspectJ
19 August 2005 Aspect Oriented Programming 15
AspectJ cont
• Crosscutting Elements– Join Point
• Well-defined points in the execution of a program
– Pointcut• A means of referring to collections of join points and certain values at
those join points
– Advice• Method-like constructs to define additional behavior at join points
– Introduction• Instruction that changes to the classes, interfaces of the system
– Compile time Declaration• Instruction for adding compile time warnings and errors to the system
– Aspect• Unit of modular crosscutting implementation
AspectJ
19 August 2005 Aspect Oriented Programming 16
ExamplePublic class Logging{//classpublic void check( ) {
System.out.println("Inside Logging Class Method"); }}
public class ATM { //classpublic void foo(int number, String name) {
System.out.println("Inside foo Method"); }public static void main(String[] args) {
MyClass myObject = new MyClass( ); myObject.foo(1, “SIT"); } }
public aspect Log { //Aspect pointcut callPointcut( ) : call(void ATM.foo(int, String)); //Pointcut
before( ) : callPointcut( ) { //AdviceSystem.out.println( “I am from Log aspect"); Logging logg= new Logging();logg.check(); } }
AspectJ
Name of Pointcut
beforeafteraround
19 August 2005 Aspect Oriented Programming 17
Example cont
• Compile– ajc ATM.java Log. java – output:
• ATM.class Log.class
• Run– java ATM– Output:
• I am from Log aspect Inside foo Method
Here let us assume Logging class already compiled
AspectJ
19 August 2005 Aspect Oriented Programming 18
References
• AspectJ Cookbook , O'Reilly, December 2004• Aspectj In Action - Practical Aspect-Oriented Programming,
2003• http://www.codeproject.com/gen/design/aop.asp#2• http://en.wikipedia.org/wiki/Aspect_oriented_programming• Erik Putrycz, Guy Bernard, IEEE 2002, Using Aspect
Oriented Programming to build a portable load balancing service