Anyone who wants to get the most out of an object-oriented programming language like C#! It has been written for
Anyone who has yet to tackle C#, but wants to get off on the right foot with the language
Anyone who has ever purchased a book on C#, and who has read it faithfully, who understands the "bits and bytes" of the language, but doesn't quite know how to structure an application to best take advantage of the OO features of the language
Anyone who has purchased a C# integrated development environment (IDE) software tool, but really only knows how to drag and drop graphical user interface (GUI) components and to add a little bit of logic behind buttons, menus, etc., without any real sense of how to properly structure the core of the application around objects
Anyone who has built a C# application, but was disappointed with how difficult it was to maintain or modify it when new requirements were presented later in the application's life cycle
Anyone who has previously learned something about object modeling, but is "fuzzy" on how to transition from an object model to real, live code (C# or otherwise)
The bottom line is that anyone who really wants to master an OO language like C# must become an expert in objects first!
In order to gain the most value from this book, you should have some programming experience under your belt; virtually any language will do. You should understand simple programming concepts such as
Simple data types (integer, floating point, etc.)
Variables and their scope (including the notion of global data)
Control flow (if-then-else statements, for/do/while loops, etc.)
What arrays are, and how to use them
The notion of a function/subroutine/subprogram: how to pass data in and get results back out
but, you needn't have had any prior exposure to C# (we'll give you a taste of the language at the beginning of Part One, and will go into the language in depth in Part Three). And, you needn't have ever been exposed to objects, either—in the software sense, at least! As you'll learn in Chapter 2, human beings naturally view the entire world from the perspective of objects.
Even if you've already developed a full-fledged C# application, it's certainly not too late to read this book if you still feel "fuzzy" when it comes to the object aspects of structuring an application. Universities often offer separate courses in object modeling and in C# programming. Although it's ideal for students to take both courses in sequence, students often arrive at an object modeling course having already taken a stab at learning C#. Even for such folks, who will see some familiar landmarks (in the form of C# code examples) in this book, many new insights will be gained as they learn the rationale for why we do many of the things that we do when programming in C# (or any other OO programming language for that matter).
It ultimately makes someone a better C# programmer to know the "whys" of object orientation rather than merely the mechanics of the language. If you have had prior experience with C#, you may find that you can quickly skim those chapters that provide an introduction to the language—namely, Chapter 1 in Part One and Chapter 13 in Part Three.
Because this book has its roots in courses that the authors teach, it's ideally suited for use as a textbook for a semester-long graduate or upper-division undergraduate course in either object modeling or C# programming. We've included some suggestions for how to use the book in that fashion in Appendix A.