erie's public schools / erie's public schools | erie ...12-9 inheritance (1 of 2) •...

47
Chapter 12 OOP: Creating Object- Oriented Programs Copyright © 2011 by The McGraw-Hill Companies, Inc. All Rights Reserved. McGraw-Hill

Upload: others

Post on 22-Aug-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Erie's Public Schools / Erie's Public Schools | Erie ...12-9 Inheritance (1 of 2) • Ability to create a new class from an existing class • Original class is called Base Class,

Chapter 12

OOP:

Creating Object-

Oriented Programs

Copyright © 2011 by The McGraw-Hill Companies, Inc. All Rights Reserved. McGraw-Hill

Page 2: Erie's Public Schools / Erie's Public Schools | Erie ...12-9 Inheritance (1 of 2) • Ability to create a new class from an existing class • Original class is called Base Class,

12-2

Objectives (1 of 2)

• Use object-oriented terminology correctly.

• Create a two-tier application that separates the user

interface from the business logic.

• Differentiate between a class and an object.

• Create a class that has properties and methods.

• Declare object variables and use property procedures

to set and retrieve properties of a class.

Page 3: Erie's Public Schools / Erie's Public Schools | Erie ...12-9 Inheritance (1 of 2) • Ability to create a new class from an existing class • Original class is called Base Class,

12-3

Objectives (2 of 2)

• Assign values to the properties with a constructor.

• Instantiate an object in a project using your class.

• Differentiate between shared members and instance

members.

• Understand the purpose of the constructor and

destructor methods.

• Inherit a new class from your own class.

• Use visual inheritance by deriving a form from another

form.

Page 4: Erie's Public Schools / Erie's Public Schools | Erie ...12-9 Inheritance (1 of 2) • Ability to create a new class from an existing class • Original class is called Base Class,

12-4

Object-Oriented Programming (OOP)

• OOP is currently the most accepted style of programming.

• Java, C# and SmallTalk were designed to be OO (object oriented) from inception.

• VB and C++ have been modified to accommodate OOP.

• VB.NET 2003 was the first version of VB to be truly object oriented.

• As projects become more complex, using objects becomes increasingly important.

Page 5: Erie's Public Schools / Erie's Public Schools | Erie ...12-9 Inheritance (1 of 2) • Ability to create a new class from an existing class • Original class is called Base Class,

12-5

Objects

• VB allows the creation of new object types by

creating a class.

•Classes may have properties, methods, and

events.

• Objects are things such as buttons; buttons is a

class, but exitButton is an instance of the class—the

instance is the object.

• There may be many objects of a new class type.

Page 6: Erie's Public Schools / Erie's Public Schools | Erie ...12-9 Inheritance (1 of 2) • Ability to create a new class from an existing class • Original class is called Base Class,

12-6

"Cookie Analogy"

• Class = Cookie cutter

• Instantiate = Making a cookie using the cookie cutter

• Instance = Newly made cookie

• Properties of the Instance may have different values.

• Icing property can be True or False.

• Flavor property could be Lemon or Chocolate

• Methods = Eat, Bake, or Crumble

• Events = Cookie crumbling and informing you

Page 7: Erie's Public Schools / Erie's Public Schools | Erie ...12-9 Inheritance (1 of 2) • Ability to create a new class from an existing class • Original class is called Base Class,

12-7

Object-Oriented Terminology

• Encapsulation

• Inheritance

• Polymorphism

• Reusable Classes

• Multitier Applications

Page 8: Erie's Public Schools / Erie's Public Schools | Erie ...12-9 Inheritance (1 of 2) • Ability to create a new class from an existing class • Original class is called Base Class,

12-8

Encapsulation

• Combination of characteristics of an object

along with its behavior in "one package"

• Cannot make object do anything it does not

already "know" how to do.

• Cannot make up new properties, methods, or

events.

• Sometimes referred to as data hiding, an object

can expose only those data elements and

procedures that it wishes.

Page 9: Erie's Public Schools / Erie's Public Schools | Erie ...12-9 Inheritance (1 of 2) • Ability to create a new class from an existing class • Original class is called Base Class,

