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.