SlideShare a Scribd company logo
Agnès CREPET @agnes_crepet Cyril LACÔTE @clacote 1st November – Gunadarma University Once upon a -Design- Time Object Oriented Design principles
Schedule ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
A bit of history ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],In the beginning : the Go To statement Invoice: Process invoice go to Computation  Credit: Process credit go to Computation Computation: Read account Compute amount Update account go to Read: End-File: close («file»)
Beyond the GOTO ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Structured Programming ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],ex : C language Reusable functions Control structures Methodology ?
Top–down approach ,[object Object],[object Object],[object Object],[object Object],Divide and conquer
Top–down approach File opening File processing File closing Invoice processing Asset processing Amount processing AccountRead AmountCompute AccountUpdate Amount processing... While there are records
Top–down approach ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Modularity ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Towards Encapsulation ,[object Object],[object Object],[object Object],[object Object]
Objet Paradigm : kind of old ! ,[object Object],[object Object],[object Object],[object Object],[object Object]
Objet : motivations ,[object Object],[object Object],Abstraction start( ) accelerate( ) velocity mark Car
Why the object paradigm? ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Doc Design Test Code Other Maintenance Source: DP Budget, Vol. 7, Dec 1998.
Objet Oriented design ,[object Object],[object Object],[object Object],[object Object],[object Object]
A good Objet Oriented design? ,[object Object],[object Object],[object Object],[object Object],[object Object]
Design Patterns ,[object Object],[object Object],[object Object],[object Object],[object Object]
The idea of Design Patterns ,[object Object],[object Object],[object Object]
The challenge of the Design Patterns ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
A basic principle : OCP (1/2) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
A basic principle : OCP (2/2) ,[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Good design principles
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Good Design Principles
[object Object],[object Object],[object Object],[object Object],[object Object],Object's foundations
Encapsulation ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Go ! Brake ! To the left !
Encapsulation ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Encapsulation ,[object Object],[object Object],[object Object],[object Object],DEMO!
Inheritance ,[object Object],[object Object],Generalization Specialization Person name : String eat() Employee name : String employer : String eat() work() Person name : String eat() Employee employer : String work()
Polymorphism ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Polymorphism's way to reach OCP DEMO!
Following upper principles ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Responsibilities assignment
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Responsibilities assignment
G.R.A.S.P : Information Expert ,[object Object],[object Object],[object Object],[object Object]
G.R.A.S.P : Creator ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
G.R.A.S.P. : Low coupling (1/2) ,[object Object]
[object Object],[object Object],[object Object],[object Object],G.R.A.S.P. : Low coupling (2/2)
G.R.A.S.P. : High cohesion ,[object Object],[object Object],[object Object],[object Object],Just do your job !
Watch for the fat ! ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
So? How to ensure low coupling and high cohesion?
Dependency management Inversion of control
There will be consequences ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],A A A uses is linked to inherits of B B B
Dependency: a strategic move ! A B A B ? or ? ,[object Object],[object Object],[object Object],[object Object]
Dependency Inversion Principle ,[object Object],[object Object],[object Object],[object Object],[object Object]
DIP : put into play ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Inversion of control : principle ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Inversion of control : put into play ,[object Object],[object Object],[object Object],[object Object],[object Object]
Dependency injection : example ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
1 - Elementary : without injection ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Use: JMario  j Mario  = new  JMario (); j Mario .onActionButton();
1 - Without injection : Appraisal ,[object Object],[object Object],[object Object],[object Object],[object Object]
2 - Manual injection ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
2 - Manual injection : Appraisal ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
3 - Injection with a container ,[object Object],[object Object],[object Object],[object Object],[object Object]
3 - Injection with a container ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Configuration by annotations (JEE6): public class JMario { @Inject private Suit suit; }
3 - Injection with a container : Appraisal ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Inversion of control : conclusion ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
In vogue Design Patterns Convention over Configuration
Convention over configuration ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Architectural Patterns 2 big families
Application Architecture : Example Java web Application Application layers  (presentation, service, business… HTML/ JavaScript HTTP  …  and persistence) JDBC Browser Application Server (ex : JBoss) DataBase Server (Ex: Oracle) Application Outside (Company Information system) ? RDBMS
Architectural Patterns ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Lean Service Oriented Architecture (SOA) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Facades Business Services Repository RDBMS  Domain Objects
Domain Driven Architecture ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Repository SGBDR  Domain Object
Conclusion
Conclusion ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Stay humble, But think big !
Bibliography
Source Code on GitHub https://github.com/acrepet/JMarioGame
Bibliography  ,[object Object],[object Object],[object Object],[object Object]
Bibliography ,[object Object],[object Object]
Bibliography ,[object Object],[object Object],[object Object],[object Object]
Bibliography : websites ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]

