Jim McKeeth | Podcast at Delphi.org

Slides:



Advertisements
Similar presentations
TWO STEP EQUATIONS 1. SOLVE FOR X 2. DO THE ADDITION STEP FIRST
Advertisements

LEUCEMIA MIELOIDE AGUDA TIPO 0
Copyright © 2005 Finetix LLC All Rights Reserved 0 Spring Framework Developer Session Chris Donnan & Solomon Duskis The Peer Frameworks Series -.Net and.
Spring Roo and the Cloud Shekhar Gulati.
Slide 1 Insert your own content. Slide 2 Insert your own content.
1 Copyright © 2010, Elsevier Inc. All rights Reserved Fig 2.1 Chapter 2.
By D. Fisher Geometric Transformations. Reflection, Rotation, or Translation 1.
AJDT and AspectJ Release Review | © 2007 by SpringSource, made available under the EPL v1.0 1 Release Review: AJDT and AspectJ
Business Transaction Management Software for Application Coordination 1 Business Processes and Coordination.
1 Introduction to ASP.Net 4.0 Development David Ringsell MCSD MCT MCPD.
3 Copyright © 2005, Oracle. All rights reserved. Designing J2EE Applications.
6 Copyright © 2005, Oracle. All rights reserved. Building Applications with Oracle JDeveloper 10g.
Jeopardy Q 1 Q 6 Q 11 Q 16 Q 21 Q 2 Q 7 Q 12 Q 17 Q 22 Q 3 Q 8 Q 13
Jeopardy Q 1 Q 6 Q 11 Q 16 Q 21 Q 2 Q 7 Q 12 Q 17 Q 22 Q 3 Q 8 Q 13
Title Subtitle.
My Alphabet Book abcdefghijklm nopqrstuvwxyz.
0 - 0.
DIVIDING INTEGERS 1. IF THE SIGNS ARE THE SAME THE ANSWER IS POSITIVE 2. IF THE SIGNS ARE DIFFERENT THE ANSWER IS NEGATIVE.
MULTIPLYING MONOMIALS TIMES POLYNOMIALS (DISTRIBUTIVE PROPERTY)
ADDING INTEGERS 1. POS. + POS. = POS. 2. NEG. + NEG. = NEG. 3. POS. + NEG. OR NEG. + POS. SUBTRACT TAKE SIGN OF BIGGER ABSOLUTE VALUE.
SUBTRACTING INTEGERS 1. CHANGE THE SUBTRACTION SIGN TO ADDITION
MULT. INTEGERS 1. IF THE SIGNS ARE THE SAME THE ANSWER IS POSITIVE 2. IF THE SIGNS ARE DIFFERENT THE ANSWER IS NEGATIVE.
Addition Facts
|epcc| NeSC Workshop Open Issues in Grid Scheduling Ali Anjomshoaa EPCC, University of Edinburgh Tuesday, 21 October 2003 Overview of a Grid Scheduling.
ZMQS ZMQS
1 CS506 Seminar: Zehn Programmier-sprachen in einem Semester, Language Features, by L. Yamamoto Programming Languages Features Programming styles or paradigms.
Copyright 2012, 2008, 2004, 2000 Pearson Education, Inc.
BT Wholesale October Creating your own telephone network WHOLESALE CALLS LINE ASSOCIATED.
Lilian Blot Announcements Teaching Evaluation Form week 9 practical session Formative Assessment week 10 during usual practical sessions group 1 Friday.
ABC Technology Project
© S Haughton more than 3?
Energy & Green Urbanism Markku Lappalainen Aalto University.
31242/32549 Advanced Internet Programming Advanced Java Programming
Introduction to Databases
Security Design Patterns – Overview –Software Development Lifecycle –Enterprise Software Design Process and Artifacts –Pattern Format –Aspect Oriented.
1 Welcome to JCCAA Data base presentation Click box to see the DEMO 1.JCCAA Web Site 2. Member Login 3. My Acount 4. School DBA The end.
Addition 1’s to 20.
25 seconds left…...
1 Object Oriented Programming Ras Bodik, Thibaud Hottelier, James Ide UC Berkeley CS164: Introduction to Programming Languages and Compilers Fall 2010.
Test B, 100 Subtraction Facts
Week 1.
We will resume in: 25 Minutes.
1 Unit 1 Kinematics Chapter 1 Day
Chapter 11 Component-Level Design
1 PART 1 ILLUSTRATION OF DOCUMENTS  Brief introduction to the documents contained in the envelope  Detailed clarification of the documents content.
Presentation 10 SOAP on the Microsoft Platform (.NET)
Aspect Oriented Programming. AOP Contents 1 Overview 2 Terminology 3 The Problem 4 The Solution 4 Join point models 5 Implementation 6 Terminology Review.
Aspect Oriented Programming - AspectJ Radhika Rajput.
Copyright © 2008 Accenture All Rights Reserved. Accenture, its logo, and High Performance Delivered are trademarks of Accenture. Andrew Stone Common Security.
Review Amit Shabtay. March 3rd, 2004 Object Oriented Design Course 2 Review What have we done during the course? Where to learn more? What is for the.
Review David Rabinowitz. March 3rd, 2004 Object Oriented Design Course 2 Review What have we done during the course? Which topics we have not discussed?
Introduction to AOP.
Introduction to Aspect Oriented Programming Presented By: Kotaiah Choudary. Ravipati M.Tech IInd Year. School of Info. Tech.
Aspect Oriented Programming (AOP) in.NET Brent Krueger 12/20/13.
Aspect Oriented Programming Scott Nykl CSSE 411 Senior Seminar.
Company Confidential – Do Not Duplicate 2 Copyright 2008 McLane Advanced Technologies, LLC S.O.L.I.D. Software Development Achieving Object Oriented Principles,
©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 32 Slide 1 Aspect-oriented Software Development 1.
AOP-1 Aspect Oriented Programming. AOP-2 Aspects of AOP and Related Tools Limitation of OO Separation of Concerns Aspect Oriented programming AspectJ.
 What is SOLID  The S in SOLID  The O in SOLID  The L in SOLID  The I in SOLID  The D in SOLID  Questions.
Five design principles
Kansas City Java User’s Group Jason W. Bedell July 12, 2006
SOLID Design Principles
Aspect-Oriented Software Development (AOSD)
Leveraging ColdSpring to build a robust Flex applications Chris Scott, Cynergy Systems.
Software Engineering Lecture 7
Copyright © by Curt Hill
Aspect-Oriented Programming with the Eclipse AspectJ plug-in
Aspect-oriented programming
The SOLID Principles.
Presentation transcript:

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

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

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

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!

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

Think of it as Super-Encapsulation

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!

What Makes a Concern Cross-Cut? Error handling Business logic Thread locking User Interface

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” www.objectmentor.com butUncleBob.com http://butUncleBob.com/ArticleS.UncleBob.PrinciplesOfOod

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.

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);

With Security With Security 13

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

With Cirrus AOP 15

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

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

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

? The Future of AOP

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