object-oriented application development using vb.net 1 chapter 8 understanding inheritance and...

42
Object-Oriented Application Development Using VB .NET 1 Chapter 8 Understanding Inheritance and Interfaces

Upload: gertrude-walton

Post on 13-Dec-2015

227 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Object-Oriented Application Development Using VB.NET 1 Chapter 8 Understanding Inheritance and Interfaces

Object-Oriented Application Development Using VB .NET

1

Chapter 8

Understanding Inheritance and

Interfaces

Page 2: Object-Oriented Application Development Using VB.NET 1 Chapter 8 Understanding Inheritance and Interfaces

Object-Oriented Application Development Using VB .NET

2

Objectives

In this chapter, you will:

• Implement the Boat generalization/specialization class hierarchy

• Understand abstract and final classes

• Override a superclass method

• Understand private versus protected access

• Explore the Lease subclasses and abstract methods

• Understand and use interfaces

• Use custom exceptions

• Understand the Object class and inheritance

Page 3: Object-Oriented Application Development Using VB.NET 1 Chapter 8 Understanding Inheritance and Interfaces

Object-Oriented Application Development Using VB .NET

3

Implementing the Boat Generalization/Specification Hierarchy

• Boat class– Stores information

about a boat• State registration

number

• Length

• Manufacturer

• Model year

Page 4: Object-Oriented Application Development Using VB.NET 1 Chapter 8 Understanding Inheritance and Interfaces

Object-Oriented Application Development Using VB .NET

4

Implementing the Boat Generalization/Specification Hierarchy

• Boat class– Parameterized constructor

• Accepts values for all four attributes

– Eight standard accessor methods• Four setter methods • Four getter methods

– TellAboutSelf method (overridable method)

Page 5: Object-Oriented Application Development Using VB.NET 1 Chapter 8 Understanding Inheritance and Interfaces

Object-Oriented Application Development Using VB .NET

5

Public Class Boot

Private StateRegistrationNumber As String

Private length As Single

Private manufacturer As String

Private year As Integer

Public Sub New(ByVal stRNo As String, ByVal len As Single, _

ByVal manufact As String, ByVal ModYear As Integer)

'call setters

End Sub

'Four setter methods

'Four getter methods

Public Overridable Function tellAboutSelf( ) As String

Return StateRegistrationNumber & " , " & length & " , " & _

manufacturer & " , " & year

End Function

End Class

Class Boot DefinitionClass Boot Definition

Page 6: Object-Oriented Application Development Using VB.NET 1 Chapter 8 Understanding Inheritance and Interfaces

Object-Oriented Application Development Using VB .NET

6

Using the Inherits Keyword to Create the Sailboat Subclass

• Generalization/specialization hierarchy– Superclass

• Includes attributes and methods that are common to specialized subclasses

• Boat class– Common (Four attributes and eight accessor methods)

– Instances of the subclasses• Inherit attributes and methods of the superclass• Include additional attributes and methods • Subclasses

– Sailboat» Three additional attributes

– Powerboat» Two additional attributes

Page 7: Object-Oriented Application Development Using VB.NET 1 Chapter 8 Understanding Inheritance and Interfaces

Object-Oriented Application Development Using VB .NET

7

Using the Inherits Keyword to Create the Sailboat Subclass

Page 8: Object-Oriented Application Development Using VB.NET 1 Chapter 8 Understanding Inheritance and Interfaces

Object-Oriented Application Development Using VB .NET

8

Using the Inherits Keyword to Create the Sailboat Subclass

• Inherits keyword– Used in the class header to implement a subclass

– Indicates which class the new class is extending

– Example: • Class header to define the Sailboat class as a

subclass of Boat:

Public Class Sailboat

Inherits Boat

Page 9: Object-Oriented Application Development Using VB.NET 1 Chapter 8 Understanding Inheritance and Interfaces

Object-Oriented Application Development Using VB .NET

9

Using the Inherits Keyword to Create the Sailboat Subclass

