Tuc Goodwin tgoodwin@ntpcug

Preview:

DESCRIPTION

Tuc Goodwin tgoodwin@ntpcug.org. Sams Teach Yourself Visual C# 2010 in 24 Hours Hour 3 : Understanding Classes and Object the C# Way. Agenda. Object and Component-Oriented Programming Classes in C# Scope and Accessibility Methods and Properties Nested and Partial Classes - PowerPoint PPT Presentation

Citation preview

Sams Teach YourselfVisual C# 2010 in 24 HoursHour 3 : Understanding Classes and Object the C# Way

Tuc Goodwintgoodwin@ntpcug.org

Agenda

Object and Component-Oriented Programming

Classes in C# Scope and Accessibility Methods and Properties Nested and Partial Classes Static Classes and Data Object Initializers

Object and Component-Oriented Programming

A Class is a data structure that combines data storage with methods for manipulating the data.

Four primary OO concepts Encapsulation Abstraction Inheritance Polymorphism

Classes in C# Define the body of a class

with opening and closing curly braces { }

Scope – Where you declare a variable will determine who can see it. If you can see it, you can use it.

Declaration space – no two entities are allowed to have the same name

Class Contact{public int age;

Public void F(){ age = 18;}

public void G(){ int age; age = 21;}

}

Scope and Accessibility

Try It Yourself

Demo

Accessibility

Accessibility allows you to control visibility

Namespaces are not allowed to have any access modifiers. They are always public.

Classes default to internal, but are allowed to have either public or internal.

A nested class, a class defined inside of another class defaults to private accessibility

Class members default to private

Access ModifiersModifier Descriptionpublic Access is not limited.

protected Access is limited to the containing class or types derived from the containing class.

internal Access is limited to the containing assembly.

protected internal

Access is limited to the containing assembly or types derived from the containing classes.

private Access is limited to the containing class only.

“Black Diamond”

Best practice – Explicitly declaring accessibility indicates the choice was a conscious decision… i.e. self-documenting.

Be careful of “protected internal” because it is effectively one or the other. C# does not provide a concept of protected and internal.

Fields and Constants

Fields are variables that represented data associated with a class. Fields are private by default

Constants are immutable. They can be declared with access modifiers. They must be assigned a value as part of a declaration.

Try It Yourself

Demo

Properties

A property provides a simple way to access a field. This allows for encapsulation, hiding the internal details of the field.

Automatic Properties

Declaring a Property

Declaring a Calculated Property

Read-Only and Write-Only Properties How would you create a read-only

property? Remove the Set method leave only

the Get method How would you create a write-only

property? Remove the Get method leave only

the Set methodA simple mnemonic device:

Get – “Gives” Set – “Receives”

Try It Yourself

Demo

Methods

Methods (sometimes called functions) define and implement a behavior or action that can be performed.

Methods that returns a value Methods can accept zero or more

declared parameters

Parameters

Value parameters Reference parameters – uses the ref

keyword causes arguments to be passed by reference

Output parameters – uses the out keyword

Parameter Arrays

Parameter arrays are declared with the params keyword

A method’s formal parameter can include only a single parameter array

The parameter array must be the last parameter in the list of any parameter.

Overloaded Methods

…can vary only by signature.… can vary only by the number

and types of parameters

You can overload a method to have different return types, but you should avoid it to minimize the possibility for confusion…

Method Overloading

Try It Yourself

Demo

Optional vs. Required ParametersHow do you specify an optional

parameter?A parameter with a default

argument is an optional parameter

How do you specify a required parameter?

A parameter without a default argument is a required parameter

Instantiating a Class

You instantiate a class to create an instance

Contact c = new Contact(); A default constructor is the same

name as the class and does not return a value.

Declaring a Constructor Overload

How does a class refer to itself?The this keyword

Chaining Constructors

Chaining Constructors

Nested Classes

A nested class is one that is fully enclosed, or nested, inside another class declaration

They have at least the same access level as the containing class.

Partial Classes

Partial classes enable you to split the declaration of a class into multiple parts, typically across multiple files.

Partial classes are implemented in the same way as a normal class but contain the keyword partial.

Static Classes

A static class can have only a static constructor

Static classes can not be instantiated, that is multiple instances cannot be created.

Typically used for utility or helper methods.

Extension Methods

Extension methods must be declared in a non-nested, non-generic static class.

An extension method defined in the same assembly as the type being extended

Try It Yourself

Demo

Object Initializers

Suppose you want to instantiate and assign values as part of the constructor call?

This can be done by initializing the object at the same time.

Object Initializers example

Agenda

Object and Component-Oriented Programming

Classes in C# Scope and Accessibility Methods and Properties Nested and Partial Classes Static Classes and Data Object Initializers

Questions?

Future Schedule

Chapters Presenter Date

Inheritance, Interfaces, and Abstract Classes David Stark 11/13/2010

Creating Enumerated Types and Structures Shawn Weisfeld 12/11/2010

Events and Event Handling Tuc Goodwin 1/8/2011

Controlling Program Flow David Stark 2/12/2011

Using Stings and Regular Expressions Shawn Weisfeld 3/12/2012

Working with Arrays and Collections Tuc Goodwin 4/9/2011

Handling Errors using Exceptions David Stark 5/14/2011

Understanding Generics Shawn Weisfeld 6/11/2011

Understanding Query Expression Tuc Goodwin 7/9/2011