Object Thinking

It’s not every day that reading a book teaches you a cool new word for yourself. Object Thinking by David West, managed to show me that I am a hermeneutic thinker.

David West is a professor at New Mexico Highlands University School of Business. He founded and directed the Object Lab at the University of St Thomas, and co-founded the Object Technology User Group.

This book covers a rich history of how object-oriented development came about, and is full of profiles of important players. It also explores the philosophical ground that “object thought” is based on, at least in the opinion of the author.

The crux of the book is the difference between what a lot of people call object-oriented development and what West terms “object thinking”. Object thinking, in short, is coming to really view a problem domain in terms of objects, and not just coming up with a procedural model wrapped in classes.

This book is extremely feature rich, and seems to be aimed at catalysing the thought process of a moderately experienced OO developer who is ready to take the next step forward. I know I got a lot out of the book, and I intend to read it again in a few months, once some of the concepts have settled in.

One big value item from the book is a set of heuristics for evolving an object oriented design. I’ll list the bullet-point version here, but you need to read the book for the explanation:

  • Let objects assume responsibility for tasks that are wholly or completely delegated to other objects in cases in which the responsibility reflects natural communication patterns in the domain[1]
  • Delegate responsibilities to get a better distribution and increase reusability.
  • Use anthropomorphising and foreshadowing to determine whether an object should assume a given responsibility.
  • Responsibilities should be distributed among the community of objects in a balanced manner.
  • Always state responsibilities in an active voice describing a service to be performed.
  • Avoid responsibilities that are characteristic specific, that focus on providing a potential user with the value of a single characteristic of the object.
  • Create proxies for objects outside your domain that are sources of information required by objects within the domain.

Probably the best part of this book, however, are the case studies and examples he uses to elaborate and explore the ideas he is conveying.

This is a highly recommended read for anyone interested in object oriented development.


[1] This is the essence of the Facade design pattern.

Advertisements

Author: Robert Watkins

My name is Robert Watkins. I am a software developer and have been for over 18 years now. I currently work for people, but my opinions here are in no way endorsed by them (which is cool; their opinions aren’t endorsed by me either). My main professional interests are in Java development, using Agile methods, with a historical focus on building web based applications. I’m also a Mac-fan and love my iPhone, which I’m currently learning how to code for. I live and work in Brisbane, Australia, but I grew up in the Northern Territory, and still find Brisbane too cold (after 16 years here). I’m married, with two children and one cat. My politics are socialist in tendency, my religious affiliation is atheist (aka “none of the above”), my attitude is condescending and my moral standing is lying down.

1 thought on “Object Thinking”

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s