This post originated from an RSS feed registered with .NET Buzz
by Darrell Norton.
Original Post: Review of Object Thinking by David West
Feed Title: Darrell Norton's Blog
Feed URL: /error.htm?aspxerrorpath=/blogs/darrell.norton/Rss.aspx
Feed Description: Agile Software Development: Scrum, XP, et al with .NET
Object Thinking, by David West, is not your typical object-oriented programming book. The majority of the book explores the philosophical undertones of agile development and relates it back to object-oriented programming (OOP). West’s premise is that the vast majority of those purporting to do OOP are really writing miniature COBOL programs inside of classes. Agile methodologies and their thought leaders, like Kent Beck and Ward Cunningham, are some of the few “true” object-oriented programmers.
According to West, OOP really can result in order-of-magnitude improvements over traditional structured design methods. It takes a very special mindset, which he calls “object thinking”, to utilize OOP effectively. He shows some methods to help develop in a true object-oriented manner, some of which are interesting. Object cubes, for example, are “single, consistent, metaphor-preserving model objects (page 173).” Side 1 is your typical CRC card. Side 2 is a text description of the nature of the objects represented by the class. Side 3 is a list of contracts (public, protected, private). Side 4 identifies the data that the class requires to fulfill its duties. Side 5 is a list of all the message protocols (method signatures). And side 6 describes any events the object broadcasts.
Another topic the book covers is the use of self-evaluating rules as an object. What it basically works out to be is a class that can be instantiated for every business rule with what appear to be basic conditions, very similar to what you find in Excel for the “Conditional Formatting” of a cell. I haven’t needed to encapsulate business logic as a specialized type of self-evaluation rule class, but I can see that there could be a need.
Overall I feel that the book makes an important statement about the state of object-oriented programming today. It does relate to agile methods, and I’m sure that the thought leaders mentioned in the book develop using true “object thinking” as the author espouses it. However, I was left feeling like it needed more guidance on how to be a better object thinker. If you are interested in philosophy as it applies to software development, then this book may be a good read. If you are ruthlessly pragmatic, I'd suggest borrowing it and reading just chapters 3, 6, 7, 8, and 9.