More Related Content

What's hot

GRASP Principles
GRASP PrinciplesGRASP Principles
GRASP Principles
Raheel Arif
 
Feedback on Part 1 of the CSLP
Feedback on Part 1 of the CSLPFeedback on Part 1 of the CSLP
Feedback on Part 1 of the CSLP
Stephen Gilmore
 
SOLID Principles part 1
SOLID Principles part 1SOLID Principles part 1
SOLID Principles part 1
Dennis van der Stelt
 
Grasp principles
Grasp principlesGrasp principles
Grasp principles
Yuriy Shapovalov
 
Six Principles of Software Design to Empower Scientists
Six Principles of Software Design to Empower ScientistsSix Principles of Software Design to Empower Scientists
Six Principles of Software Design to Empower Scientists
David De Roure
 
2015.01.09 - Writing Modern Applications for Mobile and Web
2015.01.09 - Writing Modern Applications for Mobile and Web2015.01.09 - Writing Modern Applications for Mobile and Web
2015.01.09 - Writing Modern Applications for Mobile and Web
Marco Parenzan
 
Arrays in Objective-C
Arrays in Objective-CArrays in Objective-C
Arrays in Objective-C
Stephen Gilmore
 
Solid OO & Clean Coding is essential to successful Agile development
Solid OO & Clean Coding is essential to successful Agile developmentSolid OO & Clean Coding is essential to successful Agile development
Solid OO & Clean Coding is essential to successful Agile development
Simon Gould
 
L12 GRASP
L12 GRASPL12 GRASP
The OO Design Principles
The OO Design PrinciplesThe OO Design Principles
The OO Design Principles
Steve Zhang
 
Clean code-v2.2
Clean code-v2.2Clean code-v2.2
Clean code-v2.2
Bình Trọng Án
 
Solid principle
Solid principleSolid principle
Solid principle
muhammadali0014
 
GRASP Principles
GRASP PrinciplesGRASP Principles
GRASP Principles
Gianfranco Zas
 
The Solid Principles
The Solid PrinciplesThe Solid Principles
The Solid Principles
Luke Smith
 
Big code refactoring with agility
Big code refactoring with agilityBig code refactoring with agility
Big code refactoring with agility
Luca Merolla
 
The Smells Of Bad Design
The Smells Of Bad DesignThe Smells Of Bad Design
The Smells Of Bad Designguest446c0
 
Refactoring: Improve the design of existing code
Refactoring: Improve the design of existing codeRefactoring: Improve the design of existing code
Refactoring: Improve the design of existing code
Valerio Maggio
 
Common Challenges & Best Practices for TDD on iOS
Common Challenges & Best Practices for TDD on iOSCommon Challenges & Best Practices for TDD on iOS
Common Challenges & Best Practices for TDD on iOS
Derek Lee Boire
 
On Impact in Software Engineering Research
On Impact in Software Engineering ResearchOn Impact in Software Engineering Research
On Impact in Software Engineering Research
CISPA Helmholtz Center for Information Security
 
Refactoring Tips by Martin Fowler
Refactoring Tips by Martin FowlerRefactoring Tips by Martin Fowler
Refactoring Tips by Martin Fowler
Igor Crvenov
 

What's hot (20)

GRASP Principles
GRASP PrinciplesGRASP Principles
GRASP Principles
 
Feedback on Part 1 of the CSLP
Feedback on Part 1 of the CSLPFeedback on Part 1 of the CSLP
Feedback on Part 1 of the CSLP
 
SOLID Principles part 1
SOLID Principles part 1SOLID Principles part 1
SOLID Principles part 1
 
Grasp principles
Grasp principlesGrasp principles
Grasp principles
 
Six Principles of Software Design to Empower Scientists
Six Principles of Software Design to Empower ScientistsSix Principles of Software Design to Empower Scientists
Six Principles of Software Design to Empower Scientists
 
2015.01.09 - Writing Modern Applications for Mobile and Web
2015.01.09 - Writing Modern Applications for Mobile and Web2015.01.09 - Writing Modern Applications for Mobile and Web
2015.01.09 - Writing Modern Applications for Mobile and Web
 
