Levi, Ray & Shoup, Inc.
  • Courses
  • Site Content

AT-OO-C# - Object Oriented Programming in C# (VS2008)

This thorough and comprehensive course is a practical introduction to programming in C#, utilizing the services provided by .NET. This course introduces object-oriented concepts early, and C# is developed in a way that leverages its object orientation. Besides supporting traditional object-oriented features such as classes, inheritance and polymorphism, C# introduces several additional features, such as properties, indexers, delegates, events and interfaces that make C# a compelling language for developing object-oriented and component-based systems. The course explores several important interactions between C# and the .NET Framework, and it includes an introduction to major classes for collections, delegates, and events. It is current to Visual Studio 2008 and .NET 3.5, which introduces important new features such as implicit typing, extension methods, lambda expressions and Language-Integrated Query (LINQ). The course concludes with a chapter covering the new features in C# 3.0.

Click here to print this page »

Prerequisites


Programming in a high-level language such as Perl, C, Visual Basic or COBOL.

Detailed Class Syllabus


.NET: What You Need to Know


Getting Started
.NET: What Is Really Happening
.NET Programming in a Nutshell
Viewing the Assembly
Viewing Intermediate Language
Understanding .NET
Visual Studio 2008
Creating a Console Application
Adding a C# File
Using the Visual Studio Text Editor
IntelliSense
Build and Run the Project
Pausing the Output
Visual C# and GUI Programs
.NET Documentation

First C# Programs


Hello, World
Compiling, Running (Command Line)
Program Structure
Namespaces
Variables
Expressions
Assignment
Calculations Using C#
More about Output in C#
Input in C#
More about Classes
InputWrapper Class
Echo Program
Using InputWrapper
Compiling Multiple Files
Multiple Files in Visual Studio
The .NET Framework

Data Types in C#


Strong Typing
Typing in C#
Typing in C++
Typing in Visual Basic 6
C# Types
Integer Types
Integer Type Range
Integer Literals
Floating Point Types
Floating Point Literals
IEEE Standard for Floating Point
Decimal Type
Decimal Literals
Character Type
Character Literals
string
Escape Characters
Boolean Type
Implicit Conversions
Explicit Conversions
Nullable Types

Operators and Expressions


Operator Cardinality
Arithmetic Operators
Multiplication
Division
Additive Operators
Increment and Decrement
Relational Operators
Conditional Logical Operators
Short-Circuit Evaluation
Ternary Conditional Operator
Bitwise Operators
Bitwise Logical Operators
Bitwise Shift Operators
Assignment Operators
Expressions
Precedence
Associativity
Checking

Control Structures


If Tests
Blocks
Loops
while Loop
vdo/while Loops
for Loops
Arrays
foreach Loop
break
continue
goto
Structured Programming
Multiple Methods
switch
switch in C# and C/C++

Object-Oriented Programming


Objects
Objects in the Real World
Object Models
Reusable Software Components
Objects in Software
State and Behavior
Abstraction
Encapsulation
Classes
Inheritance Concept
Relationships among Classes
Polymorphism
Object Oriented Analysis and Design
Use Cases
CRC Cards and UML

Classes


Classes as Structured Data
Classes and Objects
References
Instantiating and Using an Object
Assigning Object References
Garbage Collection
Methods
Public and Private
Abstraction
Encapsulation
Initialization
Initialization with Constructors
Default Constructor
this
Static Fields and Methods
Static Methods
Static Constructor
Constant and Readonly Fields

More about Types


Overview of Types in C#
Structures
Uninitialized Variables
Copying a Structure
Hotel.cs
HotelCopy.cs
Results of Hotel Copy
Classes and Structs
Enumeration Types
Reference Types
Class Types
object
string
Arrays
Default Values
Boxing and Unboxing

Methods, Properties, and Operators


Static and Instance Methods
Method Parameters
No “Freestanding” Functions in C#
Classes with All Static Methods
Parameter Passing
Parameter Terminology
Value Parameters
Reference Parameters
Output Parameters
Structure Parameters
Class Parameters
Method Overloading
Modifiers as Part of the Signature
Variable Length Parameter Lists
Properties
Operator Overloading
Operator Overloading in the Class Library