12-9

Inheritance (1 of 2)

• Ability to create a new class from an existing class

• Original class is called Base Class, Superclass, or Parent

Class.

• Inherited class is called Subclass, Derived Class, or Child

Class.

• For example, each form created is inherited from the

existing Form class.

• Purpose of inheritance is reusability.

Page 10: Erie's Public Schools / Erie's Public Schools | Erie ...12-9 Inheritance (1 of 2) • Ability to create a new class from an existing class • Original class is called Base Class,

12-10

Inheritance (2 of 2)

• Examine first line of code for a form in the Editor.

Partial Public Class Form1

Inherits System.Windows.Forms.Form

Inherited Class: Subclass, Derived Class, Child Class

Original Class: Base Class, Superclass, Parent Class

Page 11: Erie's Public Schools / Erie's Public Schools | Erie ...12-9 Inheritance (1 of 2) • Ability to create a new class from an existing class • Original class is called Base Class,

12-11

Inheritance Example

• Base Class

• Person

• Subclasses

• Employee

• Customer

• Student

The derived

classes inherit

from the base

class.

Page 12: Erie's Public Schools / Erie's Public Schools | Erie ...12-9 Inheritance (1 of 2) • Ability to create a new class from an existing class • Original class is called Base Class,

12-12

Polymorphism

• Methods having identical names, but different implementations

• Radio button, check boxes, and list boxes all have a Select method—the Select method operates appropriately for its class.

• Overloading — Several argument lists for calling the method

• Example: MessageBox.Show method

• Overriding — Refers to a method that has the same name as its base class

•Method in subclass takes precedence.

Page 13: Erie's Public Schools / Erie's Public Schools | Erie ...12-9 Inheritance (1 of 2) • Ability to create a new class from an existing class • Original class is called Base Class,

12-13

Reusability

• Big advantage of OOP over traditional programming

• New classes created can be used in multiple projects.

• Each object created from the class can have its own

properties.

Page 14: Erie's Public Schools / Erie's Public Schools | Erie ...12-9 Inheritance (1 of 2) • Ability to create a new class from an existing class • Original class is called Base Class,

12-14

Multitier Applications

• Classes are used to create multitier

applications.

• Each of the functions of a multitier application

can be coded in a separate component and

stored and run on different machines.

• Goal is to create components that can be

combined and replaced.

Page 15: Erie's Public Schools / Erie's Public Schools | Erie ...12-9 Inheritance (1 of 2) • Ability to create a new class from an existing class • Original class is called Base Class,

12-15

Three-tier Model

• Most popular implementation

Page 16: Erie's Public Schools / Erie's Public Schools | Erie ...12-9 Inheritance (1 of 2) • Ability to create a new class from an existing class • Original class is called Base Class,

12-16

Designing Your Own Class

• Analyze characteristics needed by new objects.

• Characteristics or properties are defined as variables.

• Define the properties as variables in the class module.

• Analyze behaviors needed by new objects.

• Behaviors are methods.

• Define the methods as sub procedures or functions.

Page 17: Erie's Public Schools / Erie's Public Schools | Erie ...12-9 Inheritance (1 of 2) • Ability to create a new class from an existing class • Original class is called Base Class,

12-17

Creating Properties in a Class

• Define variables inside the Class module by declaring

them as Private — these store the value of the

properties of the class.

• Do not make Public, since that would violate

encapsulation (each object should be in charge of its

own data).

Page 18: Erie's Public Schools / Erie's Public Schools | Erie ...12-9 Inheritance (1 of 2) • Ability to create a new class from an existing class • Original class is called Base Class,

12-18

Property Procedures

• Properties in a class are accessed with accessor methods in a property procedure.

• Name used for property procedure is the name of the property seen by the outside world.

• Set accessor method.

• Uses Value keyword to refer to incoming value for property

• Assigns a value to the property

• Get Statement uses the value keyword to refer to the incoming value of the property.

• Must assign a return value to the procedure name or use a Return Statement to return a value.

