object thinking. the philosophy of development formalism -vs- hermeneutics from philosophy to...

23
Object Thinking

Upload: barbara-irene-green

Post on 27-Dec-2015

224 views

Category:

Documents


6 download

TRANSCRIPT

Page 1: Object Thinking. The Philosophy of Development formalism -vs- hermeneutics From Philosophy to Culture mentoring, metaphor & vocabulary From Culture

Object Thinking

Page 2: Object Thinking. The Philosophy of Development formalism -vs- hermeneutics From Philosophy to Culture mentoring, metaphor & vocabulary From Culture
Page 3: Object Thinking. The Philosophy of Development formalism -vs- hermeneutics From Philosophy to Culture mentoring, metaphor & vocabulary From Culture

The Philosophy of Developmentformalism -vs- hermeneutics

From Philosophy to Culturementoring, metaphor &

vocabulary

From Culture to Practiceobject discovery & thinking

Page 4: Object Thinking. The Philosophy of Development formalism -vs- hermeneutics From Philosophy to Culture mentoring, metaphor & vocabulary From Culture

Formalism/Determinism(software engineering)

uses traditional thinking

-vs-

Hermeneutics/Postmodernism(extreme programming)

uses object thinking

Page 5: Object Thinking. The Philosophy of Development formalism -vs- hermeneutics From Philosophy to Culture mentoring, metaphor & vocabulary From Culture

The Object Thinking Manifesto

Advocacy of behavioralismAntagonistic towards formalism

Emphasis on analysis and conceptualization

Philosophy of extreme programming

Prefers the autonomous to the autocratic

Page 6: Object Thinking. The Philosophy of Development formalism -vs- hermeneutics From Philosophy to Culture mentoring, metaphor & vocabulary From Culture

The Object Thinking Manifesto

Better people write better code

- not better tools

Page 7: Object Thinking. The Philosophy of Development formalism -vs- hermeneutics From Philosophy to Culture mentoring, metaphor & vocabulary From Culture

“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

Page 8: Object Thinking. The Philosophy of Development formalism -vs- hermeneutics From Philosophy to Culture mentoring, metaphor & vocabulary From Culture

“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

Page 9: Object Thinking. The Philosophy of Development formalism -vs- hermeneutics From Philosophy to Culture mentoring, metaphor & vocabulary From Culture

Observing the Object Difference

Traditional thinking Object thinking

Data Structure

operationX

operationY

operationZ

Page 10: Object Thinking. The Philosophy of Development formalism -vs- hermeneutics From Philosophy to Culture mentoring, metaphor & vocabulary From Culture

Anthropomorphizationis the attribution of human

characteristics to inanimate objects,

animals, forces of nature, the unseen author of things, and others.

Page 11: Object Thinking. The Philosophy of Development formalism -vs- hermeneutics From Philosophy to Culture mentoring, metaphor & vocabulary From Culture

“… if the diagram is an accurate depiction of an object, what is

the difference between an object and a COBOL program?”

Page 12: Object Thinking. The Philosophy of Development formalism -vs- hermeneutics From Philosophy to Culture mentoring, metaphor & vocabulary From Culture

“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.”

Page 13: Object Thinking. The Philosophy of Development formalism -vs- hermeneutics From Philosophy to Culture mentoring, metaphor & vocabulary From Culture

Object Depictions

Entity UML

Customer

ID#dobgenderfname…

getID#setID#getDOB#setDOB#…

Customer

id#dobgenderfnamelnamemihonorificgenerational…

Page 14: Object Thinking. The Philosophy of Development formalism -vs- hermeneutics From Philosophy to Culture mentoring, metaphor & vocabulary From Culture

Object Depictions

Object (Class-Responsibility-Collaboration)

Customer

ID selfdescribe selfindicate desiresmake decisionsconfirm information

Page 15: Object Thinking. The Philosophy of Development formalism -vs- hermeneutics From Philosophy to Culture mentoring, metaphor & vocabulary From Culture

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?

Page 16: Object Thinking. The Philosophy of Development formalism -vs- hermeneutics From Philosophy to Culture mentoring, metaphor & vocabulary From Culture

Self-Describing Objectspublic class Customer : Dictionary<Uri,

Object>{ }

• Provides a property bucket

• Looks alien to traditional thinking

• Violates traditional encapsulation principles

• How is validation carried out?

Page 17: Object Thinking. The Philosophy of Development formalism -vs- hermeneutics From Philosophy to Culture mentoring, metaphor & vocabulary From Culture

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

Page 18: Object Thinking. The Philosophy of Development formalism -vs- hermeneutics From Philosophy to Culture mentoring, metaphor & vocabulary From Culture

Demo

Self-Describing Objects & Self-Evaluating Rules

Page 19: Object Thinking. The Philosophy of Development formalism -vs- hermeneutics From Philosophy to Culture mentoring, metaphor & vocabulary From Culture

So all my objects should be self-describing?

Page 20: Object Thinking. The Philosophy of Development formalism -vs- hermeneutics From Philosophy to Culture mentoring, metaphor & vocabulary From Culture

Having a hammerdoes not make everything a nail

Page 21: Object Thinking. The Philosophy of Development formalism -vs- hermeneutics From Philosophy to Culture mentoring, metaphor & vocabulary From Culture

Non-Self-Describing ObjectsPrimitives

bool, int, float, enum, etc.

Some Standardshtml elements, xpath predicates, industry,

etc.

Self-Describing Objects tend to be actors

Page 22: Object Thinking. The Philosophy of Development formalism -vs- hermeneutics From Philosophy to Culture mentoring, metaphor & vocabulary From Culture

Issues

Currently no standard supporting frameworkI am considering a CodePlex or SourceForge

project

Limited knowledge, few publications, no examples

Just try googling for the key terms…

Steep learning curveHard to ‘unlearn’ traditional thinking

Few practitioners or evangelists

Page 23: Object Thinking. The Philosophy of Development formalism -vs- hermeneutics From Philosophy to Culture mentoring, metaphor & vocabulary From Culture

Linkshttp://thoughtpad.net/alan-dean/

object-thinking

[email protected]

© MMVII