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