• Table of Contents
  • BackCover
  • Beginning C# Objects - From Concepts to Code
  • Preface
  • Introduction
    • Why Is Understanding Objects So Critical to Being a Successful OO Programmer?
    • Who Is This Book Written For?
    • What If You're Interested in Object Modeling, but Not Necessarily in C# Programming?
    • How This Book Is Organized
    • Which Version of C# Is This Book Based On?
    • A Final Thought Before We Get Started
    • Tell Us What You Think
  • Part One: The ABCs of Objects
    • Chapter 1: A Little Taste of C#
      • Getting " Hands On " with C#
      • Why C#?
      • C# Language Basics
      • Anatomy of a Simple C# Program
      • Predefined Types
      • Variables
      • Strings
      • Case Sensitivity
      • C# Expressions
      • Implicit Type Conversions and Explicit Casting
      • Loops and Other Flow of Control Structures
      • Jump Statements
      • Code Blocks and Variable Scope
      • Printing to the Screen
      • Elements of C# Style
      • Summary
      • Exercises
    • Chapter 2: Abstraction and Modeling
      • Simplification Through Abstraction
      • Generalization Through Abstraction
      • Reuse of Abstractions
      • Inherent Challenges
      • Summary
      • Exercises
    • Chapter 3: Objects and Classes
      • What Is an Object?
      • State/Attributes/Data
      • Behavior/Operations/Methods
      • Classes
      • User-Defined Types and Reference Variables
      • Instantiating Objects: A Closer Look
      • Objects As Attributes
      • Composition
      • Three Distinguishing Features of an Object-Oriented Programming Language
      • Summary
      • Exercises
    • Chapter 4: Object Interactions
      • Events Drive Object Collaboration
      • Declaring Methods
      • Method Invocation and Dot Notation
      • Information Hiding/Accessibility
      • The Power of Encapsulation
      • Instance Constructors
      • Summary
      • Exercises
    • Chapter 5: Relationships Between Objects
      • Associations and Links
      • Inheritance
      • Three Distinguishing Features of an Object-Oriented Programming Language, Revisited
      • Summary
      • Exercises
    • Chapter 6: Collections of Objects
      • What Are Collections?
      • Arrays As Simple Collections
      • More Sophisticated Collection Types
      • Referencing the Same Object Simultaneously from Multiple Collections
      • Inventing Our Own Collection Types
      • Collections As Method Return Types
      • Collections of Supertypes
      • Composite Classes, Revisited
      • Summary
      • Exercises
    • Chapter 7: Some Final Object Concepts
      • What Is Polymorphism?
      • Three Distinguishing Features of an Object-Oriented Programming Language
      • Abstract Classes
      • Interfaces
      • Static Features
      • Utility Classes
      • Summary
      • Exercises
    • Part Two: Object Modeling 101
      • Chapter 8: The Object Modeling Process in a Nutshell
        • The " Big Picture " Goal of Object Modeling
        • Our Object Modeling Process, in a Nutshell
        • Summary
        • Exercises
      • Chapter 9: Formalizing Requirements Through Use Cases
        • What Are Use Cases?
        • Actors
        • Specifying Use Cases
        • Matching Up Use Cases with Actors
        • To Diagram or Not to Diagram?
        • Summary
        • Exercises
      • Chapter 10: Modeling the Static/Data Aspects of the System
        • Identifying Appropriate Classes
        • Producing a Data Dictionary
        • Determining Associations Between Classes
        • UML Notation: Modeling the Static Aspects of an Abstraction
        • Object Diagrams
        • Information " Flows " Along the Association " Pipeline "
        • " Mixing and Matching " Relationship Notations
        • Association Classes
        • Our " Completed " Student Registration System Class Diagram
        • Metadata
        • Summary
        • Exercises
      • Chapter 11: Modeling the Dynamic/Behavioral Aspects of the System
        • How Behavior Affects State
        • Scenarios
        • Sequence Diagrams
        • Using Sequence Diagrams to Determine Methods
        • Collaboration Diagrams
        • Revised SRS Class Diagram
        • Summary
        • Exercises
      • Chapter 12: Wrapping Up Our Modeling Efforts
        • Testing Your Model
        • Revisiting Requirements
        • Reusing Models: A Word About Design Patterns
        • Summary
        • Exercises
      • Part Three: Translating a UML " Blueprint " into C# Code
        • Chapter 13: A Deeper Look at C#
          • Sorting Out Terminology
          • Setting Up a C# Programming Environment
          • Compiling and Running C# Programs
          • Namespaces
          • Strings As Objects
          • C# Exception Handling
          • The Object Class
          • C#'s Collection Classes
          • Initialization of Variables, Revisited
          • More About the Main Method
          • Developing Command Line - Driven Applications
          • Object Self-Referencing with " this "
          • Constructors, Revisited
          • More About Inheritance and C#
          • More on Methods
          • Object Identities
          • Object Deletion and Garbage Collection
          • The " Other " Kind of Attribute
          • Summary
          • Exercises
        • Chapter 14: Transforming Our UML Model into C# Code
          • Suggestions for Getting the Maximum Value out of This and Subsequent Chapters
          • The SRS Class Diagram, Revisited
          • Debugging Tip
          • Summary
          • Exercises
        • Chapter 15: Rounding Out Our Application, Part 1 - Adding File Persistence
          • What Is Persistence?
          • CollectionWrapper (Encapsulating Collections; Reading from an ASCII File)
          • CourseCatalog
          • Faculty
          • Revamping ScheduleOfClasses
          • Course Modifications
          • The Student Class (Dynamic Data Retrieval; Persisting Object State)
          • Revisiting the SRS Class
          • Summary
          • Exercises
        • Chapter 16: Rounding Out Our Application, Part 2 - Adding a Graphical User Interface
          • C# GUIs: A Primer
          • Stage 1: Preparing a Concept of Operations for the SRS GUI
          • Stage 2: Creating the Look of Our GUI
          • Stage 3: Adding Functionality Through Event Handling
          • Summary
          • Exercises
        • Chapter 17: Next Steps
          • Our " Tried and True " Approach to Learning C# Properly
          • Recommended Reading
          • Your Comments, Please!
        • Appendix A: Suggestions for Using This Book As a Textbook
          • Suitability of C# As a Teaching Language
          • Some Final Recommendations
        • Appendix B: Alternative Case Studies
          • Case Study #2: Conference Room Reservation System
          • Case Study #3: Blue Skies Airline Reservation System
        • Appendix C: Setting Up a Basic Object Modeling/C# Environment
          • The .NET Framework Software Developer's Kit
          • " Odds and Ends " Tips for Getting C# to Work Properly
          • Using the Online .NET Framework Documentation
          • Some Final Notes
        • Appendix D: Downloading and Compiling the SRS Source Code
        • Appendix E: C# Keywords
        • Index
          • Index_A
          • Index_B
          • Index_C
          • Index_D
          • Index_E
          • Index_F
          • Index_G
          • Index_H
          • Index_I
          • Index_J
          • Index_K
          • Index_L
          • Index_M
          • Index_N
          • Index_O
          • Index_P-Q
          • Index_R
          • Index_S
          • Index_T
          • Index_U
          • Index_V
          • Index_W
          • Index_X
          • Index_Y-Z
        • List of Figures
        • List of Tables
        • List of Sidebars