Page 19: Erie's Public Schools / Erie's Public Schools | Erie ...12-9 Inheritance (1 of 2) • Ability to create a new class from an existing class • Original class is called Base Class,

12-19

Property Procedure General Form

{Private | Protected } ClassVariable As DataType

[Public] Property PropertyName( ) As DataType

Get

Return ClassVariable [|PropertyName =

ClassVariable]

End Get

Set (ByVal Value As DataType)

[statements, such As validation]

ClassVariable = Value

End Set

End Property

Page 20: Erie's Public Schools / Erie's Public Schools | Erie ...12-9 Inheritance (1 of 2) • Ability to create a new class from an existing class • Original class is called Base Class,

12-20

Read-Only Properties

• In some instances, a value for a property can be

retrieved by an object but not changed.

• A property can be written to create a read-only

property.

• Create a read-only property by using the ReadOnly

modifier.

' The property procedure for a read-only property.

ReadOnly Property TotalPay() As Decimal

Get

Return TotalPayDecimal

End Get

End Property

Page 21: Erie's Public Schools / Erie's Public Schools | Erie ...12-9 Inheritance (1 of 2) • Ability to create a new class from an existing class • Original class is called Base Class,

12-21

Write-Only Properties

• At times, a property can be assigned by an object, but

not retrieved.

• Create a property block that contains only a Set to

create a write-only property.

' Private module-level variable to hold the property value.

Private PriceDecimal As Decimal

Public WriteOnly Property Price() As Decimal

Set(ByVal value As Decimal)

If value >= 0 Then

PriceDecimal = value

End If

End Set

End Property

Page 22: Erie's Public Schools / Erie's Public Schools | Erie ...12-9 Inheritance (1 of 2) • Ability to create a new class from an existing class • Original class is called Base Class,

12-22

Class Methods

• Create methods by coding public procedures within a

class.

• Methods declared with the Private keyword are

available only within the class.

• Methods declared with the Public keyword are

available to external objects.

Page 23: Erie's Public Schools / Erie's Public Schools | Erie ...12-9 Inheritance (1 of 2) • Ability to create a new class from an existing class • Original class is called Base Class,

12-23

Constructors and Destructors

• Constructor

•Method that automatically executes when an object

is instantiated

• Constructor must be public and is named New.

• Ideal location for an initialization tasks such as

setting the initial values of variable and properties

• Destructor

•Method that automatically executes when an object

is destroyed

• Rarely needed in .NET classes (automatic garbage

collection)

Page 24: Erie's Public Schools / Erie's Public Schools | Erie ...12-9 Inheritance (1 of 2) • Ability to create a new class from an existing class • Original class is called Base Class,

12-24

Overloading the Constructor

• Overloading means that two methods have the same

name but a different list of arguments (the signature).

• Create by giving the same name to multiple

procedures in a class module, each with a different

argument list.

Page 25: Erie's Public Schools / Erie's Public Schools | Erie ...12-9 Inheritance (1 of 2) • Ability to create a new class from an existing class • Original class is called Base Class,

12-25

Parameterized Constructor

• Constructor that requires arguments

• Allows arguments to be passed when creating an

object

Page 26: Erie's Public Schools / Erie's Public Schools | Erie ...12-9 Inheritance (1 of 2) • Ability to create a new class from an existing class • Original class is called Base Class,

12-26

Creating a New Class — Steps

• Project, Add Class.

• In Add New Item dialog box, choose Class.

• Name the Class.

• Define the Class properties.

• To allow access from outside the class, add property procedures.

• Code the methods.

Page 27: Erie's Public Schools / Erie's Public Schools | Erie ...12-9 Inheritance (1 of 2) • Ability to create a new class from an existing class • Original class is called Base Class,

12-27

Creating a New Object

Using a Class (1 of 2)

• Similar to creating a new tool for the toolbox but not yet creating an instance of the class

• Two-step operations • Declare a variable for the new object.

• Instantiate the object using the New keyword.

• In VB, it is ok to declare and instantiate an object at the same time.

