Book Review: Object Orientated Technology: A manager's guide
September 29, 2008
This book was recommend by Hal Helms and if it's good enough for Hal then it's good enough for me :) Although this book was first published in 1990 it is still jam packed with useful information. It talks about C++ and Smalltalk but the explanations are relevant to any OO capable language, I got the first edition (for £2 for AbeBooks!) so they may have updated this in the second edition.
What it is not is a tutorial for writing OO code. What it is, is an overview of the terms and concepts used in OO.
Beating the software Crisis
To be honest I'd probably skip this chapter if you are already building applications as you will already know the problems it states and is a slow start to a really good book.
Three Keys to Object-Orientated Technology
OK, sit up and take note - this is the good stuff. I am familiar with the concepts that this chapter introduces but I found it really good for reinforcing the concepts. It introduces Objects, Messages, and Classes. In short objects are instances of classes which has data. Classes define the methods and variables of the object, but not the actual data. Messages are how code can communicate with objects.
Objects: Natural Building Blocks
I quite like the analogogy that this chapter draws between biology and Object orientated programming. It demonstrates how nature creates really complicated objects for a bunch of cells (read classes) which have specific functionality. You can just imagine the mess that you'd end up with nature had tried this in a procedural style!
Messages: Activating Objects
This is pretty straightforward stuff. A message has three parts; the reciever (object), the method (function available in your object) and the parameters (arguments). The object can return a response back to the sender (calling code).
This chapter also introduces the key concept of polymorphism. Polymorphism is when you use overloading to allow the same method name in different classes. This is useful as it means that you can add a new class which has the same method name which could do something completely different, but it will work with your existing code. The example it gives is a Square class which has a draw method, you could easily have a new class called Triangle which allows has a draw method. Your code only needs to know that to draw any shape (which has a class) it just calls the draw() method. Much better than having to use drawSquare() or drawTriangle(). This also demonstrates encapsulation, because it is hiding the informatation about how the shape is constructed inside the draw() method.
Classes: Bringing Order to Objects
This chapter goes into classes in more depth. It also touches on superclasses (parent class), subclasses (child class), class hierarchy (a family tree for classes!), method overloading, abstract classes (referred to as a virtual class) and multiple inheritance. I found it quite useful for making me really think about how I construct my objects and their relationships.
A New Generation of Databases
This chapter is either ahead of it's time or talks about a dying technology; namely Object Database Management Systems (ODBMS). It is quite an interesting read, but is probably not that relevant to most of us since the advent of ORMs to get the problems of storing the data in a Relational Database Management System (RDBMS) - think MySQL, Oracle, MS SQL Server. However it makes you aware of why you need an ORM or a ODBMS.
Applying the Power of Objects
I really liked this chapter as it compares moving to OOP to the industrial reveloution! Basically instead of hand building everything, you should think more in terms or creating generic classes which, when put together, create something else. By being generic, you should be able to use your classes in multiple applications. For example, a person is a person in every system you build.
Evaluating the Risks and Benefits
The penultimate chapter focuses on the pros and cons. For balance it lists seven of each. To my mind the pros outway the cons and a lot of the negative aspects are not really an issue. The biggest downside, is simply the time it takes to learn it.
The future of Software
Similar to the "A New Generation of Databases" chapter, it is either ahead of it's time or redundant.
Finally there is a good glossary and summary of key concepts.
As I mentioned at the srtart of this review. I got my copy second hand for a couple of pounds from abebooks. For that kind of money it is a must read!
Published by: Addison Wesley
Find it on Amazon (UK)
Find it on Amazon (US)
AbeBooks: www.abebooks.com or www.abebooks.co.uk
No comments
Leave a comment
If you found this post useful, interesting or just plain wrong, let me know - I like feedback :)
