logo lecturer: abdullahi salad abdi may 1, 2015 1 object oriented programming in c++

42
LOGO Lecturer: Abdullahi Salad Abdi March 25, 2022 1 Object Oriented Programming in C++

Upload: quinn-toby

Post on 15-Dec-2015

217 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: LOGO Lecturer: Abdullahi Salad Abdi May 1, 2015 1 Object Oriented Programming in C++

LOGO

Lecturer: Abdullahi Salad Abdi

April 18, 20231

Object Oriented Programming in

C++

Page 2: LOGO Lecturer: Abdullahi Salad Abdi May 1, 2015 1 Object Oriented Programming in C++

LOGO

Chapter 9 Inheritance &

Polymorphism

Class: BIT02

Page 3: LOGO Lecturer: Abdullahi Salad Abdi May 1, 2015 1 Object Oriented Programming in C++

LOGO

Objectives Inheritance categories of Inheritance Protected Access Specifier Types of Inheritance

Public Private Protected

Derived Class Constructors Multiple Inheritance

3

Page 4: LOGO Lecturer: Abdullahi Salad Abdi May 1, 2015 1 Object Oriented Programming in C++

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

Page 5: LOGO Lecturer: Abdullahi Salad Abdi May 1, 2015 1 Object Oriented Programming in C++

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

Page 6: LOGO Lecturer: Abdullahi Salad Abdi May 1, 2015 1 Object Oriented Programming in C++

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

Page 7: LOGO Lecturer: Abdullahi Salad Abdi May 1, 2015 1 Object Oriented Programming in C++

LOGO

Figure

7

Member 1

Member 2

Member 2

Member 1

Member 3

Page 8: LOGO Lecturer: Abdullahi Salad Abdi May 1, 2015 1 Object Oriented Programming in C++

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

Page 9: LOGO Lecturer: Abdullahi Salad Abdi May 1, 2015 1 Object Oriented Programming in C++

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

Page 10: LOGO Lecturer: Abdullahi Salad Abdi May 1, 2015 1 Object Oriented Programming in C++

LOGO

Types of Inheritance

1. Single Inheritance: It is the inheritance hierarchy wherein one derived class inherits from one base class.

10

Page 11: LOGO Lecturer: Abdullahi Salad Abdi May 1, 2015 1 Object Oriented Programming in C++

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.

Page 12: LOGO Lecturer: Abdullahi Salad Abdi May 1, 2015 1 Object Oriented Programming in C++

LOGO

Types of Inheritance

2. Multiple Inheritance: It is the inheritance hierarchy wherein one derived class inherits from multiple base class(es)

12

Page 13: LOGO Lecturer: Abdullahi Salad Abdi May 1, 2015 1 Object Oriented Programming in C++

LOGO

Types of Inheritance

3. Hierarchical Inheritance: It is the inheritance hierarchy wherein multiple subclasses inherit from one base class.

13

Page 14: LOGO Lecturer: Abdullahi Salad Abdi May 1, 2015 1 Object Oriented Programming in C++

LOGO

Types of Inheritance

4. Multilevel Inheritance: It is the inheritance hierarchy wherein subclass acts as a base class for other classes.

14

Page 15: LOGO Lecturer: Abdullahi Salad Abdi May 1, 2015 1 Object Oriented Programming in C++

LOGO

Types of Inheritance

5. Hybrid Inheritance: The inheritance hierarchy that reflects any legal combination of other four types of inheritance.

15

Page 16: LOGO Lecturer: Abdullahi Salad Abdi May 1, 2015 1 Object Oriented Programming in C++

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

Page 17: LOGO Lecturer: Abdullahi Salad Abdi May 1, 2015 1 Object Oriented Programming in C++

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

Page 18: LOGO Lecturer: Abdullahi Salad Abdi May 1, 2015 1 Object Oriented Programming in C++

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

Page 19: LOGO Lecturer: Abdullahi Salad Abdi May 1, 2015 1 Object Oriented Programming in C++

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

Page 20: LOGO Lecturer: Abdullahi Salad Abdi May 1, 2015 1 Object Oriented Programming in C++

LOGO

Syntax

Class sub_class_name : specifier base_class_name

{

--------

Members of derived class

---------

};

20

Page 21: LOGO Lecturer: Abdullahi Salad Abdi May 1, 2015 1 Object Oriented Programming in C++

LOGO

Example A class “student” is defined as

Class student

{

Private:

Char name[15], address[15];

Public:

Void input(void)

Void show(void)

};

21

Page 22: LOGO Lecturer: Abdullahi Salad Abdi May 1, 2015 1 Object Oriented Programming in C++

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

Page 23: LOGO Lecturer: Abdullahi Salad Abdi May 1, 2015 1 Object Oriented Programming in C++

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

Page 24: LOGO Lecturer: Abdullahi Salad Abdi May 1, 2015 1 Object Oriented Programming in C++

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

Page 25: LOGO Lecturer: Abdullahi Salad Abdi May 1, 2015 1 Object Oriented Programming in C++

LOGO

Cont…

Class marks : public student

{

Private:

Int s1,s2,s3,total;

Public:

Void inputmarks(void)

Void show_details(void)

};

25

Example

Page 26: LOGO Lecturer: Abdullahi Salad Abdi May 1, 2015 1 Object Oriented Programming in C++

LOGO

Types of Inheritance

There are three kinds of inheritance

PublicPrivate Protected

26

Page 27: LOGO Lecturer: Abdullahi Salad Abdi May 1, 2015 1 Object Oriented Programming in C++

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

Page 28: LOGO Lecturer: Abdullahi Salad Abdi May 1, 2015 1 Object Oriented Programming in C++

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

Page 29: LOGO Lecturer: Abdullahi Salad Abdi May 1, 2015 1 Object Oriented Programming in C++

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

Page 30: LOGO Lecturer: Abdullahi Salad Abdi May 1, 2015 1 Object Oriented Programming in C++

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

Page 31: LOGO Lecturer: Abdullahi Salad Abdi May 1, 2015 1 Object Oriented Programming in C++

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

Page 32: LOGO Lecturer: Abdullahi Salad Abdi May 1, 2015 1 Object Oriented Programming in C++

LOGO32

Page 33: LOGO Lecturer: Abdullahi Salad Abdi May 1, 2015 1 Object Oriented Programming in C++

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

Page 34: LOGO Lecturer: Abdullahi Salad Abdi May 1, 2015 1 Object Oriented Programming in C++

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

Page 35: LOGO Lecturer: Abdullahi Salad Abdi May 1, 2015 1 Object Oriented Programming in C++

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

Page 36: LOGO Lecturer: Abdullahi Salad Abdi May 1, 2015 1 Object Oriented Programming in C++

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

Page 37: LOGO Lecturer: Abdullahi Salad Abdi May 1, 2015 1 Object Oriented Programming in 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

Page 38: LOGO Lecturer: Abdullahi Salad Abdi May 1, 2015 1 Object Oriented Programming in C++

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

Page 39: LOGO Lecturer: Abdullahi Salad Abdi May 1, 2015 1 Object Oriented Programming in C++

LOGO

Syntax

Where:sp1 specifies the access specifier of the first

base classSp2 specifies the access specifier of the

second base class

39

Example

Page 40: LOGO Lecturer: Abdullahi Salad Abdi May 1, 2015 1 Object Oriented Programming in C++

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

Page 41: LOGO Lecturer: Abdullahi Salad Abdi May 1, 2015 1 Object Oriented Programming in C++

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

Page 42: LOGO Lecturer: Abdullahi Salad Abdi May 1, 2015 1 Object Oriented Programming in C++

LOGO

Cont…