Private TheBookSale As BookSale

TheBookSale = New BookSale( )

Or

Dim TheBookSale As New Booksale( )

Page 28: Erie's Public Schools / Erie's Public Schools | Erie ...12-9 Inheritance (1 of 2) • Ability to create a new class from an existing class • Original class is called Base Class,

12-28

Creating a New Object

Using a Class ( 2 of 2)

• If object variable is needed in multiple procedures,

declare the object at class level.

• Instantiate the object.

• May need to include a New statement

• and a Try/Catch block for error handling (Try/Catch block

must be inside a procedure.)

• The preferred technique is to include the New statement

inside of a procedure at the time the object is needed.

• Pass values for the arguments at instantiation when

using a parameterized constructor.

Page 29: Erie's Public Schools / Erie's Public Schools | Erie ...12-9 Inheritance (1 of 2) • Ability to create a new class from an existing class • Original class is called Base Class,

12-29

Instance Variables versus

Shared Variables

• Instance variables or properties

• Separate memory location for each instance of the object

• Shared variables or properties

• Single variable that is available for ALL objects of a class

• Can be accessed without instantiating an object of the

class

• When creating, use the Shared keyword to create.

• Shared properties can be set to read-only so that their

values can be retrieved but not set directly.

Page 30: Erie's Public Schools / Erie's Public Schools | Erie ...12-9 Inheritance (1 of 2) • Ability to create a new class from an existing class • Original class is called Base Class,

12-30

Shared Members in MSDN Help

Page 31: Erie's Public Schools / Erie's Public Schools | Erie ...12-9 Inheritance (1 of 2) • Ability to create a new class from an existing class • Original class is called Base Class,

12-31

.NET Automatic Garbage Collection

• Feature of .NET Common Language Runtime

(CLR) that cleans up unused components

• Periodically checks for unreferenced objects

and releases all memory and system resources

used by the objects

• Microsoft recommends depending on garbage

collection to release resources rather than

Finalize procedures.

Page 32: Erie's Public Schools / Erie's Public Schools | Erie ...12-9 Inheritance (1 of 2) • Ability to create a new class from an existing class • Original class is called Base Class,

12-32

Inheritance

• New class can:

• Be based on another class (base class)

• Inherit the properties and methods (but not

constructors) of the base class, which can be

–One of the VB existing classes

–Your own class

• Use the Inherits statement following the class

header and prior to any comments

Page 33: Erie's Public Schools / Erie's Public Schools | Erie ...12-9 Inheritance (1 of 2) • Ability to create a new class from an existing class • Original class is called Base Class,

12-33

Inheriting Properties and Methods

• Public and protected data members and methods of

the base class are inherited in the derived class.

• Must write the method in the derived class if wanting

to override the base-class method.

• Can declare elements with the Protected keyword

which specifies that the element is accessible only

within its own class or any class derived from that

class.

Page 34: Erie's Public Schools / Erie's Public Schools | Erie ...12-9 Inheritance (1 of 2) • Ability to create a new class from an existing class • Original class is called Base Class,

12-34

Constructors in Inheritance

• There is one exception for a derived class inheriting

all public and protected methods:

• A subclass cannot inherit constructors from the base

class.

• Each class must have its own constructors .

–Exception is if the only constructor needed is an empty

constructor — VB automatically creates an empty constructor

for all classes.

Page 35: Erie's Public Schools / Erie's Public Schools | Erie ...12-9 Inheritance (1 of 2) • Ability to create a new class from an existing class • Original class is called Base Class,

12-35

Overriding Methods

• Methods with the same name and the same

argument list as the base class

• Derived class (subclass) will use the new method

rather than the method in the base class.

• To override a method

• Declare the original method with the Overridable

keyword.

• Declare the new method with the Overrides keyword.

• The access modifier for the base-class procedure

can be Private or Protected (not Public).

Page 36: Erie's Public Schools / Erie's Public Schools | Erie ...12-9 Inheritance (1 of 2) • Ability to create a new class from an existing class • Original class is called Base Class,

