View Review Details


Book:   Head First Object-Oriented Analysis and Design
Subject:   Great OOP and Design book for beginners
Date:   2007-01-02 11:50:06
From:   Frank Stepanski
Rating:  StarStarStarStarStar

Object Oriented Programming has been around for years and years in some form or another, but it seems until recently (past 5 years or so) that it really has become a requirement for any type of developer. Whether you a windows or client-server based developer or a client-side scripter (JavaScript) or a web-based developer (JSP, ASP, ASP.NET, etc.). You can't escape not knowing the basics of creating and using objects no matter what technology or computer programming language you use. Knowing how to use and create objects are only the first step in being a successful OOP developer, and this book goes through each step assuming no knowledge whatsoever. And since it's not specific on any programming language or technology anybody can pick up this book and starting using OOP in their specific area.


The Head First series if you do not know is a unique publishing series in that it makes it fun to learn a new and maybe somewhat confusing topic (like OOP). It takes the material and uses exercises, illustrations, and simple games to help the reader understand the information the author is trying to get across. It is not for everyone, but it's a great way in my opinion to teach the reader the material that helps them from not getting too bored. If you quickly glance at the book and see the many images that do not seem to relate to the material at all you will miss the really great material that is hidden within it. You really need to read the first 10 pages to know if this is the book for you or not. But if you do, then I am really sure you will want to continue to read the rest of the book.


The topic of OOP and Design Analysis is broken down into 10 easy to follow chapters. The first chapter goes through the basics of what a class is and how and why you would want to create classes and objects in the first place. It also shows code snippets of what classes would look like and the interface it would look like and how it would interact with the rest of your software requirements. A lot of good information is in this chapter to get you started thinking of designing in OOP.


The next three chapters show lots of examples of how you would get requirements for your applications in trying to divide your applications into small components. It requires a different way of thinking instead of just writing code logic and this chapter helps you re-think things before you start writing any programming logic.


Chapter 5 part 1 and part 2 takes all those requirements and applies the OOP techniques: encapsulation, abstract classes, polymorphism, and UML design and put it to an example application in showing the reader how all this `theory' can be put into practice. Even though there are so many types of application and functionality that are possible, some basics remain the same for most like displaying and updating data, giving choices to the user, manipulating data, going through conditional statements, etc.


The next couple chapters discuss the somewhat new topic of Design Patterns. Design Patterns are reusable solutions to common problems. It sounds like it is very simple and it some ways it is but it can get complex very fast. A common design pattern is MVC which is (Model View Controller) used a lot in software engineering. In complex computer applications that present lots of data to the user, one often wishes to separate data (Model) and the user interface (View) concerns, so that changes to the user interface do not impact the data handling, and that the data can be re-organized without changing the user interface. The MVC design pattern solves this problem by decoupling data access and business logic from data presentation and user interaction, by introducing an intermediate component: The Controller. Basically, it takes the 3-tiered model (user layer, business layer, data layer) and provides a easier data flow to help each layer interact with each other. It sounds complicated but the book explains it wonderfully.


The rest of the book explains how OO is used within the software lifecycle and how it can help speed up each step when done correctly. There are lots of great examples to help the newbie (like me) in understanding some important topics in software development.


A great book that I highly recommend.


See larger cover


"There are solid guidelines within the book which portray OOA as flexible in the real world - in a way which is much more readable than many OOA&D texts out there. For those unfamiliar with Head First Labs, this would be a novelty - for those familiar with Head First Labs, this is expected."
--Taran Rampersad, KnowProse.com