logo lecturer: abdullahi salad abdi may 1, 2015 1 object oriented programming in c++
TRANSCRIPT
LOGO
Lecturer: Abdullahi Salad Abdi
April 18, 20231
Object Oriented Programming in
C++
LOGO
Chapter 9 Inheritance &
Polymorphism
Class: BIT02
LOGO
Objectives Inheritance categories of Inheritance Protected Access Specifier Types of Inheritance
Public Private Protected
Derived Class Constructors Multiple Inheritance
3
LOGO
Inheritance
Inheritance is the second most important feature of the Object Oriented Programming. In inheritance, the code of existing classes is used for making new classes. This saves time for writing and debugging the entire code for a new class.
4
LOGO
Cont….To inherit means to receive. In inheritance
a new class is written such that it can access or use the members of an existing class.
The new class that can access the members of an existing class is called the derived class or child class. The existing class is called the base class or parent class.
5
LOGO
Defining a ClassThe derived class can use the data
members and member functions of the base class.
It can also have its own data members and member functions. Thus a derived class can be larger than a base class.
6
LOGO
Figure
7
Member 1
Member 2
Member 2
Member 1
Member 3
LOGO
Cont…
The figure shows the relationship between a derived class and the base class. The arrow is drawn from the derived class to the base class.
The direction of the arrow indicates that the
derived class can access members of the base class but the base class cannot access member of its derived class.
8
LOGO
Cont…
The idea of inheritance implements the is a relationship.
For example, mammal IS-A animal, dog IS-A mammal hence dog IS-A animal as well and so on.
9
LOGO
Types of Inheritance
1. Single Inheritance: It is the inheritance hierarchy wherein one derived class inherits from one base class.
10
LOGO
Real life example
All Cars are Vehicles.All Motorcycles are Vehicles.All Sedans are Vehicles.Vehicles is the base class.Car is a derived class.Truck derives from Vehicle.
Everything about beinga Vehicle is inherited byCars and Trucks andSUVs.
LOGO
Types of Inheritance
2. Multiple Inheritance: It is the inheritance hierarchy wherein one derived class inherits from multiple base class(es)
12
LOGO
Types of Inheritance
3. Hierarchical Inheritance: It is the inheritance hierarchy wherein multiple subclasses inherit from one base class.
13
LOGO
Types of Inheritance
4. Multilevel Inheritance: It is the inheritance hierarchy wherein subclass acts as a base class for other classes.
14
LOGO
Types of Inheritance
5. Hybrid Inheritance: The inheritance hierarchy that reflects any legal combination of other four types of inheritance.
15
LOGO
Protected Access Specifier
The public members of a class are accessible by all functions in the program and the private members of a class are accessible only by member functions and friend functions of that class.
Similarly, the protected members of a class are accessible by the member functions and friend functions of that class.
16
LOGO
Cont….
The protected members of a base class are, however, accessible by members of its derived classes
but the private members of the base class are not accessible directly by members of its derived classes .This is the main difference between the protected and the private access specifiers.
17
LOGO
Cont…
The protected members of a base class fall between private and public member. These members are public for the derived class but for the rest of the program, these are treated as private.
18
LOGO
Defining Derived Classes
The syntax for defining a derived class is highly different from the syntax of the base class definition. The declaration of a derived class also includes the name of the base class from which it is derived.
19
LOGO
Syntax
Class sub_class_name : specifier base_class_name
{
--------
Members of derived class
---------
};
20
LOGO
Example A class “student” is defined as
Class student
{
Private:
Char name[15], address[15];
Public:
Void input(void)
Void show(void)
};
21
LOGO
Example
The class student has two data members and to member functions.
Suppose the marks obtained by a student in three subjects and the total marks of these subjects are to be included as new data members in the above class. This is done by adding new members in the class. There are two ways in which these new members can be added to the class. These are:
22
LOGO
Example
Add new member in the original class
ORDefine a new class that has the new members
and that also uses members of the existing “student” class. Using the members of an existing class is the principle of inheritance.
The new class is the derived class. The existing class serves as the base class for the derived class.
23
LOGO
Example
Driving a new class from the existing class reduces the size of the program. It also eliminates duplication of code within the program.
For example, let the name of the new class be marks. This class uses the members of the existing student class.
24
LOGO
Cont…
Class marks : public student
{
Private:
Int s1,s2,s3,total;
Public:
Void inputmarks(void)
Void show_details(void)
};
25
Example
LOGO
Types of Inheritance
There are three kinds of inheritance
PublicPrivate Protected
26
LOGO
Public inheritance
In Publilc Inheritance, the public members of the base class become the public members of the derived class. Thus the objects of the derived class can access public members (both data and functions) of the base class. Similarly, the protected data members of the base class also become the protected members of derived class.
27
LOGO
Public inheritance Syntax
The general syntax for deriving a public class from base class is:
Class sub_class_name : public base_class_name
{
--------------
--------------
--------------
};28
Example
LOGO
Private Inheritance
In private inheritance, the objects of the derived class cannot access the public members of the base class. Its objects can only access the protected data members of the base class.
Class sub_class_name : private base_class_name
{
--------------
--------------
--------------
};29
Example
LOGO
Protected Inheritance
The object of the base class that is derived as protected can access only the protected member of the base class.
Class sub_class_name : protected base_class_name
{
--------------
--------------
--------------
}; 30
LOGO
Protected Inheritance
WhereProtected specifies the
protected inheritanceSub_class_name represents name of
the derived classBase_class_name represents name of the
base class
31
Example
LOGO32
LOGO
Derived Class Constructor
In inheritance, a constructor of the derived class as well the constructor functions of the base class are automatically executed when an object of the derived class is created.
The following example explains the concept of execution of constructor functions in single inheritance.
33
Example
LOGO
Constructor in Single Inheritance with Arguments
In case of constructor functions with arguments, the syntax to define constructor of the derived class is different. To execute a constructor of the base class that has arguments through the derived class constructor is defined as:
Write the name of the constructor function of the derived class with parameters
Pace a colon immediately after this and then write the name of the constructor function of thee base class with parameters34
Example
LOGO
Multiple Inheritance
In multiple inheritance, a class is derived by using more than one classes. In multiple inheritance the derived class receives the members of two or more base classes.
Multiple inheritance is a powerful feature of Object Oriented Programming. This technique reduces the program size and saves programmer’s time. The programmer uses the existing base classes in the program coding to solve problems.
35
LOGO
Multiple Inheritance
The figure sown below illustrates the relation of derived class with base class.
36
Base Class
A
Base Class
B
Derived Class C
LOGO
Syntax
The syntax of multiple inheritance is similar to that single inheritance class. The names of base classes are written separated by commas (,).
The general Syntax is:
37
LOGO
Syntax
Class sub_class: sp1 b_class_1, sp2 bclass_2, ……..
{
-----------
Members of derived class
------------
};
Where:sp1 specifies the access specifier of the first base
classSp2 specifies the access specifier of the second
base class
38
LOGO
Syntax
Where:sp1 specifies the access specifier of the first
base classSp2 specifies the access specifier of the
second base class
39
Example
LOGO
Constructors in Multiple Inheritance
When a class is derived from more than one base classes, the constructor of the derived class as well as of all its base classes are executed when an object of the derived class is created.
If constructor function have no parameters than first the constructor functions of the base classes are executed and then the constructor functions of the derived class is executed.
40
Example
LOGO
Constructors in Multiple Inheritance with Arguments
To execute constructors of base classes that have arguments through the derived constructor functions, the derived class constructor is defined as:
Write a constructor function of the derived class with parameters
Place a colon (:) immediately after this and then write the constructor function names of base classes with parameters separated by commas.
41
Example
LOGO
Cont…