Arrays in Objective-C
Arrays in Objective-CArrays in Objective-C
Arrays in Objective-C
 
Solid OO & Clean Coding is essential to successful Agile development
Solid OO & Clean Coding is essential to successful Agile developmentSolid OO & Clean Coding is essential to successful Agile development
Solid OO & Clean Coding is essential to successful Agile development
 
L12 GRASP
L12 GRASPL12 GRASP
L12 GRASP
 
The OO Design Principles
The OO Design PrinciplesThe OO Design Principles
The OO Design Principles
 
Clean code-v2.2
Clean code-v2.2Clean code-v2.2
Clean code-v2.2
 
Solid principle
Solid principleSolid principle
Solid principle
 
GRASP Principles
GRASP PrinciplesGRASP Principles
GRASP Principles
 
The Solid Principles
The Solid PrinciplesThe Solid Principles
The Solid Principles
 
Big code refactoring with agility
Big code refactoring with agilityBig code refactoring with agility
Big code refactoring with agility
 
The Smells Of Bad Design
The Smells Of Bad DesignThe Smells Of Bad Design
The Smells Of Bad Design
 
Refactoring: Improve the design of existing code
Refactoring: Improve the design of existing codeRefactoring: Improve the design of existing code
Refactoring: Improve the design of existing code
 
Common Challenges & Best Practices for TDD on iOS
Common Challenges & Best Practices for TDD on iOSCommon Challenges & Best Practices for TDD on iOS
Common Challenges & Best Practices for TDD on iOS
 
On Impact in Software Engineering Research
On Impact in Software Engineering ResearchOn Impact in Software Engineering Research
On Impact in Software Engineering Research
 
Refactoring Tips by Martin Fowler
Refactoring Tips by Martin FowlerRefactoring Tips by Martin Fowler
Refactoring Tips by Martin Fowler
 

Similar to Design poo my_jug_en_ppt

Object Oriented Concepts and Principles
Object Oriented Concepts and PrinciplesObject Oriented Concepts and Principles
Object Oriented Concepts and Principles
deonpmeyer
 
Software design principles - jinal desai
Software design principles - jinal desaiSoftware design principles - jinal desai
Software design principles - jinal desai
jinaldesailive
 
GoF Design patterns I: Introduction + Structural Patterns
GoF Design patterns I:   Introduction + Structural PatternsGoF Design patterns I:   Introduction + Structural Patterns
GoF Design patterns I: Introduction + Structural Patterns
Sameh Deabes
 
Structured Software Design
Structured Software DesignStructured Software Design
Structured Software Design
Giorgio Zoppi
 
Software engineering
Software engineeringSoftware engineering
Software engineering
Fahe Em
 
Software engineering
Software engineeringSoftware engineering
Software engineeringFahe Em
 
Object Oriented Design SOLID Principles
Object Oriented Design SOLID PrinciplesObject Oriented Design SOLID Principles
Object Oriented Design SOLID Principles
rainynovember12
 
Thoughtful Software Design
Thoughtful Software DesignThoughtful Software Design
Thoughtful Software Design
Giovanni Scerra ☃
 
Dependency Injection and Autofac
Dependency Injection and AutofacDependency Injection and Autofac
Dependency Injection and Autofac
meghantaylor
 
The dependency inversion principle
The dependency inversion principleThe dependency inversion principle
The dependency inversion principle
navicorevn
 
Software Design Principles and Best Practices - Satyajit Dey
Software Design Principles and Best Practices - Satyajit DeySoftware Design Principles and Best Practices - Satyajit Dey
Software Design Principles and Best Practices - Satyajit Dey
Cefalo
 
Design principle vs design patterns
Design principle vs design patternsDesign principle vs design patterns
Design principle vs design patterns
Prabhakar Sharma
 
Writting Better Software
Writting Better SoftwareWritting Better Software
Writting Better Softwaresvilen.ivanov
 
SOLID Design Principles for Test Automaion
SOLID Design Principles for Test AutomaionSOLID Design Principles for Test Automaion
SOLID Design Principles for Test Automaion
Knoldus Inc.
 
Single Responsibility Principle
Single Responsibility PrincipleSingle Responsibility Principle
Single Responsibility Principle
BADR
 
