Top Banner
Sams Teach Yourself Visual C# 2010 in 24 Hours Hour 3 : Understanding Classes and Object the C# Way Tuc Goodwin [email protected]
40

Tuc Goodwin [email protected]. Object and Component-Oriented Programming Classes in C# Scope and Accessibility Methods and Properties Nested.

Jan 13, 2016

Download

Documents

Owen McDaniel
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Tuc Goodwin tgoodwin@ntpcug.org.  Object and Component-Oriented Programming  Classes in C#  Scope and Accessibility  Methods and Properties  Nested.

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

Tuc [email protected]

Page 2: Tuc Goodwin tgoodwin@ntpcug.org.  Object and Component-Oriented Programming  Classes in C#  Scope and Accessibility  Methods and Properties  Nested.

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

Page 3: Tuc Goodwin tgoodwin@ntpcug.org.  Object and Component-Oriented Programming  Classes in C#  Scope and Accessibility  Methods and Properties  Nested.

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

Page 4: Tuc Goodwin tgoodwin@ntpcug.org.  Object and Component-Oriented Programming  Classes in C#  Scope and Accessibility  Methods and Properties  Nested.

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;}

}

Page 5: Tuc Goodwin tgoodwin@ntpcug.org.  Object and Component-Oriented Programming  Classes in C#  Scope and Accessibility  Methods and Properties  Nested.

Scope and Accessibility

Page 6: Tuc Goodwin tgoodwin@ntpcug.org.  Object and Component-Oriented Programming  Classes in C#  Scope and Accessibility  Methods and Properties  Nested.

Try It Yourself

Demo

Page 7: Tuc Goodwin tgoodwin@ntpcug.org.  Object and Component-Oriented Programming  Classes in C#  Scope and Accessibility  Methods and Properties  Nested.

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

Page 8: Tuc Goodwin tgoodwin@ntpcug.org.  Object and Component-Oriented Programming  Classes in C#  Scope and Accessibility  Methods and Properties  Nested.

Access Modifiers

Modifier Description

public 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.

Page 9: Tuc Goodwin tgoodwin@ntpcug.org.  Object and Component-Oriented Programming  Classes in C#  Scope and Accessibility  Methods and Properties  Nested.

“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.

Page 10: Tuc Goodwin tgoodwin@ntpcug.org.  Object and Component-Oriented Programming  Classes in C#  Scope and Accessibility  Methods and Properties  Nested.

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.

Page 11: Tuc Goodwin tgoodwin@ntpcug.org.  Object and Component-Oriented Programming  Classes in C#  Scope and Accessibility  Methods and Properties  Nested.

Try It Yourself

Demo

Page 12: Tuc Goodwin tgoodwin@ntpcug.org.  Object and Component-Oriented Programming  Classes in C#  Scope and Accessibility  Methods and Properties  Nested.

Properties

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

Page 13: Tuc Goodwin tgoodwin@ntpcug.org.  Object and Component-Oriented Programming  Classes in C#  Scope and Accessibility  Methods and Properties  Nested.

Automatic Properties

Page 14: Tuc Goodwin tgoodwin@ntpcug.org.  Object and Component-Oriented Programming  Classes in C#  Scope and Accessibility  Methods and Properties  Nested.

Declaring a Property

Page 15: Tuc Goodwin tgoodwin@ntpcug.org.  Object and Component-Oriented Programming  Classes in C#  Scope and Accessibility  Methods and Properties  Nested.

Declaring a Calculated Property

Page 16: Tuc Goodwin tgoodwin@ntpcug.org.  Object and Component-Oriented Programming  Classes in C#  Scope and Accessibility  Methods and Properties  Nested.

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 method

A simple mnemonic device: Get – “Gives” Set –

“Receives”

Page 17: Tuc Goodwin tgoodwin@ntpcug.org.  Object and Component-Oriented Programming  Classes in C#  Scope and Accessibility  Methods and Properties  Nested.

Try It Yourself

Demo

Page 18: Tuc Goodwin tgoodwin@ntpcug.org.  Object and Component-Oriented Programming  Classes in C#  Scope and Accessibility  Methods and Properties  Nested.

Methods

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

Page 19: Tuc Goodwin tgoodwin@ntpcug.org.  Object and Component-Oriented Programming  Classes in C#  Scope and Accessibility  Methods and Properties  Nested.

Methods that returns a value

Methods can accept zero or more declared parameters

