Presentation is loading. Please wait.

Presentation is loading. Please wait.

Jim McKeeth | Podcast at Delphi.org

Similar presentations


Presentation on theme: "Jim McKeeth | Podcast at Delphi.org"— Presentation transcript:

1 Jim McKeeth | Podcast at Delphi.org
Introduction to Aspect Oriented Programming with Cirrus and Delphi Prism

2 Agenda What is AOP? Why AOP? Two AOP Paradigms The Cirrus Framework
Examples Debugging Other AOP Frameworks Future 2

3 What is Aspect-Oriented Programming?
HMOY know what AOP is? You have come to the right place

4 A Paradigm Shift Aspect-Oriented programming is to Object-Oriented programming Object-Oriented programming is to Procedural programming as Won’t it be slower / harder to debug? Why do we need a new paradigm? I can do this already!

5 A Definition Super-Encapsulation Think of it as
A 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?
Error handling Business logic Thread locking User Interface

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. Robert C. Martin “Uncle Bob” butUncleBob.com

10 Two AOP Paradigms Pre-Compile / At-Compile Post-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 Transfer method TBank.Transfer(fromAccount, toAccount: TAccount; amount: Integer); begin if fromAccount.Balance < amount then raise new EInsufficientFundsException(); end; fromAccount.withdraw(amount); toAccount.deposit(amount);

13 With Security With Security 13

14 With Logging With Threading With Transactions With ??? 14

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.

17 Demo Time

18 More on Cirrus Cirrus Overview
prismwiki.codegear.com/en/Cirrus_Overview Common Aspect Library RemObjects Blog Blogs.RemObjects.com/blogs/ My Blogs Delphi.org DavinciUnltd.com 18

19 Other AOP Frameworks Other .NET options C++ Java 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 Future of AOP

21 Contact Me Jim McKeeth jim@mckeeth.org Twitter.com/JimMcKeeth
FriendFeed.com/JimMcKeeth Delphi.org DavinciUnltd.com/Code/Cirrus/  Get the slides


Download ppt "Jim McKeeth | Podcast at Delphi.org"

Similar presentations


Ads by Google