object-oriented programming in visual basic.net. overview defining classes creating and destroying...

43
Object-Oriented Programming in Visual Basic .NET

Upload: georgia-watkins

Post on 24-Dec-2015

233 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Object-Oriented Programming in Visual Basic.NET. Overview Defining Classes Creating and Destroying Objects Inheritance Interfaces Working with Classes

Object-Oriented Programming in Visual

Basic .NET

Page 2: Object-Oriented Programming in Visual Basic.NET. Overview Defining Classes Creating and Destroying Objects Inheritance Interfaces Working with Classes

Overview

Defining Classes

Creating and Destroying Objects

Inheritance

Interfaces

Working with Classes

Page 3: Object-Oriented Programming in Visual Basic.NET. Overview Defining Classes Creating and Destroying Objects Inheritance Interfaces Working with Classes

Multimedia: Introduction to Object-Oriented Concepts

Page 4: Object-Oriented Programming in Visual Basic.NET. Overview Defining Classes Creating and Destroying Objects Inheritance Interfaces Working with Classes

Defining Classes

Procedure for Defining a Class

Using Access Modifiers

Declaring Methods

Declaring Properties

Using Attributes

Overloading Methods

Using Constructors

Using Destructors

Page 5: Object-Oriented Programming in Visual Basic.NET. Overview Defining Classes Creating and Destroying Objects Inheritance Interfaces Working with Classes

abstractionabstraction

classclass

encapsulation

encapsulation

objectobject

Lesson: Understanding Classes

Page 6: Object-Oriented Programming in Visual Basic.NET. Overview Defining Classes Creating and Destroying Objects Inheritance Interfaces Working with Classes

A class is a blueprint that describes an object and defines attributes and operations for the object

Classes use abstraction to make available only the elements essential to defining the object

Classes use encapsulation to enforce an abstraction

What Is a Class?

What the user sees: What is encapsulated:

//verify language//authenticate PIN//validate account bal//adjust account bal

Page 7: Object-Oriented Programming in Visual Basic.NET. Overview Defining Classes Creating and Destroying Objects Inheritance Interfaces Working with Classes

What Is an Object?

An object is an instance of a class

Objects have the following qualities:

Identity: Objects are distinguishable from one another Behavior: Objects can perform tasks State: Objects store information that can vary over time

123

245

12

245

ObjectObject

ObjectObject

ClassClass

Page 8: Object-Oriented Programming in Visual Basic.NET. Overview Defining Classes Creating and Destroying Objects Inheritance Interfaces Working with Classes

How to Use the Object Browser

Objects Pane

Objects Pane

Members Pane

Members Pane

Description Pane

Description Pane

Page 9: Object-Oriented Programming in Visual Basic.NET. Overview Defining Classes Creating and Destroying Objects Inheritance Interfaces Working with Classes

Add a Class to the Project

Provide an Appropriate Name for the Class

Create Constructors As Needed

Create a Destructor, If Appropriate

Declare Properties

Declare Methods and Events

Procedure for Defining a Class

Page 10: Object-Oriented Programming in Visual Basic.NET. Overview Defining Classes Creating and Destroying Objects Inheritance Interfaces Working with Classes

Using Access Modifiers

Specify Accessibility of Variables and Procedures

Keyword Definition

Public Accessible everywhere.

Private Accessible only within the type itself.

Friend Accessible within the type itself and all namespaces and code within the same assembly.

Protected Only for use on class members. Accessible within the class itself and any derived classes.

Protected Friend

The union of Protected and Friend.

Page 11: Object-Oriented Programming in Visual Basic.NET. Overview Defining Classes Creating and Destroying Objects Inheritance Interfaces Working with Classes

Declaring Methods

Same Syntax As in Visual Basic 6.0

Public Sub TestIt(ByVal x As Integer)...End Sub

Public Function GetIt( ) As Integer...End Function

Public Sub TestIt(ByVal x As Integer)...End Sub

Public Function GetIt( ) As Integer...End Function

