Advanced Object
Oriented Concepts
Tonga Institute of Higher
Education
“You look just like your father.”
People inherit features from their parents:
Eye color
Hair color
Height
You are similar to your parents
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
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()
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()
“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.
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()
All non-private members are shared with child classes
Special keyword that brings members from parent
Child specific classes
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
Look in the class definitions.
Almost every class inherits from another class!
Demonstration
Inheritance in VB .Net
Classes
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
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 – 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
Use in a child class
Use the MyBase keyword to call methods in a base class.
Demonstration
MyBase
If inheritance is not used, they work the same way.
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 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
NotInheritable – Used to make a class uninheritable.
Demonstration
Preventing Inheritance
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()
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 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
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
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
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.