• Sailboat constructor – Accepts seven parameters

• Four for attributes defined in the Boat superclass• Three for additional attributes defined in Sailboat

– MyBase.New call (reusability)• Used to set attributes for registration number,

length, manufacturer, and year • Must be the first statement in the constructor

Page 10: Object-Oriented Application Development Using VB.NET 1 Chapter 8 Understanding Inheritance and Interfaces

Object-Oriented Application Development Using VB .NET

10

Adding a Second Subclass – Powerboat

• Powerboat class– Extends the Boat class– Declares two attributes:

• numberEngines• fuelType

– Constructor expects six parameters• Four required by Boat• Two additional attributes for Powerboat

• Once the boats are created– Four getter methods inherited from Boat

• Can be invoked for both sailboats and powerboats

– Two additional getter methods of Powerboats• Not present in sailboats

Page 11: Object-Oriented Application Development Using VB.NET 1 Chapter 8 Understanding Inheritance and Interfaces

Object-Oriented Application Development Using VB .NET

11

Understanding Abstract and Final Classes

• 1. Concrete classes1. Classes that can be instantiated

2. It may have subclasses.

– Examples• Boot• Sailboat class • Powerboat class

Page 12: Object-Oriented Application Development Using VB.NET 1 Chapter 8 Understanding Inheritance and Interfaces

Object-Oriented Application Development Using VB .NET

12

Using the MustInherit Keyword

• 2. Abstract class– Not intended to be instantiated

– Only used to extend into subclasses

– Used to facilitate reuse

– MustInherit keyword is used in class header to declare an abstract class

– Example:

Public MustInherit Class Boat

Page 13: Object-Oriented Application Development Using VB.NET 1 Chapter 8 Understanding Inheritance and Interfaces

Object-Oriented Application Development Using VB .NET

13

Using the NotInheritable Keyword

• 3. A Final class– A class that cannot be extended– Created for security purposes or efficiency– For example, in payroll program, PayCheck class

(calculate payment amount) should be final to prevent its extending.

– Created using the NotInheritable keyword– Example

Public NotInheritable Class Powerboat

Inherits Boat

Page 14: Object-Oriented Application Development Using VB.NET 1 Chapter 8 Understanding Inheritance and Interfaces

Object-Oriented Application Development Using VB .NET

14

Overriding a Superclass Method

• Method overriding

– Method in subclass will be invoked instead of

method in the superclass if both methods have the

same signature

– Allows the subclass to modify the behavior of the

superclass

Page 15: Object-Oriented Application Development Using VB.NET 1 Chapter 8 Understanding Inheritance and Interfaces

Object-Oriented Application Development Using VB .NET

15

Overriding a Superclass Method

• Method overriding vs. method overloading

– Overloading

• Two or more methods in the same class have the

same name but have different signatures.

– Overriding (in inheritance situation only)

• Methods in both the superclass and subclass have

the same signature

• EX: TellaboutSelf() is defined in both boat &

powerBoat.

• Overridable keyword included in method header (in

the super class).

Page 16: Object-Oriented Application Development Using VB.NET 1 Chapter 8 Understanding Inheritance and Interfaces

Object-Oriented Application Development Using VB .NET

16

Overriding and Invoking a Superclass Method

• Sometimes the programmer needs to override a method by extending what the method does

• For example– Powerboat TellAboutSelf method invokes the

superclass method using• MyBase keyword, &• Superclass method name

– Overrides included in subclass.

Public Overrides Function tellAboutSelf() As StringReturn mybase.tellAboutSelf() & numberSails & ..

End Function

Page 17: Object-Oriented Application Development Using VB.NET 1 Chapter 8 Understanding Inheritance and Interfaces

Object-Oriented Application Development Using VB .NET

17

Overriding, Polymorphism, and Dynamic Binding

• Polymorphism can be applied by inheritance– Objects of different classes can respond to the same

message in their own way– Examples:-

• tellAboutSelef( ) method in Boot, SailBoot, and PowerBoot

