The book has one chapter on Design Patters that covers some basic concepts. There are a few patterns that are covered, but the chapter is not in any way a primer on design patterns.
The intent of the book is to simply introduce how object concepts apply to various development topics. The first half of the book covers the fundamental O-O concepts such as encapsulation, polymorphism, interfaces, composition and inheritance. The second half shows how these fundamental O-O concepts are used with various technologies such as XML, web services, etc.
I think one of the best answers I've heard to the question of "What patterns do I start with?" is "Don't start with patterns; rather, understand good design principles and use pattern-guided refactoring to build systems that are easy to understand, maintain, and extend." Any thoughts on this, Matt?
Does the book also covers OO principles in theory from the design perspective and how do OO concepts relate to the principles?
Another question is does the author still think or feel that UML is still important for OOAD?
BEA 8.1 Certified Administrator, IBM Certified Solution Developer For XML 1.1 and Related Technologies, SCJP, SCWCD, SCBCD, SCDJWS, SCJD, SCEA,
Oracle Certified Master Java EE 5 Enterprise Architect
Joined: May 01, 2013
Design patters are obviously important, but as with anything, you don't want to grab a powerful tool before you understand what the job at hand is. My approach to teaching the OO concepts is to concentrate on the basic, fundamental concepts and try to reinforce those using various tools like code in Java, C# and Objective-C, etc. Then I use very basic examples of specific technologies like XML, Design Patterns, etc.
Personally, I would focus on the basic concepts first: such as encapsulation, polymorphism, interfaces, composition and inheritance and get comfortable with those. You can then study some specific topics like design patterns to see how the concepts are applied.
As far as UML goes, in my writings and when I teach programming, I like to use UML class diagrams as a graphical way to assist in the learning process. I find that UML class diagrams are really good for demonstrating how to model systems and show relationships between classes.