Advanced Object Oriented Concepts
Download
Report
Transcript Advanced Object Oriented Concepts
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
Turn left
Turn right
Brake
Go
same things
Plan #1 - Van, Car and Truck Objects
Create one class for each vehicle
Van
Car
Truck
Van
Car
Truck
TurnLeft()
TurnLeft()
TurnLeft()
TurnRight()
TurnRight()
TurnRight()
Brake()
Brake()
Brake()
Go()
Go()
Go()
Plan #1 - Advantages
It’s quick and easy to understand
Van
Car
Truck
TurnLeft()
TurnLeft()
TurnLeft()
TurnRight()
TurnRight()
TurnRight()
Brake()
Brake()
Brake()
Go()
Go()
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
Car
Truck
TurnLeft() -> Left()
TurnLeft()
TurnLeft()
TurnRight() -> Right()
TurnRight()
TurnRight()
Brake()
Brake()
Brake()
Go()
Go() -> Move()
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
A change in the method name in the parent automatically changes the children.
Method code is consistent and easy to maintain
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
Truck
TurnLeft() -> Left()
TurnRight() -> Right()
Brake()
Go()
TurnLeft() -> Left()
TurnRight() -> Right()
Brake()
Go()
Plan #2 – Disadvantages
Inheritance requires special code
Inheritance requires more understanding
Vehicle
TurnLeft()
TurnRight()
Brake()
Go()
Car
Truck
TurnLeft()
TurnRight()
Brake()
TurnLeft()
TurnRight()
Brake()
Go()
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
Truck
TurnLeft()
TurnRight()
Brake()
Go()
TurnLeft()
TurnRight()
Brake()
Go()
ConservePetrol()
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
Dim FirstName as String
Type
Can be used by
code inside the
same project
Protected
Same as Private
Friend
Name
Can only be used
by code inside the
same class
Dim
Can be used by
everything
Private
Access Specifier
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
Car
RentalCar
TurnLeft()
TurnLeft()
TurnRight()
Brake()
Go()
ConservePetrol()
TurnLeft()
TurnRight()
Brake()
Go()
ConservePetrol()
RentalPrice()
TurnRight()
Brake()
Go()
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
DVD Player
detailing how an object is used
Play()
Pause()
Using this interface, I know how to
Stop()
use the DVDPlayer Object
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.