• calculateFee( ) method in Lease, AnnualLease, and DailyLease

Page 18: Object-Oriented Application Development Using VB.NET 1 Chapter 8 Understanding Inheritance and Interfaces

Object-Oriented Application Development Using VB .NET

18

Understanding Private Versus Protected Access

• Declaring attributes as private– Done by using Private keyword

– No other object can directly read or modify the values• Other objects must use methods of the class to get

or set values

– Ensures encapsulation and information hiding

– Limits the ability of an instance of a subclass to directly access attributes defined by the superclass

Page 19: Object-Oriented Application Development Using VB.NET 1 Chapter 8 Understanding Inheritance and Interfaces

Object-Oriented Application Development Using VB .NET

19

Understanding Private Versus Protected Access

• Declaring attributes as Protected– Done by using Protected keyword

– Values can be directly accessed by only their classes & the subclasses.

• Local variables– Accessible only to statements within a method where

it is declared

– Exists only as long as the method is executing

– Does not need to be declared as private, protected, friend, or public

Page 20: Object-Oriented Application Development Using VB.NET 1 Chapter 8 Understanding Inheritance and Interfaces

Object-Oriented Application Development Using VB .NET

20

Understanding Private Versus Protected Access

• Methods– Private methods

• Can only be invoked from a method within the class• Cannot be invoked even by subclass methods

– Protected methods• Can be invoked by a method in a subclass

Page 21: Object-Oriented Application Development Using VB.NET 1 Chapter 8 Understanding Inheritance and Interfaces

Object-Oriented Application Development Using VB .NET

21

Introducing the Lease Subclasses and Abstract Methods

• Lease class– Subclasses

• AnnualLease• DailyLease

– Attributes• Amount: a numeric value• Start date: a reference variable• End date : a reference variable

– Defined as abstract• Includes MustInherit keyword in header

Page 22: Object-Oriented Application Development Using VB.NET 1 Chapter 8 Understanding Inheritance and Interfaces

Object-Oriented Application Development Using VB .NET

22

Introducing the Lease Subclasses and Abstract Methods

Page 23: Object-Oriented Application Development Using VB.NET 1 Chapter 8 Understanding Inheritance and Interfaces

Object-Oriented Application Development Using VB .NET

23

Introducing the Lease Subclasses and Abstract Methods

• Lease class constructor– Accepts one parameter

• A reference to a DateTime instance for start date of the lease

– Sets end date to Nothing

– Sets amount of the lease to zero

• Subclasses set end date and calculate amount depending on type of the lease

Page 24: Object-Oriented Application Development Using VB.NET 1 Chapter 8 Understanding Inheritance and Interfaces

Object-Oriented Application Development Using VB .NET

24

Adding an Abstract Method to Lease

• Sometimes it is desirable to require all subclasses to include a method

• All Lease subclasses need a CalculateFee method– Subclasses are responsible for determining what

the lease amount will be

– Necessary for polymorphism

Page 25: Object-Oriented Application Development Using VB.NET 1 Chapter 8 Understanding Inheritance and Interfaces

Object-Oriented Application Development Using VB .NET

25

Adding an Abstract Method to Lease

• Abstract method– A method without any statements that must be

overridden by all subclasses

– Declared by using MustOverride keyword in method header

– For example• CalculateFee method of the Lease class

– If a class has an abstract method, it should be also an abstract class.

Page 26: Object-Oriented Application Development Using VB.NET 1 Chapter 8 Understanding Inheritance and Interfaces

Object-Oriented Application Development Using VB .NET

26

Lease ClassPublic MustInherit Class Lease Private amount As Double Private startDate As DateTime Private endDate As DateTime

Public Sub New(ByVal aStartDate As DateTime) setStartDate(aStartDate)

setAmount(0) setEndDate(Nothing) End Sub

Public MustOverride Function calculateFee(ByVal aWidth As Integer) As Single

'tellAboutSelf method 'Setters 'Getters