Page 12: Object-Oriented Programming in Visual Basic.NET. Overview Defining Classes Creating and Destroying Objects Inheritance Interfaces Working with Classes

Declaring Properties

Syntax Differs from That of Visual Basic 6.0

Public Property MyData( ) As Integer Get Return intMyData 'Return local variable value End Get Set (ByVal Value As Integer) intMyData = Value 'Store Value in local variable End SetEnd Property

Public Property MyData( ) As Integer Get Return intMyData 'Return local variable value End Get Set (ByVal Value As Integer) intMyData = Value 'Store Value in local variable End SetEnd Property

Public ReadOnly Property MyData( ) As Integer Get Return intMyData End GetEnd Property

Public ReadOnly Property MyData( ) As Integer Get Return intMyData End GetEnd Property

ReadOnly, WriteOnly, and Default Keywords

Page 13: Object-Oriented Programming in Visual Basic.NET. Overview Defining Classes Creating and Destroying Objects Inheritance Interfaces Working with Classes

Using Attributes

Extra Metadata Supplied by Using “< >” Brackets

Supported for:

Assemblies, classes, methods, properties, and more

Common Uses:

Assembly versioning, Web Services, components, security, and custom

<Obsolete("Please use method M2")> Public Sub M1( ) 'Results in warning in IDE when used by client codeEnd Sub

<Obsolete("Please use method M2")> Public Sub M1( ) 'Results in warning in IDE when used by client codeEnd Sub

Page 14: Object-Oriented Programming in Visual Basic.NET. Overview Defining Classes Creating and Destroying Objects Inheritance Interfaces Working with Classes

Overloading Methods

Methods with the Same Name Can Accept Different Parameters

Specified Parameters Determine Which Method to Call

The Overloads Keyword is Optional Unless Overloading Inherited Methods

Public Function Display(s As String) As String MsgBox("String: " & s) Return "String"End Sub

Public Function Display(i As Integer) As Integer MsgBox("Integer: " & i) Return 1End Function

Public Function Display(s As String) As String MsgBox("String: " & s) Return "String"End Sub

Public Function Display(i As Integer) As Integer MsgBox("Integer: " & i) Return 1End Function

Page 15: Object-Oriented Programming in Visual Basic.NET. Overview Defining Classes Creating and Destroying Objects Inheritance Interfaces Working with Classes

Using Constructors

Sub New Replaces Class_Initialize

Executes Code When Object Is Instantiated

Public Sub New( ) 'Perform simple initialization intValue = 1End Sub

Public Sub New( ) 'Perform simple initialization intValue = 1End Sub

Public Sub New(ByVal i As Integer) 'Overloaded without Overloads 'Perform more complex initialization intValue = iEnd Sub

Public Sub New(ByVal i As Integer) 'Overloaded without Overloads 'Perform more complex initialization intValue = iEnd Sub

Can Overload, But Does Not Use Overloads Keyword

Page 16: Object-Oriented Programming in Visual Basic.NET. Overview Defining Classes Creating and Destroying Objects Inheritance Interfaces Working with Classes

Using Destructors

Sub Finalize Replaces Class_Terminate Event

Use to Clean Up Resources

Code Executed When Destroyed by Garbage Collection

Important: destruction may not happen immediately

Protected Overrides Sub Finalize( )

'Can close connections or other resources

conn.Close

End Sub

Protected Overrides Sub Finalize( )

'Can close connections or other resources

conn.Close

End Sub

Page 17: Object-Oriented Programming in Visual Basic.NET. Overview Defining Classes Creating and Destroying Objects Inheritance Interfaces Working with Classes

Instantiating and Initializing Objects

Garbage Collection

Using the Dispose Method

Creating and Destroying Objects

Page 18: Object-Oriented Programming in Visual Basic.NET. Overview Defining Classes Creating and Destroying Objects Inheritance Interfaces Working with Classes

‘declare but don’t instantiate yetDim c1 As TestClass‘other codec1 = New TestClass() ‘instantiate now

‘declare but don’t instantiate yetDim c1 As TestClass‘other codec1 = New TestClass() ‘instantiate now

