This is a book, first and foremost, about software objects: what they are, why they are so "magical" and yet so straightforward, and how one goes about structuring a software application to use objects appropriately.
This is also a book about C#: not a hard-core, "everything there is to know about C#" book, but rather a gentle yet comprehensive introduction to the language, with special emphasis on how to transition from an object model to a fully functional C# application—something that few, if any, other books provide.
Our goals in writing this book (and, hopefully, yours for buying it) are to
Make you comfortable with fundamental object-oriented (OO) terminology and concepts.
Give you hands-on, practical experience with object modeling: that is, with developing a "blueprint" that can be used as the basis for subsequently building an object-oriented software system.
Illustrate the basics of how such an object model is translated into a working software application—a C# application, to be specific, although the techniques that you'll learn for object modeling apply equally well to any OO language.
If you're already experienced with the C# language (but not with object fundamentals), it's critical to your successful use of the language that you learn about its object-oriented roots. On the other hand, if you're a newcomer to C#, then this book will get you properly "jump-started." Either way, this book is a "must-read" for anyone who wishes to become proficient with an OO programming language like C#.
Just as importantly, this book is not meant to
Turn you into an overnight "pro" in object modeling: Like all advanced skills, becoming totally comfortable with object modeling takes two things: a good theoretical foundation and a lot of practice! We give you the foundation in this book, along with suggestions for projects and exercises that will enable you to apply and practice your newfound knowledge. But the only way you'll really get to be proficient with object modeling is by participating in OO modeling and development projects over time. This book will give you the skills, and hopefully the confidence, to begin to apply object techniques in a professional setting, which is where your real learning will take place, particularly if you have an OO-experienced mentor to guide you through your first "industrial-strength" project.
Make you an expert in any particular OO methodology: There are dozens of different formal methods for OO software development, new variations continue to emerge, and no one methodology is necessarily better than another. For example, UML (which stands for the "Unified Modeling Language") notation is the newest, OMT (which stands for "Object Modeling Technique") notation is one of the oldest, yet the two are remarkably similar because the UML is based to a great extent on OMT. By making sure that you understand the generic process of object modeling along with the specifics of the UML, you'll be armed with the knowledge you need to read about, evaluate, and select a specific methodology (or to craft your own—who knows, maybe some-day you'll even write a book yourself on the methodology that you invent!).
Teach you everything you'll ever need to know about C#: C# is a very rich language, consisting of dozens of core classes, hundreds of classes available from the Framework Class Library, and literally thousands of operations that can be performed with and by these classes. If C# provides a dozen alternative ways to do something in particular, we'll explain the one or two ways that we feel best suit the problem at hand, to give you an appreciation for how things are done. Nonetheless, you'll definitely see enough of the C# language in this book to be able to build a complete application.
Armed with the foundation you gain from this book, you'll be poised and ready to appreciate a more thorough treatment of C# such as that offered by one of the many other C# references that are presently on the market, or an in-depth UML reference.