Advanced Object Oriented Concepts

advertisement

Advanced Object

Oriented Concepts

Tonga Institute of Higher

Education

Inheritance Similarities

“You look just like your father.”

 People inherit features from their parents:

 Eye color

 Hair color

 Height

 You are similar to your parents

Inheritance in Visual Basic .Net

 Inheritance – When a class inherits members from another class

 Objects are like people. They can have children!

 Children can inherit variables from a parent

 Children can inherit methods from a parent

Parent / Base Class

Child / Sub Class

History of Inheritance

 In the sixties, a programmers created a program to simulate traffic

 They used objects for their vehicles

Cars

Trucks

Vans

 They noticed that all vehicles did the same things

Turn left

Turn right

Brake

Go

Plan #1 - Van, Car and Truck Objects

 Create one class for each vehicle

 Van

 Car

 Truck

Van

TurnLeft()

TurnRight()

Brake()

Go()

Car

TurnLeft()

TurnRight()

Brake()

Go()

Truck

TurnLeft()

TurnRight()

Brake()

Go()

Plan #1 - Advantages

It’s quick and easy to understand

Van

TurnLeft()

TurnRight()

Brake()

Go()

Car

TurnLeft()

TurnRight()

Brake()

Go()

Truck

TurnLeft()

TurnRight()

Brake()

Go()

Plan #1 - Disadvantages

 Code is repeated in each object

 Changing the code in Brake() requires 3 changes to 3 different objects

 Method names can be changed.

 After a while, the objects are not similar

Van

TurnLeft() -> Left()

TurnRight() -> Right()

Brake()

Go()

Car

TurnLeft()

TurnRight()

Brake()

Go() -> Move()

Truck

TurnLeft()

TurnRight()

Brake()

Go() -> Start()

Plan #2 - Inheritance

 Make one object with common methods.

 The code in the parent object is used in the child objects.

Vehicle

TurnLeft()

TurnRight()

Brake()

Go()

Car

TurnLeft()

TurnRight()

Brake()

Go()

Methods in the parent come down to the children!

Truck

TurnLeft()

TurnRight()

Brake()

Go()

Plan #2 – Advantages

A change in the method code in the parent automatically changes the children classes

 Method code is consistent and easy to maintain

A change in the method name in the parent automatically changes the children.

 Names are consistent and easy to maintain

We can change a class that someone else created

 It is difficult to write your own button class. But we can add changes to the button class using inheritance

Vehicle

TurnLeft() -> Left()

TurnRight() -> Right()

Brake()

Go()

Car

TurnLeft() -> Left()

TurnRight() -> Right()

Brake()

Go()

Truck

TurnLeft() -> Left()

TurnRight() -> Right()

Brake()

Go()

Plan #2 – Disadvantages

Inheritance requires special code

Inheritance requires more understanding

Vehicle

TurnLeft()

TurnRight()

Brake()

Go()

Car

TurnLeft()

TurnRight()

Brake()

Go()

Truck

TurnLeft()

TurnRight()

Brake()

Go()

Inheritance Differences

“You look just like your father.”

 People inherit features from their parents:

 Eye color

 Hair color

 Height

 You are similar to your parents.

“But you are much taller”

 You are also different from them.

Inheritance Differences

 Each child object can have additional different members.

Vehicle

TurnLeft()

TurnRight()

Brake()

Go()

Car

TurnLeft()

TurnRight()

Brake()

Go()

ConservePetrol()

Truck

TurnLeft()

TurnRight()

Brake()

Go()

CarryLoad()

Example of

Parent / Base

Class

All non-private members are shared with child classes

Example of Child / Sub Class

Special keyword that brings members from parent

Child specific classes

Example of Driver for Inheritance

 Inherited classes work exactly like a normal class

 There is no difference when using an inherited method and a non-inherited method

Demonstration

Inheritance Code

Inheritance in VB.Net Classes

 Look in the class definitions.

 Almost every class inherits from another class!

Demonstration

Inheritance in VB .Net

Classes

Access Specifiers

Public

 Can be used by everything

Private

 Can only be used by code inside the same class

Dim

 Same as Private

Friend

 Can be used by code inside the same project

Access Specifier

Name

Dim FirstName as String

Type

Protected

 Can be used by code that inherits from this class

Protected Friend

 Combination of Protected and

Friend

Demonstration

Access Specifiers

Multi-Level Inheritance

 When a subclass is also a base class.

Vehicle

TurnLeft()

TurnRight()

Brake()

Go()

Car

TurnLeft()

TurnRight()

Brake()

Go()

ConservePetrol()

RentalCar

TurnLeft()

TurnRight()

Brake()

Go()

ConservePetrol()

RentalPrice()

Demonstration

Multi-Level Inheritance

Overriding Base Methods

Overriding – When a child class replaces the behavior of a method defined in a base class.

To override (replace) a method:

 Define a method in the parent class to be overridable

 Define a method in the child class to override

Parent Class

Child Class

Demonstration

Overriding Base Methods

MyBase

 Use in a child class

 Use the MyBase keyword to call methods in a base class.

Demonstration

MyBase

MyClass and Me 1

 If inheritance is not used, they work the same way.

MyClass and Me 2

If inheritance is used, use these in parent classes

Use the MyClass keyword to call methods in the class this keyword is used.

Use the Me keyword to call methods in the current instance.

Demonstration

MyClass and Me

Abstract Classes and Methods

Abstract class – A class that must be inherited from

An abstract class cannot be instantiated

MustInherit – Used to make a class abstract

Abstract method – A method that must be overridden

Method code does not exist in the base class because it will be overridden

MustOverride – Used to make a method abstract

Demonstration

Abstract Class or Method

Preventing Inheritance

 NotInheritable – Used to make a class uninheritable.

Demonstration

Preventing Inheritance

Introduction to Interfaces 1

All DVD players have the same controls, even if they are made by different companies (Sony, Panasonic,

Toshiba, etc.)

The buttons are a contract for how to operate the DVD player

An interface is a contract detailing how an object is used

Using this interface, I know how to use the DVDPlayer Object

DVD Player

Play()

Pause()

Stop()

Rewind()

FastForward()

Introduction to Interfaces 2

 All DVD players have the same controls, even if they are made by different companies (Sony,

Panasonic, Toshiba, etc.)

 But these different companies are not related to each other

 This is the difference between interfaces and inheritance

Defining an Interface

Defining an interface tells the computer that any class that uses this interface is guaranteed to have the elements described in the interface

Example: Any class that implements the ISummary will have these functions and properties

GetShortSummary

GetFullSummary

HasFullSummary

Demonstration

Defining an Interface

Implementing an Interface

Demonstration

Implementing an Interface

Primary/Native Interfaces vs.

Secondary Interfaces

Primary/Native Interface of a class is composed of all the members defined in a class

 Secondary Interfaces involves the implementation of other interfaces

Secondary

Interface

Primary

Interface

Abstract Classes vs. Interfaces

 It is sometimes difficult to tell the difference between an abstract class and an interface

 An abstract class is a class that cannot be instantiated, but must be inherited from

 An interface, by contrast, is a set of members that defines a contract for conduct

Abstract Classes vs. Interfaces 2

 It is sometimes also difficult to decide whether to use an abstract class or an interface

 A consideration is that a class may implement more than one interface. A class may only inherit from only

1 class.

 Abstract classes are best for objects that are closely related. Interfaces are best for providing common functionality to unrelated classes.

 Use an abstract class to provide members that use the same code among many objects. Interfaces only force classes to have the same member names.

Download