‘declare but don’t instantiate yetDim c1 As TestClass‘other codec1 = New TestClass() ‘instantiate now

‘declare, instantiate & initialize using default constructorDim c2 As TestClass = New TestClass()

‘declare but don’t instantiate yetDim c1 As TestClass‘other codec1 = New TestClass() ‘instantiate now

‘declare, instantiate & initialize using default constructorDim c2 As TestClass = New TestClass()

‘declare but don’t instantiate yetDim c1 As TestClass‘other codec1 = New TestClass() ‘instantiate now ‘declare, instantiate & initialize using default constructorDim c2 As TestClass = New TestClass()

‘declare, instantiate & initialize using default constructorDim c3 As New TestClass 

‘declare but don’t instantiate yetDim c1 As TestClass‘other codec1 = New TestClass() ‘instantiate now ‘declare, instantiate & initialize using default constructorDim c2 As TestClass = New TestClass()

‘declare, instantiate & initialize using default constructorDim c3 As New TestClass 

Instantiating and Initializing Objects

Instantiate and Initialize Objects in One Line of Code

'Declare but do not instantiate yetDim c1 As TestClass'Other codec1 = New TestClass( ) 'Instantiate now 'Declare, instantiate & initialize using default constructorDim c2 As TestClass = New TestClass( )

'Declare, instantiate & initialize using default constructorDim c3 As New TestClass( ) 'Declare, instantiate & initialize using alternative constructorDim c4 As New TestClass(10)Dim c5 As TestClass = New TestClass(10)

'Declare but do not instantiate yetDim c1 As TestClass'Other codec1 = New TestClass( ) 'Instantiate now 'Declare, instantiate & initialize using default constructorDim c2 As TestClass = New TestClass( )

'Declare, instantiate & initialize using default constructorDim c3 As New TestClass( ) 'Declare, instantiate & initialize using alternative constructorDim c4 As New TestClass(10)Dim c5 As TestClass = New TestClass(10)

Page 19: Object-Oriented Programming in Visual Basic.NET. Overview Defining Classes Creating and Destroying Objects Inheritance Interfaces Working with Classes

Garbage Collection

Background Process That Cleans Up Unused Variables

Use x = Nothing to Enable Garbage Collection

Detects Objects or Other Memory That Cannot Be Reached by Any Code (Even Circular References!)

Calls Destructor of Object

No guarantee of when this will happen Potential for resources to be tied up for long periods of

time (database connections, files, and so on) You can force collection by using the GC system class

Page 20: Object-Oriented Programming in Visual Basic.NET. Overview Defining Classes Creating and Destroying Objects Inheritance Interfaces Working with Classes

Using the Dispose Method

Create a Dispose Method to Manually Release Resources

'Class code

Public Sub Dispose( )

'Check that the connection is still open

conn.Close 'Close a database connection

End Sub

'Class code

Public Sub Dispose( )

'Check that the connection is still open

conn.Close 'Close a database connection

End Sub

'Client code Dim x as TestClass = New TestClass( ) ... x.Dispose( ) 'Call the object's dispose method

'Client code Dim x as TestClass = New TestClass( ) ... x.Dispose( ) 'Call the object's dispose method

Call the Dispose Method from Client Code

Page 21: Object-Oriented Programming in Visual Basic.NET. Overview Defining Classes Creating and Destroying Objects Inheritance Interfaces Working with Classes

Demonstration: Creating Classes

Page 22: Object-Oriented Programming in Visual Basic.NET. Overview Defining Classes Creating and Destroying Objects Inheritance Interfaces Working with Classes

Inheritance

What Is Inheritance?

Overriding and Overloading

Inheritance Example

Shadowing

Using the MyBase Keyword

Using the MyClass Keyword

Page 23: Object-Oriented Programming in Visual Basic.NET. Overview Defining Classes Creating and Destroying Objects Inheritance Interfaces Working with Classes

What Is Inheritance?

Inheritance specifies an “is-a-kind-of” relationship

Multiple classes share the same attributes and operations, allowing efficient code reuse

