Object technology is increasingly recognized as a valuable tool in application development, but what is not yet recognized is the importance of design in the construction of robust and adaptable object-oriented (OO) applications. With the recent introduction and widespread adoption of the Unified Modeling Language (UML), programmers are now equipped with a powerful tool for expressing software designs. Fundamentals of Object-Oriented Design in UML shows aspiring and experienced programmers alike how to apply design concepts, the UML, and the best practices in OO development to improve both their code and their success rates with object-based projects.
In the first two chapters, best-selling author Meilir Page-Jones introduces novices to key concepts and terminology, demystifying the jargon, and providing a context in which to view object orientation. Part II is a practical and well-illustrated guide to UML notation and to building the most useful UML diagrams. Part III grapples with advanced topics in the testing and improvement of design quality, including connascence, level-2 encapsulation, and the use of state-space and behavior to assess class hierarchies.
These design principles are explained and demonstrated without reference to any one design methodology so that they are easily accessible and applicable in a variety of contexts. Programmers and designers learn how to assess and enhance their work as the author walks them through the evaluation of designs taken from actual projects and the realistic example that ends the book. Readers will come away with a better understanding of object-oriented concepts and of how to design and develop the high-quality software their clients need.
Review By: Brian Hambling 09/11/2002
This book provides a well-written text balanced with numerous helpful diagrams. Examples are widely used and are always clear and simple, but with enough substance to illuminate the topic. The style is simple and straightforward, and always interesting. The book is accessible to intelligent and attentive readers, but it will not disappoint those with a more technical background.
Part 1 of the book provides a very simple and clear introduction to what it means to be object oriented, together with a brief but useful history of object-oriented techniques. As the title suggests, the book limits itself to fundamentals, but it handles the fundamentals well. Part 2 covers the Unified Modeling Language in reasonable detail and in a clear style. It begins with a chapter on basic expression of classes, attributes, and operations; then offers separate chapters for each of the main models: architecture and interface diagrams, class diagrams, object-interaction diagrams, and state diagrams. Parts 1 and 2 are aimed at those new to both UML and object orientation and they are very accessible to general readers.
In part 3 the author describes the principles of object-oriented design, which moves to a more advanced level. He uses UML to express the key ideas as he takes us beyond the basics and into the more interesting areas of object-oriented design. This section takes the reader through type conformance, inheritance, polymorphism, and a chapter on class cohesion. He closes with a chapter on “Designing a Software Component.”
Most important, this book is consistently about fundamentals. The author holds to that guiding principle and does not get drawn into unnecessary detail or esoteric issues. As a result, this book is a reliable guide to what is important and a good introduction to the key aspects of design with UML. The book is appropriate for anyone’s personal collection as well as a standard university text.