OO Design Principles
OO Design PrinciplesOO Design Principles
OO Design Principles
Anju Kanjirathingal
 
1 puc programming using c++
1 puc programming using c++1 puc programming using c++
1 puc programming using c++
Prof. Dr. K. Adisesha
 
DesignPrinciples-and-DesignPatterns
DesignPrinciples-and-DesignPatternsDesignPrinciples-and-DesignPatterns
DesignPrinciples-and-DesignPatterns
Basavaraj Patil
 
Clean Code .Net Cheetsheets
Clean Code .Net CheetsheetsClean Code .Net Cheetsheets
Clean Code .Net Cheetsheets
NikitaGoncharuk1
 

Similar to Design poo my_jug_en_ppt (20)

Object Oriented Concepts and Principles
Object Oriented Concepts and PrinciplesObject Oriented Concepts and Principles
Object Oriented Concepts and Principles
 
Software design principles - jinal desai
Software design principles - jinal desaiSoftware design principles - jinal desai
Software design principles - jinal desai
 
GoF Design patterns I: Introduction + Structural Patterns
GoF Design patterns I:   Introduction + Structural PatternsGoF Design patterns I:   Introduction + Structural Patterns
GoF Design patterns I: Introduction + Structural Patterns
 
Intro To AOP
Intro To AOPIntro To AOP
Intro To AOP
 
Structured Software Design
Structured Software DesignStructured Software Design
Structured Software Design
 
Software engineering
Software engineeringSoftware engineering
Software engineering
 
Software engineering
Software engineeringSoftware engineering
Software engineering
 
Object Oriented Design SOLID Principles
Object Oriented Design SOLID PrinciplesObject Oriented Design SOLID Principles
Object Oriented Design SOLID Principles
 
Thoughtful Software Design
Thoughtful Software DesignThoughtful Software Design
Thoughtful Software Design
 
Dependency Injection and Autofac
Dependency Injection and AutofacDependency Injection and Autofac
Dependency Injection and Autofac
 
The dependency inversion principle
The dependency inversion principleThe dependency inversion principle
The dependency inversion principle
 
Software Design Principles and Best Practices - Satyajit Dey
Software Design Principles and Best Practices - Satyajit DeySoftware Design Principles and Best Practices - Satyajit Dey
Software Design Principles and Best Practices - Satyajit Dey
 
Design principle vs design patterns
Design principle vs design patternsDesign principle vs design patterns
Design principle vs design patterns
 
Writting Better Software
Writting Better SoftwareWritting Better Software
Writting Better Software
 
SOLID Design Principles for Test Automaion
SOLID Design Principles for Test AutomaionSOLID Design Principles for Test Automaion
SOLID Design Principles for Test Automaion
 
Single Responsibility Principle
Single Responsibility PrincipleSingle Responsibility Principle
Single Responsibility Principle
 
OO Design Principles
OO Design PrinciplesOO Design Principles
OO Design Principles
 
1 puc programming using c++
1 puc programming using c++1 puc programming using c++
1 puc programming using c++
 
DesignPrinciples-and-DesignPatterns
DesignPrinciples-and-DesignPatternsDesignPrinciples-and-DesignPatterns
DesignPrinciples-and-DesignPatterns
 
Clean Code .Net Cheetsheets
Clean Code .Net CheetsheetsClean Code .Net Cheetsheets
Clean Code .Net Cheetsheets
 

More from agnes_crepet

Iut agile lyon 20 nov. 2013 - bdd
Iut agile lyon   20 nov. 2013 - bddIut agile lyon   20 nov. 2013 - bdd
Iut agile lyon 20 nov. 2013 - bddagnes_crepet
 
Introduction à l'agilité ensmse
Introduction à l'agilité   ensmseIntroduction à l'agilité   ensmse
Introduction à l'agilité ensmseagnes_crepet
 
Introduction à l'agilité iut lyon 1 sept2013
Introduction à l'agilité   iut lyon 1 sept2013Introduction à l'agilité   iut lyon 1 sept2013
Introduction à l'agilité iut lyon 1 sept2013agnes_crepet
 
#10 convergence
#10 convergence#10 convergence
#10 convergence
agnes_crepet
 
#12 rétrospective et roti
#12 rétrospective et roti#12 rétrospective et roti
#12 rétrospective et roti
agnes_crepet
 
#2 gestion de projet
#2 gestion de projet#2 gestion de projet
#2 gestion de projet
agnes_crepet
 