Examples:

A customer “is a kind of” person

An employee “is a kind of” person

Customer Employee

Person

Base Class

Derived Classes

Page 24: Object-Oriented Programming in Visual Basic.NET. Overview Defining Classes Creating and Destroying Objects Inheritance Interfaces Working with Classes

What Is Inheritance?

Derived Class Inherits from a Base Class

Properties, Methods, Data Members, Events, and Event Handlers Can Be Inherited (Dependent on Scope)

Keywords

Inherits – inherits from a base class

NotInheritable – cannot be inherited from

MustInherit – instances of the class cannot be created; must be inherited from as a base class

Protected – member scope that allows use only by deriving classes

Page 25: Object-Oriented Programming in Visual Basic.NET. Overview Defining Classes Creating and Destroying Objects Inheritance Interfaces Working with Classes

Overriding and Overloading

Derived Class Can Override an Inherited Property or Method

Overridable – can be overridden

MustOverride – must be overridden in derived class

Overrides – replaces method from inherited class

NotOverridable – cannot be overridden (default)

Use Overload Keyword to Overload Inherited Property or Method

Page 26: Object-Oriented Programming in Visual Basic.NET. Overview Defining Classes Creating and Destroying Objects Inheritance Interfaces Working with Classes

Inheritance Example

Public Class BaseClass

Public Overridable Sub OverrideMethod( ) MsgBox("Base OverrideMethod") End Sub

Public Sub Other( ) MsgBox("Base Other method – not overridable") End SubEnd Class

Public Class BaseClass

Public Overridable Sub OverrideMethod( ) MsgBox("Base OverrideMethod") End Sub

Public Sub Other( ) MsgBox("Base Other method – not overridable") End SubEnd Class

Public Class DerivedClass Inherits BaseClass

Public Overrides Sub OverrideMethod( ) MsgBox("Derived OverrideMethod") End SubEnd Class

Public Class DerivedClass Inherits BaseClass

Public Overrides Sub OverrideMethod( ) MsgBox("Derived OverrideMethod") End SubEnd Class

Dim x As DerivedClass = New DerivedClass( )x.Other 'Displays "Base Other method – not overridable"x.OverrideMethod 'Displays "Derived OverrideMethod"

Dim x As DerivedClass = New DerivedClass( )x.Other 'Displays "Base Other method – not overridable"x.OverrideMethod 'Displays "Derived OverrideMethod"

Page 27: Object-Oriented Programming in Visual Basic.NET. Overview Defining Classes Creating and Destroying Objects Inheritance Interfaces Working with Classes

Class aBase Public Sub M1( ) 'Non-overridable by default ... End SubEnd Class

Class aShadowed Inherits aBase Public Shadows Sub M1(ByVal i As Integer)

'Clients can only see this method ... End SubEnd Class

Class aBase Public Sub M1( ) 'Non-overridable by default ... End SubEnd Class

Class aShadowed Inherits aBase Public Shadows Sub M1(ByVal i As Integer)

'Clients can only see this method ... End SubEnd Class

Shadowing

Hides Base Class Members, Even If Overloaded

Dim x As New aShadowed( )x.M1( ) 'Generates an errorx.M1(20) 'No error

Dim x As New aShadowed( )x.M1( ) 'Generates an errorx.M1(20) 'No error

Page 28: Object-Oriented Programming in Visual Basic.NET. Overview Defining Classes Creating and Destroying Objects Inheritance Interfaces Working with Classes

Using the MyBase Keyword

Refers to the Immediate Base Class

Can Only Access Public, Protected, or Friend Members of Base Class

Is Not a Real Object (Cannot Be Stored in a Variable)

Public Class DerivedClass Inherits BaseClass

Public Overrides Sub OverrideMethod( ) MsgBox("Derived OverrideMethod") MyBase.OverrideMethod( ) End SubEnd Class

Public Class DerivedClass Inherits BaseClass

Public Overrides Sub OverrideMethod( ) MsgBox("Derived OverrideMethod") MyBase.OverrideMethod( ) End SubEnd Class

