cirrus design sr20 - Cirrus Design Authorized Service Center Home
Introduction to Aspect Oriented Programming with Cirrus and Delphi Prism Jim McKeeth | Podcast at...
-
Upload
chloe-pereira -
Category
Documents
-
view
229 -
download
1
Transcript of Introduction to Aspect Oriented Programming with Cirrus and Delphi Prism Jim McKeeth | Podcast at...
Introduction toAspect Oriented Programming with Cirrus and Delphi Prism
Jim McKeeth | Podcast at Delphi.org
2
AgendaWhat is AOP?Why AOP?Two AOP ParadigmsThe Cirrus FrameworkExamplesDebuggingOther AOP FrameworksFuture
2
3
??What is What is
Aspect-OrientedAspect-OrientedProgramming?Programming?
4
A Paradigm ShiftAspect-Oriented
programming
is to
Object-Oriented
programming
Object-Oriented
programming
is to
Procedural
programming
as
Why do we need a new paradigm?
I can do this already!
Won’t it be slower / harder
to debug?
5
A DefinitionA programming paradigm that increases modularity by enabling
improved separation of concerns. This entails breaking down a program
into distinct parts allowing the separation of cross-cutting concerns.
Think of it as
Super-Encapsulation
6
Think of it as
Super-Encapsulation
7
What is a Concern?•A distinct and cohesive area of functionality
• Examples:
•Business logic
•User interface
•Database access
•Error handling
•Logging
•Threading
•Transactions
•Security
•Exception handling
Secondary requirements, but often the bulk of our code!
8
What Makes a Concern Cross-Cut?
??Business logic
Erro
r han
dlin
gThread lockingUser Interfa
ce
9
The Principles of OOD•SRP The Single Responsibility Principle - A class
should have one, and only one, reason to change.
•OCP The Open Closed Principle You should be able
to extend a classes behavior, without modifying it.
•LSP The Liskov Substitution Principle Derived classes
must be substitutable for their base classes.
•ISP The Interface Segregation Principle Make fine
grained interfaces that are client specific.
•DIP The Dependency Inversion Principle Depend on
abstractions, not on concretions.
http://butUncleBob.com/ArticleS.UncleBob.PrinciplesOfOod
Robert C. Martin “Uncle Bob”
www.objectmentor.combutUncleBob.com
10
Two AOP Paradigms
•Pre-Compile / At-Compile•Decorating the code with the aspects before compilation
(method used by Cirrus)
•Concerns are woven in during compilation.
•Post-Compile•Weave the advice in after compilation via Point-Cut
definitions (method used by AspectJ)
•Allows modification of existing functionality without
modifying code.
11
12
Bank Transfermethod TBank.Transfer(fromAccount, toAccount: TAccount; amount:
Integer);
begin
if fromAccount.Balance < amount then
begin
raise new EInsufficientFundsException();
end;
fromAccount.withdraw(amount);
toAccount.deposit(amount);
end;
13
With Security
13
With Security
14
With Logging . . . .
14
With Transactions
With ThreadingW
ith ???
15
With Cirrus AOP
15
16
Cirrus Fundamentals•Add reference to RemObjects.Oxygene.Cirrus.
• Not necessary to deploy.
•Aspects must be in a separate assembly.• Also not necessary to deploy.
•Aspects woven in at compile time.
•Cirrus exists as a series of Interfaces (callbacks).
•Aspects are applied via Attributes with the aspect: prefix.
Demo Time
18
More on Cirrus•Cirrus Overview
•prismwiki.codegear.com/en/Cirrus_Overview
•Common Aspect Library
•http://code.remobjects.com/p/prismaspects/
•RemObjects Blog
•Blogs.RemObjects.com/blogs/
•My Blogs
•Delphi.org
•DavinciUnltd.com
18
19
Other AOP Frameworks•For Delphi Win32
• MeAOP in MeSDK
•code.google.com/p/meaop/
•Other .NET options•
•PostSharp.org
•
•SpringFramework.net
•C++
• AspectC.org
•Java
• eclipse.org/AspectJ
19
20
??The
Futureof AOP
21
Contact Me•Jim McKeeth
• Twitter.com/JimMcKeeth
• FriendFeed.com/JimMcKeeth
• Delphi.org
• DavinciUnltd.com/Code/Cirrus/ Get the slides