0
Object Thinking
 
<ul><li>The Philosophy of Development </li></ul><ul><li>formalism -vs- hermeneutics </li></ul><ul><li>From Philosophy to C...
<ul><li>Formalism/Determinism </li></ul><ul><li>(software engineering) </li></ul><ul><li>uses traditional thinking </li></...
The Object Thinking Manifesto <ul><li>Advocacy of  behavioralism </li></ul><ul><li>Antagonistic towards  formalism </li></...
The Object Thinking Manifesto <ul><li>Better people write better code </li></ul><ul><li>- not better tools </li></ul>
<ul><li>“ Let there be no doubt that object-oriented design is fundamentally different than traditional structured design ...
<ul><li>“ Let there be no doubt that object-oriented design is  fundamentally different   than traditional structured desi...
Observing the Object Difference <ul><li>Traditional thinking </li></ul><ul><li>Object thinking </li></ul>Data Structure op...
<ul><li>Anthropomorphization </li></ul><ul><li>is the attribution of human characteristics to inanimate objects, animals, ...
<ul><li>“…  if the diagram is an accurate depiction of an object, what is the difference between an object and a COBOL pro...
<ul><li>“ There is none.  A COBOL program encapsulates data and operations and allows communication among programs. Object...
Object Depictions <ul><li>Entity </li></ul>UML Customer ID# dob gender fname … getID# setID# getDOB# setDOB# … Customer id...
Object Depictions Object (Class-Responsibility-Collaboration) Customer ID self describe self indicate desires make decisio...
Encapsulation via Properties <ul><li>public class  Customer </li></ul><ul><li>{ </li></ul><ul><li>public string  Name </li...
Self-Describing Objects <ul><li>public class  Customer </li></ul><ul><li>:  Dictionary < Uri ,  Object > </li></ul><ul><li...
Self-Evaluating Rules <ul><li>Evaluate self-describing objects at runtime </li></ul><ul><li>Promote type re-use via  separ...
Demo Self-Describing Objects & Self-Evaluating Rules
<ul><li>So all my objects should be self-describing? </li></ul>
<ul><li>Having a hammer </li></ul><ul><li>does not make everything a nail </li></ul>
Non-Self-Describing Objects <ul><li>Primitives </li></ul><ul><li>bool, int, float, enum, etc. </li></ul><ul><li>Some Stand...
Issues <ul><li>Currently no standard supporting framework </li></ul><ul><li>I am considering a CodePlex or SourceForge pro...
<ul><li>Links </li></ul><ul><li>http://del.icio.us/alan.dean/object-thinking </li></ul><ul><li>http://thoughtpad.net/alan-...
Upcoming SlideShare
Loading in...5
×

Object Thinking

2,116

Published on

This is a presentation I gave a number of times to user groups in the UK during 2007 and will be giving again during 2008 (including at DDD Ireland).

Published in: Technology
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
2,116
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
48
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

Transcript of "Object Thinking"

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

    Clipping is a handy way to collect important slides you want to go back to later.

×