#11 rex
#11 rex#11 rex
#11 rex
agnes_crepet
 
#1 définition
#1 définition#1 définition
#1 définition
agnes_crepet
 
#5 management
#5 management#5 management
#5 management
agnes_crepet
 
#4 pratiques techniques
#4 pratiques techniques#4 pratiques techniques
#4 pratiques techniques
agnes_crepet
 
#6 transition agile
#6 transition agile#6 transition agile
#6 transition agile
agnes_crepet
 
#9 processus continu de fabrication
#9 processus continu de fabrication#9 processus continu de fabrication
#9 processus continu de fabrication
agnes_crepet
 
#7 méthodes
#7 méthodes#7 méthodes
#7 méthodes
agnes_crepet
 
#8 jeux sérieux
#8 jeux sérieux#8 jeux sérieux
#8 jeux sérieux
agnes_crepet
 
Iut lyon 1 introduction à l'agilité - 20 juin 2012
Iut lyon 1   introduction à l'agilité - 20 juin 2012Iut lyon 1   introduction à l'agilité - 20 juin 2012
Iut lyon 1 introduction à l'agilité - 20 juin 2012
agnes_crepet
 
Introduction à l'agilité numélink - 24 mai 2012 - #0 debut
Introduction à l'agilité   numélink - 24 mai 2012 - #0 debutIntroduction à l'agilité   numélink - 24 mai 2012 - #0 debut
Introduction à l'agilité numélink - 24 mai 2012 - #0 debut
agnes_crepet
 
Introduction à l'agilité numélink - 24 mai 2012 - #11 rex
Introduction à l'agilité   numélink - 24 mai 2012 - #11 rexIntroduction à l'agilité   numélink - 24 mai 2012 - #11 rex
Introduction à l'agilité numélink - 24 mai 2012 - #11 rex
agnes_crepet
 
Introduction à l'agilité numélink - 24 mai 2012 - #10 convergen
Introduction à l'agilité   numélink - 24 mai 2012 - #10 convergenIntroduction à l'agilité   numélink - 24 mai 2012 - #10 convergen
Introduction à l'agilité numélink - 24 mai 2012 - #10 convergen
agnes_crepet
 

More from agnes_crepet (20)

Iut agile lyon 20 nov. 2013 - bdd
Iut agile lyon   20 nov. 2013 - bddIut agile lyon   20 nov. 2013 - bdd
Iut agile lyon 20 nov. 2013 - bdd
 
Introduction à l'agilité ensmse
Introduction à l'agilité   ensmseIntroduction à l'agilité   ensmse
Introduction à l'agilité ensmse
 
Introduction à l'agilité iut lyon 1 sept2013
Introduction à l'agilité   iut lyon 1 sept2013Introduction à l'agilité   iut lyon 1 sept2013
Introduction à l'agilité iut lyon 1 sept2013
 
#10 convergence
#10 convergence#10 convergence
#10 convergence
 
#12 rétrospective et roti
#12 rétrospective et roti#12 rétrospective et roti
#12 rétrospective et roti
 
#2 gestion de projet
#2 gestion de projet#2 gestion de projet
#2 gestion de projet
 
#11 rex
#11 rex#11 rex
#11 rex
 
#1 définition
#1 définition#1 définition
#1 définition
 
#5 management
#5 management#5 management
#5 management
 
#4 pratiques techniques
#4 pratiques techniques#4 pratiques techniques
#4 pratiques techniques
 
#6 transition agile
#6 transition agile#6 transition agile
#6 transition agile
 
#9 processus continu de fabrication
#9 processus continu de fabrication#9 processus continu de fabrication
#9 processus continu de fabrication
 
#7 méthodes
#7 méthodes#7 méthodes
#7 méthodes
 
#8 jeux sérieux
#8 jeux sérieux#8 jeux sérieux
#8 jeux sérieux
 
Iut lyon 1 introduction à l'agilité - 20 juin 2012
Iut lyon 1   introduction à l'agilité - 20 juin 2012Iut lyon 1   introduction à l'agilité - 20 juin 2012
Iut lyon 1 introduction à l'agilité - 20 juin 2012
 
#3 etapes projet
#3 etapes projet#3 etapes projet
#3 etapes projet
 
#13 annexes
#13 annexes#13 annexes
#13 annexes
 