End Class

Page 27: Object-Oriented Application Development Using VB.NET 1 Chapter 8 Understanding Inheritance and Interfaces

Object-Oriented Application Development Using VB .NET

27

Implementing the AnnualLease Subclass

• AnnualLease subclass attributes– balanceDue

• The amount of the annual lease that remains unpaid

– payMonthly: Boolean• Indicates whether monthly payments will be made

for the annual lease

– If payMonthly is true • balanceDue is initially set to eleven-twelfths of the

lease amount

– If payMonthly is false• balanceDue will be zero

Page 28: Object-Oriented Application Development Using VB.NET 1 Chapter 8 Understanding Inheritance and Interfaces

Object-Oriented Application Development Using VB .NET

28

Implementing the AnnualLease SubclassPublic Class AnnualLease Inherits Lease Private balanceDue As Single Private payMonthly As Boolean

Public Sub New(ByVal sd As DateTime, ByVal w As Integer, ByVal isPM _ As Boolean)

MyBase.New(sd) Dim DateYearLater As DateTime = sd.AddYears(1) setEndDate(DateYearLater) setAmount(calculateFee(w)) setPayMonthly(isPM) If isPM Then setBalanceDue(getAmount() - getAmount() / 12) Else setBalanceDue(0) End If End Sub

Page 29: Object-Oriented Application Development Using VB.NET 1 Chapter 8 Understanding Inheritance and Interfaces

Object-Oriented Application Development Using VB .NET

29

Implementing the AnnualLease Subclass

Public Overrides Function calculateFee(ByVal aWidth As Integer) As Single

Dim fee As Single

Select Case aWidth

Case 10

fee = 800

:

End Select

Return fee

End Function

' setPayMonthly( )

' setBalanceDue( )

End Class

Page 30: Object-Oriented Application Development Using VB.NET 1 Chapter 8 Understanding Inheritance and Interfaces

Object-Oriented Application Development Using VB .NET

30

Implementing the DailyLease Subclass

• DailyLease

– A subclass of the Lease class

– Used when a customer leases a slip for a short

time

– Additional attribute

• Number of days of the lease

– Calculated based on the start date and end date

Page 31: Object-Oriented Application Development Using VB.NET 1 Chapter 8 Understanding Inheritance and Interfaces

Object-Oriented Application Development Using VB .NET

31

Understanding and Using Interfaces

• An interface

– Defines abstract methods that must be implemented by

classes that use the interface.

– Can be used to ensure that an instance has a defined

set of methods.

• Component-based development

– Components interact in a system using a well-defined

interfaces.

– Components might be built using a variety of

technologies.

– Play an important role in developing component-based

systems

Page 32: Object-Oriented Application Development Using VB.NET 1 Chapter 8 Understanding Inheritance and Interfaces

Object-Oriented Application Development Using VB .NET

32

Understanding and Using Interfaces

• A VB .NET class

– Can inherit from only one superclass

– Can implement one or more interfaces

• Interfaces allow VB .NET mimics the multiple inheritance,

which refers to the ability to inherit from more than one

direct class.

Page 33: Object-Oriented Application Development Using VB.NET 1 Chapter 8 Understanding Inheritance and Interfaces

Object-Oriented Application Development Using VB .NET

33

Creating a VB .NET Interface

• Interface– Name (by convention)

• Begins with a capital letter “I”• Uses the word “interface” as a last word.

– Methods• Include no code

– ExamplePublic Interface ILeaseInterface

' all lease classes must include calculateFee method

Function calculateFee(ByVal aWidth As Integer) As Single

End Interface

Page 34: Object-Oriented Application Development Using VB.NET 1 Chapter 8 Understanding Inheritance and Interfaces

Object-Oriented Application Development Using VB .NET

34

Creating a VB .NET Interface• A class implementing an interface :

– Example

Public Class AnnualLease Inherits Lease Implements ILeaseInterface Public Function calculateFee(ByVal aWidth As Integer) As Single _