Page 29: Object-Oriented Programming in Visual Basic.NET. Overview Defining Classes Creating and Destroying Objects Inheritance Interfaces Working with Classes

Using the MyClass Keyword

Ensures Base Class Gets Called, Not Derived Class

Public Class BaseClass Public Overridable Sub OverrideMethod( ) MsgBox("Base OverrideMethod") End Sub

Public Sub Other( ) MyClass.OverrideMethod( ) 'Will call above method OverrideMethod( ) 'Will call derived method End SubEnd Class

Public Class BaseClass Public Overridable Sub OverrideMethod( ) MsgBox("Base OverrideMethod") End Sub

Public Sub Other( ) MyClass.OverrideMethod( ) 'Will call above method OverrideMethod( ) 'Will call derived method End SubEnd Class

Dim x As DerivedClass = New DerivedClass( )x.Other( )

Dim x As DerivedClass = New DerivedClass( )x.Other( )

Page 30: Object-Oriented Programming in Visual Basic.NET. Overview Defining Classes Creating and Destroying Objects Inheritance Interfaces Working with Classes

Interfaces

Defining Interfaces

Achieving Polymorphism

Page 31: Object-Oriented Programming in Visual Basic.NET. Overview Defining Classes Creating and Destroying Objects Inheritance Interfaces Working with Classes

Defining Interfaces

Interfaces Define Public Procedure, Property, and Event Signatures

Use the Interface Keyword to Define an Interface Module

Overload Members as for Classes

Use the Inherits Keyword in an Interface to Inherit From Other Interfaces

Interface IMyInterface Function Method1(ByRef s As String) As Boolean Sub Method2( ) Sub Method2(ByVal i As Integer)End Interface

Interface IMyInterface Function Method1(ByRef s As String) As Boolean Sub Method2( ) Sub Method2(ByVal i As Integer)End Interface

Page 32: Object-Oriented Programming in Visual Basic.NET. Overview Defining Classes Creating and Destroying Objects Inheritance Interfaces Working with Classes

Achieving Polymorphism

Polymorphism

Many classes provide the same property or method A caller does not need to know the type of class the

object is based on Two Approaches

InterfacesClass implements members of interfaceSame approach as in Visual Basic 6.0

InheritanceDerived class overrides members of base class

Page 33: Object-Oriented Programming in Visual Basic.NET. Overview Defining Classes Creating and Destroying Objects Inheritance Interfaces Working with Classes

What Is Polymorphism?

The method name resides in the base class

The method implementations reside in the derived classes

BaseTaxBaseTax

CalculateTax( )CalculateTax( )

CountyTaxCountyTax

CalculateTax( )CalculateTax( )

CityTaxCityTax

CalculateTax( )CalculateTax( )

Page 34: Object-Oriented Programming in Visual Basic.NET. Overview Defining Classes Creating and Destroying Objects Inheritance Interfaces Working with Classes

Demonstration: Interfaces and Polymorphism

Page 35: Object-Oriented Programming in Visual Basic.NET. Overview Defining Classes Creating and Destroying Objects Inheritance Interfaces Working with Classes

Working with Classes

Using Shared Data Members

Using Shared Procedure Members

Event Handling

What Are Delegates?

Using Delegates

Comparing Classes to Structures

Page 36: Object-Oriented Programming in Visual Basic.NET. Overview Defining Classes Creating and Destroying Objects Inheritance Interfaces Working with Classes

Using Shared Data Members

Allow Multiple Class Instances to Refer to a Single Class-Level Variable Instance

SavingsAccount.InterestRate = 0.003Dim acct1 As New SavingsAccount("Joe Howard", 10000)MsgBox(acct1.CalculateInterest, , "Interest for " & acct1.Name)

SavingsAccount.InterestRate = 0.003Dim acct1 As New SavingsAccount("Joe Howard", 10000)MsgBox(acct1.CalculateInterest, , "Interest for " & acct1.Name)

Class SavingsAccount Public Shared InterestRate As Double Public Name As String, Balance As Double