Characters and Strings


Characters
Character Codes
ASCII and Unicode
Escape Sequences
Strings
String Class
String Literals and Initialization
Concatenation
Index
Relational Operators
String Equality
String Comparisons
String Comparison
String Input
String Methods and Properties
StringBuilder Class
StringBuilder Equality
Command Line Arguments
Command Line Arguments in the IDE
Command Loops
Splitting a String

Arrays and Indexers


Arrays
One Dimensional Arrays
System.Array
Random Number Generation
Next Methods
Jagged Arrays
Rectangular Arrays
Arrays As Collections
Indexers
Using the Indexer

Inheritance


Inheritance Fundamentals
Inheritance in C#
Single Inheritance
Root Class – Object
Access Control
Public Class Accessibility
Internal Class Accessibility
Member Accessibility
Member Accessibility Qualifiers
Method Hiding
Method Hiding and Overriding
Initialization
Initialization Fundamentals
Default Constructor
Overloaded Constructors
Invoking Base Class Constructors

Virtual Methods and Polymorphism


Introduction to Polymorphism
Abstract and Sealed Classes
Virtual Methods and Dynamic Binding
Type Conversions in Inheritance
Converting Down the Hierarchy
Converting Up the Hierarchy
Virtual Methods
Virtual Method Cost
Method Overriding
The Fragile Base Class Problem
override Keyword
Polymorphism
Polymorphism Using “Type Tags”
Polymorphism Using Virtual
Abstract Classes
Keyword: abstract
Sealed Classes
Heterogeneous Collections

Formatting and Conversion


Introduction to Formatting
ToString
ToString in Your Own Class
Using Placeholders
Format Strings
Simple Placeholders
Controlling Width
Format String
Currency
String.Format
PadLeft and PadRight
Type Conversions
Conversion of Built-In Types
Conversion of User-Defined Types

Exceptions


Introduction to Exceptions
Exception Fundamentals
.NET Exception Handling
Exception Flow of Control
Context and Stack Unwinding
System.Exception
User-Defined Exception Classes
Structured Exception Handling
Finally Block
Inner Exceptions
Checked Integer Arithmetic

Interfaces


Interfaces in C#
Interface Inheritance
Programming with Interfaces
Implementing Interfaces
Using an Interface
Dynamic Use of Interfaces
is Operator
as Operator
Common Interfaces in Case Study –IAccount
Apparent Redundancy
IStatement
IStatement Methods
IChecking
ISavings
The Implementation
SavingsAccount
The Client
Resolving Ambiguity
Access Modifier
Explicit Interfaces Test Program

.NET Interfaces and Collections


Collections
Count and Capacity
foreach Loop
Array Notation
Adding to the List
Remove Method
RemoveAt Method
Collection Interfaces
IEnumerable and IEnumerator
ICollection
IList
A Collection of User-Defined Objects
Duplicate Objects
Copy Semantics and ICloneable
Copy Semantics in C#
Shallow Copy and Deep Copy
Reference Copy
Memberwise Clone
Using ICloneable
Comparing Objects
Sorting an Array
Anatomy of Array.Sort
Using the is Operator
The Use of Dynamic Type Checking
Implementing IComparable
Writing Generic Code
Using a Class of object
Generic Types
Generic Syntax in C#
Generic Client Code
System.Collections.Generic

Delegates and Events


Overview of Delegates and Events
Callbacks and Delegates
Usage of Delegates
Declaring a Delegate
Defining a Method
Creating a Delegate Object
Calling a Delegate
A Random Array
Anonymous Methods
Combining Delegate Objects
Account.cs
DelegateAccount.cs
Events
Events in C# and .NET
Client Side Event Code

Introduction to Windows Forms


Creating a Windows Forms App
Partial Classes
Windows Forms Event Handling
Add Events for a Control
Events Documentation
Closing a Form
ListBox Control

New Features in C# 3.0


Auto-Implement Properties
Implicitly Typed Variables
Object Initializers
Collection Initializers
Anonymous Types
Partial Methods
Partial Method Definition
Partial Method Implementation
Main Program
Extension Methods
Lambda Expressions
Named Method
Anonymous Method
Language-Integrated Query (LINQ)
Using IEnumerable