Implements ILeaseInterface.calculateFee

Dim fee As Single Select Case aWidth Case 10 fee = 800

: End Select Return fee End Function

End Class

Page 35: Object-Oriented Application Development Using VB.NET 1 Chapter 8 Understanding Inheritance and Interfaces

Object-Oriented Application Development Using VB .NET

35

Implementing More Than One Interface

• To implement more than one interface– Use Implements keyword in the class header

– Separate multiple interface names by commas

– For example:

Public Class DailyLease

Inherits Lease

Implements ILeaseInterface, ICompanyInterface

Page 36: Object-Oriented Application Development Using VB.NET 1 Chapter 8 Understanding Inheritance and Interfaces

Object-Oriented Application Development Using VB .NET

36

Using Custom Exceptions

• Custom exception (An example of extending a built-in class)– An exception written specifically for an application

– Exception is not abstract class (it is a concrete class).

• Defining LeasePaymentException– Created by defining a class that extends the

Exception class

– Designed for use by the AnnualLease class

– Thrown if payment is invalid.

Page 37: Object-Oriented Application Development Using VB.NET 1 Chapter 8 Understanding Inheritance and Interfaces

Object-Oriented Application Development Using VB .NET

37

Client Class

(Form)

Dim AI as _ AnnualLease

……

Try

Al.RecordLeasePayment(20)

Catch

…….

Server Class

(AnnualLease )

……

RecordLeasePayment Difnition

•It may throw ex. If value is not valid.

Custom Exception

(LeasePaymentException)

1

1

a LeasePaymentException

Instance

Page 38: Object-Oriented Application Development Using VB.NET 1 Chapter 8 Understanding Inheritance and Interfaces

Object-Oriented Application Development Using VB .NET

38

Public Class LeasePaymentException Inherits Exception Dim theLease As AnnualLease Dim payAmount As Single Dim exceptionMessage As String

Public Sub New(ByVal anAmount As Single, ByVal aLease As _ AnnualLease)

MyBase.New("Lease payment Exception") theLease = aLease payAmount = anAmount exceptionMessage = “the amount: “ ‘ Initial value End Sub

Public Overrides Function ToString() As String Return exceptionMessage & payAmount & “ is not valid.” End FunctionEnd Class

Page 39: Object-Oriented Application Development Using VB.NET 1 Chapter 8 Understanding Inheritance and Interfaces

Object-Oriented Application Development Using VB .NET

39

Throwing a Custom Exception

• RecordLeasePayment method– A custom method defined in AnnualLease class.

– Expects to receive the amount of the payment

– Throws a LeasePaymentException instance if payment amount is not valid (more than balance)

Public sub RecordLeasePayment( Byval anA as _ Single)

If balance > anA thenBalance -= anA

Else

Throws new LeasePaymentException(anA , Me)

End if

End Sub

Page 40: Object-Oriented Application Development Using VB.NET 1 Chapter 8 Understanding Inheritance and Interfaces

Object-Oriented Application Development Using VB .NET

40

Client Code

Dim al as annualLeas()

Try

al. RecordLeasePayment(1000)

Catch

e1 AS leasePaymentException

Messagebox.show(e1.toString() )

End Try

Page 41: Object-Oriented Application Development Using VB.NET 1 Chapter 8 Understanding Inheritance and Interfaces

Object-Oriented Application Development Using VB .NET

41

Understanding the Object Class and Inheritance

• Object class– Extended by all classes in VB .NET

– Defines basic functionality that other classes need in VB .NET

– ToString method• A method of the Object class• Inherited by all classes• By default, returns a string representation of the

class name• Overridden by other classes to provide more specific

information

Page 42: Object-Oriented Application Development Using VB.NET 1 Chapter 8 Understanding Inheritance and Interfaces

Object-Oriented Application Development Using VB .NET

42

Understanding the Object Class and Inheritance

• Some other methods of the Object class– The Default New constructor

– Equals

– GetType

– Others