This book will give you a deep and thorough understanding of the implications of all the decisions you can make in designing a class, so you are equipped to develop classes that are robust, flexible and reusable. In short, this book will take you from a theoretical understanding of the basic principles of OO programming to the ability to write well-designed classes in actual applications.