Object-Oriented Design & Patterns
||Author: Cay Horstmann|
List Price: $57.95
Our Price: Click to see the latest and low price
Publisher: Wiley Text Books (03 April, 2003)
Sales Rank: 572,252
Average Customer Rating: 4 out of 5
Customer ReviewsRating: 5 out of 5
An ideal intro to OOD by an insightful author.
The previous reviewer sounds like he is looking for an all in one reference. Indeed, if you are a professional programmer and need a reference book, this one is not for you. However, if you're a student, new to OO programming/design or just want to add to your programming knowledge, this is a perfect book. It's designed for the classroom first (see the preface and exercises!), but is also useful for anyone who learned to program in C++ or Java and wants more sophisticated OO coverage. It is certainly not intended to teach the entire language. Rather, it assumes you already know how to program and want to learn more about Object-Oriented Design, including UML and design patterns. This is an important topic and it's never been introduced in a clearer, more intersting way than it is in this book.
Rating: 5 out of 5
Beautiful intergration of OOD material with Design Pattern
This is my textbook from the OOD course I am currently taking with Dr. Horstmann. The course along with the text has completely transform the way I think about programming in general. The book teaches OOD Design process in the first few chapters and goes into more in-depth focusing on Design Patterns and using the JAVA API to illustrate them. I also have the classic "Gang of 4" Design Pattern text, which I had tried to read with no avail before. For a novice programmer, without enouogh programming experience, one does not appreciate the utilities of the Design Patterns. In Horstmann's text, he poses interesting programming tasks, and solves them by using design patterns. This provides a context that a novice programmer can appreciate and learn from. He also references other texts, and tools to help you get more information. The book is not meant to be an in-depth study of any particular topics, but rather, it interwovens many important concepts of medium level difficulty and present a rich and entertaining view on the subject. This is excellent text for a second or third course on programming.
Rating: 2 out of 5
Too much and not enough
I came away from this book wondering just who was meant to read it. It starts with "A Crash Course in Java." (Somehow, I never learned to like any "crash" in the context of program design.) This is much too brief to teach the language, or even summarize it well. Any of many other books would be better for teaching Java to C++ programmers.
Next, the book goes through two chapters of object oriented design. These chapters are over in about 100 pages - again, not nearly enough time to address OO design in with any real insight. The OO paradigm is truly different from previous generations of software design, and can not be summed up in a few pages of rote rules.
Worse, the author identifies "javadoc" as a design documentation tool! It is not. Javadoc does a very good job of documenting implementation, but it documents design very badly. If you're not a programmer, trust me - implementation and design are as different as carpentry and architecture. Neither is better than the other, and both are needed to build a house. Implementation is not design, though, and the two require very different documentation.
The rest of of the book continues in an odd pastiche including:
-- ideas the programmer already needed to understand the earlier material,
-- afterthoughts on the Java language, scattered among other topics,
-- a weak discussion of design patterns, and
-- a severely flawed discussion of multithreading.
Only this last deserves attention. Multithreading is a subtle topic. It's easy to write multithreaded code, but very hard to write it correctly. The author actually does a good job of discussing interruption in threads. However, the book's description of synchronization and deadlock is so brief that it leaves me worried - student programmers might read that material and come away thinking they understood the topics. Insufficient knowledge may be worse than none at all, in this case. Most distressing, the author makes no apparent mention of "volatile" data in Java. Multithreaded applications don't need to use volatile data. The programmer MUST understand when volatility is a problem, though, and avoid it or address it directly. It is unacceptable to ignore the risks addressed by "volatile" declarations.
I can not recommend this book. It claims to address object oriented design, Java, and design patterns. I feel that it does an inadequate job on all counts.
· Fundamentals of Database Systems, Fourth Edition
· Artificial Intelligence: A Guide to Intelligent Systems
· Computer Organization and Design Second Edition : The Hardware/Software Interface
· Introduction to the Team Software Process(sm)
· Software Design: From Programming to Architecture