Page 20: Tuc Goodwin tgoodwin@ntpcug.org.  Object and Component-Oriented Programming  Classes in C#  Scope and Accessibility  Methods and Properties  Nested.

Parameters

Value parameters Reference parameters – uses the ref

keyword causes arguments to be passed by reference

Output parameters – uses the out keyword

Page 21: Tuc Goodwin tgoodwin@ntpcug.org.  Object and Component-Oriented Programming  Classes in C#  Scope and Accessibility  Methods and Properties  Nested.

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.

Page 22: Tuc Goodwin tgoodwin@ntpcug.org.  Object and Component-Oriented Programming  Classes in C#  Scope and Accessibility  Methods and Properties  Nested.

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…

Page 23: Tuc Goodwin tgoodwin@ntpcug.org.  Object and Component-Oriented Programming  Classes in C#  Scope and Accessibility  Methods and Properties  Nested.

Method Overloading

Page 24: Tuc Goodwin tgoodwin@ntpcug.org.  Object and Component-Oriented Programming  Classes in C#  Scope and Accessibility  Methods and Properties  Nested.

Try It Yourself

Demo

Page 25: Tuc Goodwin tgoodwin@ntpcug.org.  Object and Component-Oriented Programming  Classes in C#  Scope and Accessibility  Methods and Properties  Nested.

Optional vs. Required Parameters

How 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

Page 26: Tuc Goodwin tgoodwin@ntpcug.org.  Object and Component-Oriented Programming  Classes in C#  Scope and Accessibility  Methods and Properties  Nested.

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.

Page 27: Tuc Goodwin tgoodwin@ntpcug.org.  Object and Component-Oriented Programming  Classes in C#  Scope and Accessibility  Methods and Properties  Nested.

Declaring a Constructor Overload

Page 28: Tuc Goodwin tgoodwin@ntpcug.org.  Object and Component-Oriented Programming  Classes in C#  Scope and Accessibility  Methods and Properties  Nested.

How does a class refer to itself?

The this keyword

Page 29: Tuc Goodwin tgoodwin@ntpcug.org.  Object and Component-Oriented Programming  Classes in C#  Scope and Accessibility  Methods and Properties  Nested.

Chaining Constructors

Page 30: Tuc Goodwin tgoodwin@ntpcug.org.  Object and Component-Oriented Programming  Classes in C#  Scope and Accessibility  Methods and Properties  Nested.

Chaining Constructors

Page 31: Tuc Goodwin tgoodwin@ntpcug.org.  Object and Component-Oriented Programming  Classes in C#  Scope and Accessibility  Methods and Properties  Nested.

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.

Page 32: Tuc Goodwin tgoodwin@ntpcug.org.  Object and Component-Oriented Programming  Classes in C#  Scope and Accessibility  Methods and Properties  Nested.

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.

Page 33: Tuc Goodwin tgoodwin@ntpcug.org.  Object and Component-Oriented Programming  Classes in C#  Scope and Accessibility  Methods and Properties  Nested.

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.

Page 34: Tuc Goodwin tgoodwin@ntpcug.org.  Object and Component-Oriented Programming  Classes in C#  Scope and Accessibility  Methods and Properties  Nested.

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

Page 35: Tuc Goodwin tgoodwin@ntpcug.org.  Object and Component-Oriented Programming  Classes in C#  Scope and Accessibility  Methods and Properties  Nested.

Try It Yourself

Demo

Page 36: Tuc Goodwin tgoodwin@ntpcug.org.  Object and Component-Oriented Programming  Classes in C#  Scope and Accessibility  Methods and Properties  Nested.

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.

Page 37: Tuc Goodwin tgoodwin@ntpcug.org.  Object and Component-Oriented Programming  Classes in C#  Scope and Accessibility  Methods and Properties  Nested.

Object Initializers example

Page 38: Tuc Goodwin tgoodwin@ntpcug.org.  Object and Component-Oriented Programming  Classes in C#  Scope and Accessibility  Methods and Properties  Nested.

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

Page 39: Tuc Goodwin tgoodwin@ntpcug.org.  Object and Component-Oriented Programming  Classes in C#  Scope and Accessibility  Methods and Properties  Nested.

Questions?

Page 40: Tuc Goodwin tgoodwin@ntpcug.org.  Object and Component-Oriented Programming  Classes in C#  Scope and Accessibility  Methods and Properties  Nested.

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