際際滷

際際滷Share a Scribd company logo
Object Thinking
油
The Philosophy of Development formalism -vs- hermeneutics From Philosophy to Culture mentoring, metaphor & vocabulary From Culture to Practice object discovery & thinking
Formalism/Determinism (software engineering) uses traditional thinking -vs- Hermeneutics/Postmodernism (extreme programming) uses object thinking
The Object Thinking Manifesto Advocacy of  behavioralism Antagonistic towards  formalism Emphasis on  analysis  and  conceptualization Philosophy of  extreme programming Prefers the  autonomous  to the  autocratic
The Object Thinking Manifesto Better people write better code - not better tools
 Let there be no doubt that object-oriented design is fundamentally different than traditional structured design approaches: it requires different ways of thinking about decomposition, and it produces software architectures that are largely outside the realm of the structured design culture. Grady Booch, 1991
 Let there be no doubt that object-oriented design is  fundamentally different   than traditional structured design approaches: it requires  different ways of thinking   about decomposition, and it produces software architectures that are largely outside the realm of the  structured design culture . Grady Booch, 1991
Observing the Object Difference Traditional thinking Object thinking Data Structure operationX operationY operationZ
Anthropomorphization is the attribution of human characteristics to inanimate objects, animals, forces of nature, the unseen author of things, and others.
  if the diagram is an accurate depiction of an object, what is the difference between an object and a COBOL program?
 There is none.  A COBOL program encapsulates data and operations and allows communication among programs. Object development  using this model  will have a tough time being anything more than the creation of lots of tiny COBOL programs.
Object Depictions Entity UML Customer ID# dob gender fname  getID# setID# getDOB# setDOB#  Customer id# dob gender fname lname mi honorific generational
Object Depictions Object (Class-Responsibility-Collaboration) Customer ID self describe self indicate desires make decisions confirm information
Encapsulation via Properties public class  Customer { public string  Name { get   {   return  _name ;   } set { // validate here _name =  value ; } } private string  _name ; } Known as  information hiding Traditionally taught as a key precept of OO But many XP advocates say they should not be tested  why? Why do objects keep trying to change type? Is there a better way?
Self-Describing Objects public class  Customer :  Dictionary < Uri ,  Object > { } Provides a  property bucket Looks alien to traditional thinking Violates traditional encapsulation principles How is validation carried out?
Self-Evaluating Rules Evaluate self-describing objects at runtime Promote type re-use via  separation of concerns Embody data validation rules, business rules, or any other constraint
Demo Self-Describing Objects & Self-Evaluating Rules
So all my objects should be self-describing?
Having a hammer does not make everything a nail
Non-Self-Describing Objects Primitives bool, int, float, enum, etc. Some Standards html elements, xpath predicates, industry, etc. Self-Describing Objects tend to be actors
Issues Currently no standard supporting framework I am considering a CodePlex or SourceForge project Limited knowledge, few publications, no examples Just try googling for the key terms Steep learning curve Hard to unlearn traditional thinking Few practitioners or evangelists
Links http://del.icio.us/alan.dean/object-thinking http://thoughtpad.net/alan-dean Email [email_address] 息 MMVII

More Related Content

Object Thinking

  • 2.
  • 3. The Philosophy of Development formalism -vs- hermeneutics From Philosophy to Culture mentoring, metaphor & vocabulary From Culture to Practice object discovery & thinking
  • 4. Formalism/Determinism (software engineering) uses traditional thinking -vs- Hermeneutics/Postmodernism (extreme programming) uses object thinking
  • 5. The Object Thinking Manifesto Advocacy of behavioralism Antagonistic towards formalism Emphasis on analysis and conceptualization Philosophy of extreme programming Prefers the autonomous to the autocratic
  • 6. The Object Thinking Manifesto Better people write better code - not better tools
  • 7. Let there be no doubt that object-oriented design is fundamentally different than traditional structured design approaches: it requires different ways of thinking about decomposition, and it produces software architectures that are largely outside the realm of the structured design culture. Grady Booch, 1991
  • 8. Let there be no doubt that object-oriented design is fundamentally different than traditional structured design approaches: it requires different ways of thinking about decomposition, and it produces software architectures that are largely outside the realm of the structured design culture . Grady Booch, 1991
  • 9. Observing the Object Difference Traditional thinking Object thinking Data Structure operationX operationY operationZ
  • 10. Anthropomorphization is the attribution of human characteristics to inanimate objects, animals, forces of nature, the unseen author of things, and others.
  • 11. if the diagram is an accurate depiction of an object, what is the difference between an object and a COBOL program?
  • 12. There is none. A COBOL program encapsulates data and operations and allows communication among programs. Object development using this model will have a tough time being anything more than the creation of lots of tiny COBOL programs.
  • 13. Object Depictions Entity UML Customer ID# dob gender fname getID# setID# getDOB# setDOB# Customer id# dob gender fname lname mi honorific generational
  • 14. Object Depictions Object (Class-Responsibility-Collaboration) Customer ID self describe self indicate desires make decisions confirm information
  • 15. Encapsulation via Properties public class Customer { public string Name { get { return _name ; } set { // validate here _name = value ; } } private string _name ; } Known as information hiding Traditionally taught as a key precept of OO But many XP advocates say they should not be tested why? Why do objects keep trying to change type? Is there a better way?
  • 16. Self-Describing Objects public class Customer : Dictionary < Uri , Object > { } Provides a property bucket Looks alien to traditional thinking Violates traditional encapsulation principles How is validation carried out?
  • 17. Self-Evaluating Rules Evaluate self-describing objects at runtime Promote type re-use via separation of concerns Embody data validation rules, business rules, or any other constraint
  • 18. Demo Self-Describing Objects & Self-Evaluating Rules
  • 19. So all my objects should be self-describing?
  • 20. Having a hammer does not make everything a nail
  • 21. Non-Self-Describing Objects Primitives bool, int, float, enum, etc. Some Standards html elements, xpath predicates, industry, etc. Self-Describing Objects tend to be actors
  • 22. Issues Currently no standard supporting framework I am considering a CodePlex or SourceForge project Limited knowledge, few publications, no examples Just try googling for the key terms Steep learning curve Hard to unlearn traditional thinking Few practitioners or evangelists