Introduction à l'agilité numélink - 24 mai 2012 - #0 debut
Introduction à l'agilité   numélink - 24 mai 2012 - #0 debutIntroduction à l'agilité   numélink - 24 mai 2012 - #0 debut
Introduction à l'agilité numélink - 24 mai 2012 - #0 debut
 
Introduction à l'agilité numélink - 24 mai 2012 - #11 rex
Introduction à l'agilité   numélink - 24 mai 2012 - #11 rexIntroduction à l'agilité   numélink - 24 mai 2012 - #11 rex
Introduction à l'agilité numélink - 24 mai 2012 - #11 rex
 
Introduction à l'agilité numélink - 24 mai 2012 - #10 convergen
Introduction à l'agilité   numélink - 24 mai 2012 - #10 convergenIntroduction à l'agilité   numélink - 24 mai 2012 - #10 convergen
Introduction à l'agilité numélink - 24 mai 2012 - #10 convergen
 

Recently uploaded

Leading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdfLeading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdf
OnBoard
 
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
Prayukth K V
 
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdfFIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance
 
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdfFIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance
 
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance
 
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Tobias Schneck
 
The Future of Platform Engineering
The Future of Platform EngineeringThe Future of Platform Engineering
The Future of Platform Engineering
Jemma Hussein Allen
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
KatiaHIMEUR1
 
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMsTo Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
Paul Groth
 
Essentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with ParametersEssentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with Parameters
Safe Software
 
Key Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfKey Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdf
Cheryl Hung
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
Alan Dix
 
Elevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object CalisthenicsElevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object Calisthenics
Dorra BARTAGUIZ
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance
 
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Product School
 
Accelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish CachingAccelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish Caching
Thijs Feryn
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
91mobiles
 
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Ramesh Iyer
 
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
UiPathCommunity
 
UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4
DianaGray10
 

Recently uploaded (20)

Leading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdfLeading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdf
 
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
 
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdfFIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
 
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdfFIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
 
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
 
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
 
The Future of Platform Engineering
The Future of Platform EngineeringThe Future of Platform Engineering
The Future of Platform Engineering
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
 
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMsTo Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
 
Essentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with ParametersEssentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with Parameters
 
Key Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfKey Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdf
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
 
Elevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object CalisthenicsElevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object Calisthenics
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
 
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
 
Accelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish CachingAccelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish Caching
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
 
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
 
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
 
UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4
 

Design poo my_jug_en_ppt

  • 1. Agnès CREPET @agnes_crepet Cyril LACÔTE @clacote 1st November – Gunadarma University Once upon a -Design- Time Object Oriented Design principles
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7. Top–down approach File opening File processing File closing Invoice processing Asset processing Amount processing AccountRead AmountCompute AccountUpdate Amount processing... While there are records
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39. So? How to ensure low coupling and high cohesion?
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
  • 51.
  • 52.
  • 53.
  • 54.
  • 55.
  • 56. In vogue Design Patterns Convention over Configuration
  • 57.
  • 58. Architectural Patterns 2 big families
  • 59. Application Architecture : Example Java web Application Application layers (presentation, service, business… HTML/ JavaScript HTTP … and persistence) JDBC Browser Application Server (ex : JBoss) DataBase Server (Ex: Oracle) Application Outside (Company Information system) ? RDBMS
  • 60.
  • 61.
  • 62.
  • 64.
  • 66. Source Code on GitHub https://github.com/acrepet/JMarioGame
  • 67.
  • 68.
  • 69.
  • 70.

Editor's Notes

  1. Commentaires
  2. Dijkstra : « plus court chemin » dans un graphe, algorithme du banquier, sémaphore.
  3. Polymorphisme d'héritage = Polymorphisme d'inclusion  redéfinition/spécialisation de méthodes durant l'héritage (overriding) Polymorphisme paramétrable  Les types génériques, introduits avec Java 5, donnent la possibilité de ne pas devoir contrôler le type d'une valeur lors de l'exécution, ils permettent de définir des comportements communs sur des objets sans devoir les typer Polymorphisme ad hoc = surcharge de méthodes (overloading)  capacité de distinguer des opérations par la signature (avec types et arguments différents) plutôt que par le seul nom
  4. une configuration par défaut (convention par règle de nommage) mais permettront aussi la substitution des valeurs par défaut via la configuration (à partir des fichiers ou une autre source de données).
  5. Expliquer l’origine historique du concept : issu de l’architecture de bâtiments.