Sub New(ByVal strName As String, ByVal dblAmount As Double) Name = strName Balance = dblAmount End Sub

Public Function CalculateInterest( ) As Double Return Balance * InterestRate End FunctionEnd Class

Class SavingsAccount Public Shared InterestRate As Double Public Name As String, Balance As Double

Sub New(ByVal strName As String, ByVal dblAmount As Double) Name = strName Balance = dblAmount End Sub

Public Function CalculateInterest( ) As Double Return Balance * InterestRate End FunctionEnd Class

Page 37: Object-Oriented Programming in Visual Basic.NET. Overview Defining Classes Creating and Destroying Objects Inheritance Interfaces Working with Classes

Using Shared Procedure Members

Share Procedures Without Declaring a Class Instance

Similar Functionality to Visual Basic 6.0 “Global” Classes

Can Only Access Shared Data

'TestClass codePublic Shared Function GetComputerName( ) As String ...End Function

'TestClass codePublic Shared Function GetComputerName( ) As String ...End Function

'Client code

MsgBox(TestClass.GetComputerName( ))

'Client code

MsgBox(TestClass.GetComputerName( ))

Page 38: Object-Oriented Programming in Visual Basic.NET. Overview Defining Classes Creating and Destroying Objects Inheritance Interfaces Working with Classes

Event Handling

Defining and Raising Events: Same As Visual Basic 6.0

WithEvents Keyword: Handles Events As in Visual Basic 6.0

In Visual Basic .NET, works with Handles keyword to specify method used to handle event

AddHandler Keyword: Allows Dynamic Connection to Events

RemoveHandler Keyword: Disconnects from Event Source

Dim x As New TestClass( ), y As New TestClass( )AddHandler x.anEvent, AddressOf HandleEventAddHandler y.anEvent, AddressOf HandleEvent...

Sub HandleEvent(ByVal i As Integer) ...End Sub

Dim x As New TestClass( ), y As New TestClass( )AddHandler x.anEvent, AddressOf HandleEventAddHandler y.anEvent, AddressOf HandleEvent...

Sub HandleEvent(ByVal i As Integer) ...End Sub

Page 39: Object-Oriented Programming in Visual Basic.NET. Overview Defining Classes Creating and Destroying Objects Inheritance Interfaces Working with Classes

Demonstration: Handling Events

Page 40: Object-Oriented Programming in Visual Basic.NET. Overview Defining Classes Creating and Destroying Objects Inheritance Interfaces Working with Classes

What Are Delegates?

Objects That Call the Methods of Other Objects

Similar to Function Pointers in Visual C++

Reference Type Based on the System.Delegate Class

Type-safe, Secure, Managed Objects

Example:

Useful as an intermediary between a calling procedure and the procedure being called

Page 41: Object-Oriented Programming in Visual Basic.NET. Overview Defining Classes Creating and Destroying Objects Inheritance Interfaces Working with Classes

Using Delegates

Delegate Keyword Declares a Delegate and Defines Parameter and Return Types

Methods Must Have the Same Function Parameter and Return Types

Use Invoke Method of Delegate to Call Methods

Delegate Function CompareFunc( _ByVal x As Integer, ByVal y As Integer) As Boolean

Delegate Function CompareFunc( _ByVal x As Integer, ByVal y As Integer) As Boolean

Page 42: Object-Oriented Programming in Visual Basic.NET. Overview Defining Classes Creating and Destroying Objects Inheritance Interfaces Working with Classes

Comparing Classes to Structures

Classes Structures

Can define data members, properties, and methods

Can define data members, properties, and methods

Supports constructors and member initialization

No default constructor or member initialization

Support Finalize method Do not support Finalize method; implement IDisposable

Extensible by inheritance Do not support inheritance

Reference type Value type

Page 43: Object-Oriented Programming in Visual Basic.NET. Overview Defining Classes Creating and Destroying Objects Inheritance Interfaces Working with Classes

Review

Defining Classes

Creating and Destroying Objects

Inheritance

Interfaces

Working with Classes