12-36

Accessing Properties

• Derived class can set and retrieve base class

properties by using the property accessor methods.

• Call the base class constructor from the derived class

constructor to use the property values from the base

class.

• If the constructor requires arguments, the values can

be passed when the constructor is called.

Page 37: Erie's Public Schools / Erie's Public Schools | Erie ...12-9 Inheritance (1 of 2) • Ability to create a new class from an existing class • Original class is called Base Class,

12-37

Creating a Base Class Strictly for Inheritance

• Classes can be created strictly for inheritance by two

or more similar classes, and are never instantiated.

• For a base class that you intend to inherit from,

include the MustInherit modifier on the class

declaration.

• In each base class method that must be overridden,

include the MustOverride modifier and no code in the

base class method.

Page 38: Erie's Public Schools / Erie's Public Schools | Erie ...12-9 Inheritance (1 of 2) • Ability to create a new class from an existing class • Original class is called Base Class,

12-38

Inheriting Form Classes

• Many projects require several forms.

• Create a base form and inherit the visual interface to

new forms.

• Base form inherits from System.Windows.Forms.Form.

• New form inherits from Base form.

Page 39: Erie's Public Schools / Erie's Public Schools | Erie ...12-9 Inheritance (1 of 2) • Ability to create a new class from an existing class • Original class is called Base Class,

12-39

Creating Inherited Form Class

• In the Project menu, Add Windows Form.

• Modify the Inherits Statement to inherit from base form

using project name as the namespace.

• --OR--

• In the Project menu, Add Inherited Form.

• In dialog, select name of base form.

Page 40: Erie's Public Schools / Erie's Public Schools | Erie ...12-9 Inheritance (1 of 2) • Ability to create a new class from an existing class • Original class is called Base Class,

12-40

Base and Inherited Forms

Page 41: Erie's Public Schools / Erie's Public Schools | Erie ...12-9 Inheritance (1 of 2) • Ability to create a new class from an existing class • Original class is called Base Class,

12-41

Coding for Events of an Inherited Class

• Copy procedure from base class into derived class

and make modifications.

• An alternate way is to use the inherited event handler

in the derived class.

Page 42: Erie's Public Schools / Erie's Public Schools | Erie ...12-9 Inheritance (1 of 2) • Ability to create a new class from an existing class • Original class is called Base Class,

12-42

Managing Multiclass Projects

• VB projects are automatically assigned a namespace which defaults to the name of the project.

• Add an existing class to a project by copying the file into the project folder and then adding the file to the project using Project/Add Existing Item.

--OR--

• Right-click the project name in the Solution Explorer and select Add/Existing Item from the context menu.

Page 43: Erie's Public Schools / Erie's Public Schools | Erie ...12-9 Inheritance (1 of 2) • Ability to create a new class from an existing class • Original class is called Base Class,

12-43

Using the Object Browser

• Use it to view the names, properties, methods,

events, and constants of VB objects, your own

objects, and objects available from other

applications.

• To Display

• Select View/Object Browser –OR--

• Object Browser toolbar button.

Page 44: Erie's Public Schools / Erie's Public Schools | Erie ...12-9 Inheritance (1 of 2) • Ability to create a new class from an existing class • Original class is called Base Class,

12-44

The Object Browser Window

Page 45: Erie's Public Schools / Erie's Public Schools | Erie ...12-9 Inheritance (1 of 2) • Ability to create a new class from an existing class • Original class is called Base Class,

12-45

Examining VB Classes (1 of 2)

Members of

System.Windows.Forms.MessageBox Class

Page 46: Erie's Public Schools / Erie's Public Schools | Erie ...12-9 Inheritance (1 of 2) • Ability to create a new class from an existing class • Original class is called Base Class,

12-46

Examining VB Classes (2 of 2)

Display the

MessageBoxButtons Constants

Page 47: Erie's Public Schools / Erie's Public Schools | Erie ...12-9 Inheritance (1 of 2) • Ability to create a new class from an existing class • Original class is called Base Class,

12-47

Examining Your Own Classes