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

Post on 26-Mar-2015

230 views 1 download

Tags:

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

• jim@mckeeth.org

• Twitter.com/JimMcKeeth

• FriendFeed.com/JimMcKeeth

• Delphi.org

• DavinciUnltd.com/Code/Cirrus/ Get the slides