SlideShare a Scribd company logo
1 of 41
Course:Course:
Object Oriented ProgrammingObject Oriented Programming
4.00 Credit Hours, Spring 2014,4.00 Credit Hours, Spring 2014,
Undergraduate ProgramUndergraduate Program
Instructor: Sabeen JavaidInstructor: Sabeen Javaid
SESSION 1, 2SESSION 1, 2
InheritanceInheritance
InheritanceInheritance
Inheritance is a relationship between two
or more classes where derived class
inherits behaviour and attributes of pre-
existing (base) classes
Intended to help reuse of existing code
with little or no modification
2
InheritanceInheritance
The existing class is called the base class,
and the new class is called the derived
class.
Other programming languages, such as Java
and C#, refer to the base class as the
superclass
and the derived class as the subclass. A
derived class represents a more specialized
group of objects.
3
InheritanceInheritance
It is expressed in C++ by the “ : public “
syntax:
◦ class Car : public Vehicle {};
Car “is a” / “is derived from” / “is a
specialized” / “is a subclass of” / “is a
derived class of” Vehicle
Vehicle “is a base class of” / “is a super
class of” Car
4
Inheritance - ExampleInheritance - Example
5
Inheritance - ExampleInheritance - Example
6
Inheritance: is-A RelationshipInheritance: is-A Relationship
Derived class objects can always be treated
like a base class objects
Example: an object of type Student can
always be used like an object of type Person
◦ Especially, we can call all methods of Person on
an object of type Student
7
InheritanceInheritance
• Inheritance can be continuous
–Derived class can inherit from a base class
–The derived class can act as a base class and
another class can inherit from it
–If you change the base class, all derived classes
also change
–Any changes in the derived class do not change
the base class
–All features of the base class are available in the
derived class
• However, the additional features in the derived class
are not available in the base class
8
9
Base Classes and Derived Classes
10
CommunityMember Class Hierarchy
11
Shape Class Hierarchy
12
Inheritance
a
b
Class A
Features: a,b
c
Class B
Features: a,b,c
d
e
Class C
Features: a,b,d,e
f
Class D
Features: a,b,d,e,f
Inheritance and EncapsulationInheritance and Encapsulation
Three levels of access control
◦ Public: members (data and methods) can be
used by the class and everybody else (other
classes, functions, etc.)
◦ Protected: members can be accessed by the
class (and its friends) and its derived classes
◦ Private: members can be accessed only by the
class (and its friends)
Remark: without inheritance private and
protected are the same
Inheritance and EncapsulationInheritance and Encapsulation
• private member
– Is accessible only via the base class
• public member
– Is accessible everywhere (base class, derived
class, other classes)
• protected member
– Is accessible by the base class and derived classes
15
Inheritance Concept
Rectangle
Triangle
Polygon
class Polygon
{
private:
int width, length;
public:
void set(int w, int
l);
};
class Rectangle{
private:
int width, length;
public:
void set(int w, int
l);
int area();
};
class Triangle{
private:
int width, length;
public:
void set(int w, int
l);
int area();
};
16
Rectangle
Triangle
Polygon
class Polygon
{
protected:
int width, length;
public:
void set(int w, int
l);
};
class Rectangle: public
Polygon
{
public:
int area();
};
class Rectangle{
protected:
int width, length;
public:
void set(int w, int
l);
int area();
Inheritance Concept
17
Rectangle
Triangle
Polygon
class Polygon
{
protected:
int width, length;
public:
void set(int w, int
l);
};
class Triangle :
public Polygon
{
public:
int area();
};
class Triangle{
protected:
int width, length;
public:
void set(int w, int
l);
int area();
Inheritance Concept
18
Inheritance Concept
Point
Circle 3D-Point
class Point
{
protected:
int x, y;
public:
void set(int a, int
b);
};
class Circle : public Point
{
private:
double r;
};
class 3D-Point: public Point
{
private:
int z;
};
x
y
x
y
r
x
y
z
class DerivedClassName : access-level BaseClassName
Declaring InheritanceDeclaring Inheritance
• Syntax:
where
–access-level specifies the type of derivation
• private by default, or
• public or
• protected (used very rarely)
• Any class can serve as a base class
–Thus a derived class can also be a base class
19
20
Class Derivation
Point
3D-Point
class Point{
protected:
int x, y;
public:
void set(int a,
int b);
};
class 3D-Point :
public Point{
private: double
z;
… …
};
class Sphere : public
3D-Point{
private: double r;
… …
};
Sphere
Point is the base class of 3D-Point, while 3D-Point is the base class of
Sphere
What to Inherit?What to Inherit?
In principle, every member of a base class
is inherited by a derived class
◦ just with different access permission
21
22
Access Control Over the Members
• Two levels of access control over
class members
– class definition
– inheritance type
class Point{
protected: int x, y;
public: void set(int
a, int b);
};
class Circle : public
Point{
… …
};
Member Access ControlMember Access Control
 There are 3 levels of member (data or methods) access control:
◦ public: members can be used by itself and the whole world; any
function can access them
◦ protected: methods (and friends) of itself and any derived class can
use it
◦ private: members can only be used by its own methods (and its
friends)
 We’ll study friend functions later
 Without inheritance, private and protected have the same
meaning
 The only difference is that methods of a derived class can access
protected members of a base class, but cannot access private
members of a base class
23
24
Access Rights of Derived ClassesAccess Rights of Derived Classes
• Public inheritance preserves the original accessibility
of the base class public and protected members in the
derived class
– (base) public -> (derived) public
– (base) protected -> (derived) protected
– (base) private -> no access
• Protected inheritance causes public members to
become protected (protected members are preserved)
in the derived class
– (base) public -> (derived) protected
– (base) protected -> (derived) protected
– (base) private -> no access
25
Access Rights of Derived ClassesAccess Rights of Derived Classes
• Private inheritance causes all members to become
private in the derived class
– (base) public -> (derived) private
– (base) protected -> (derived) private
– (base) private -> no access
Access Rights of Derived Classes -Access Rights of Derived Classes -
SummarySummary
 The type of inheritance defines the minimum access level for the
members of derived class that are inherited from the base class
 With public inheritance, the derived class follows the same access
permission as in the base class
 With protected inheritance, only the public members inherited from
the base class can be accessed in the derived class as protected
members
 With private inheritance, all members from the base class are inherited
as private. This means private members stay private, and protected and
public members become private.
private protected public
private private private private
protected private protected protected
public private protected public
Type of Inheritance
AccessControl
forMembers
Access Rights of Derived ClassesAccess Rights of Derived Classes
 Take these classes as examples:
  class B                    { /*...*/ };
 class D_priv : private   B { /*...*/ };
 class D_prot : protected B { /*...*/ };
 class D_publ : public    B { /*...*/ };
 class UserClass          { B b; /*...*/ 
}; 
 None of the derived classes can access anything that is private in B
 In D_priv, the public and protected parts of B are private
 In D_prot, the public and protected parts of B are protected
 In D_publ, the public parts of B are public and the protected parts
of B are protected (D_publ is-a-kind-of-a B)
 class UserClass can access only the public parts of B, which "seals
off" UserClass from B
27
28
protected vs. private
So why not always use protected instead of private?
– Because protected means that we have less encapsulation
– All derived classes can access protected data members of the
base class
– Assume that later you decided to change the implementation of
the base class having the protected data members
– For example, we might want to represent address by a new
class called Address instead of string
– If the address data member is private, we can easily make this
change
– The class documentation does not need to be changed.
– If it is protected, we have to go through all derived classes and
change them
– We also need to update the class documentation.
29
When to use Private InheritanceWhen to use Private Inheritance
• Overall private and protected inheritance are used very
rarely
• Private and protected inheritance are used to represent
implementation details
• Protected bases are useful in class hierarchies in which
further derivation is needed
• Private bases are useful when defining a class by
restricting the interface to a base so that stronger
guarantees can be provided
30
Class Derivation Example
mother
daughter son
class mother{
protected:
   int x, y;
public:
  void set(int a, 
int b);
private:
   int z;
};
class daughter : 
public mother{
private: 
double a;
public:
void foo ( );
};
void daughter :: foo ( ){
x = y = 20;
set(5, 10); 
cout<<“value of a 
”<<a<<endl; 
z = 100;    // error, a 
private member
};
daughter can access 3 of the 4 inherited members
Class DerivationClass Derivation
mother
daughter son
class mother{
protected:
int x, y;
public:
void set(int a, int b);
private:
int z;
}
class son : protected mother{
private:
double b;
public:
void foo ( );
}
void son :: foo ( ){
x = y = 20;
set(5, 10);
cout<<“value of b ”<<b<<endl;
z = 100; // error, not a public
member
}
son can access only 3 of the 4 inherited member
32
mother
daughter son
granddaughter grandson
Class Derivation Example
class mother{
protected:
   int x, y;
public:
  void set(int a, 
int b);
private:
   int z;
};
class daughter : public mother
{
private: 
double a;
public:
void foo ( );
};
class granddaughter : public daughter
{
public:
void foo ( );
};
33
void granddaughter :: foo ( ){
x = y = 20; //OK
set(5, 10);  //OK
cout<<“value of a ”<<a<<endl; //error: private 
member of daughter
z = 100;    // error, a private member of mother
};
Class Derivation Example
34
mother
daughter son
granddaughter grandson
class mother{
protected:
int x, y;
public:
void set(int a,
int b);
private:
int z;
};
class son : protected mother
{
private:
double b;
public:
void foo ( );
};
class grandson : public son
{
public:
void foo ( );
};
Class Derivation Example
35
void grandson:: foo ( ){
x = y = 20;
set(5, 10);
z = 100; // error, a private member of
mother
};
Class Derivation Example
EncapsulationEncapsulation
class Figure
{
protected:
int x, y;
};
class Circle : public Figure
{
public:
int radius;
};
int main()
{
Circle a;
a.x = 0;
a.y = 0;
a.radius = 10;
}
EncapsulationEncapsulation
class Figure
{
protected:
int x_, y_;
};
class Circle : public
Figure
{
private:
int radius_;
public:
Circle(int x,
int y, int radius);
};
Circle::Circle(int x,
int y, int radius)
{
x_ = x;
y_ = y;
radius_ = radius;
}
int main()
{
Circle a(0,0,10);
}
EncapsulationEncapsulation
class Figure
{
private:
int x_, y_;
};
class Circle : public
Figure
{
private:
int radius_;
public:
Circle(int x,
int y, int radius);
};
Circle::Circle(int x,
int y, int radius)
{
x_ = x;
y_ = y;
radius_ = radius;
}
int main()
{
Circle a(0,0,10);
}
EncapsulationEncapsulation
class Figure
{
private:
int x_, y_;
public:
void SetX(int
x);
void SetY(int
y);
};
void Figure::SetX(int
x)
{
x_ = x;
}
void Figure::SetY(int
y)
{
y_ = y;
class Circle : public
Figure
{
private:
int radius_;
public:
Circle(int x, int
y, int radius);
};
Circle::Circle(int x,
int y, int radius)
{
SetX(x);
SetY(y);
radius_ = radius;
}
int main()
{
Circle a(0,0,10);
}
What to Inherit?What to Inherit?
In principle, every member of a base class
is inherited by a derived class
◦ just with different access permission
However, there are exceptions for
◦ Constructor and destructor
◦ Overloaded Assignment operator
◦ Friends
Since all these functions are class-specific!
40
References/ Compulsory ReadingReferences/ Compulsory Reading
C++, How to Program Deitel & Deitel
◦ Chapter 12: OOP : Inheritance
Robert Lafore
◦ Chapter 9: Inheritance
◦ http://www.learncpp.com/cpp-tutorial/115-inheri
41

More Related Content

What's hot

What's hot (20)

classes and objects in C++
classes and objects in C++classes and objects in C++
classes and objects in C++
 
Inheritance
InheritanceInheritance
Inheritance
 
Inheritance in c++
Inheritance in c++Inheritance in c++
Inheritance in c++
 
Inheritance in Java
Inheritance in JavaInheritance in Java
Inheritance in Java
 
Inheritance C#
Inheritance C#Inheritance C#
Inheritance C#
 
Encapsulation C++
Encapsulation C++Encapsulation C++
Encapsulation C++
 
Inheritance in OOPS
Inheritance in OOPSInheritance in OOPS
Inheritance in OOPS
 
Distributed network
Distributed networkDistributed network
Distributed network
 
Inheritance : Extending Classes
Inheritance : Extending ClassesInheritance : Extending Classes
Inheritance : Extending Classes
 
Inheritance
InheritanceInheritance
Inheritance
 
[OOP - Lec 08] Encapsulation (Information Hiding)
[OOP - Lec 08] Encapsulation (Information Hiding)[OOP - Lec 08] Encapsulation (Information Hiding)
[OOP - Lec 08] Encapsulation (Information Hiding)
 
Java access modifiers
Java access modifiersJava access modifiers
Java access modifiers
 
Object oriented programming c++
Object oriented programming c++Object oriented programming c++
Object oriented programming c++
 
Class and object in C++
Class and object in C++Class and object in C++
Class and object in C++
 
OOP Introduction with java programming language
OOP Introduction with java programming languageOOP Introduction with java programming language
OOP Introduction with java programming language
 
Java program structure
Java program structure Java program structure
Java program structure
 
Templates in c++
Templates in c++Templates in c++
Templates in c++
 
inheritance
inheritanceinheritance
inheritance
 
Templates in C++
Templates in C++Templates in C++
Templates in C++
 
Inheritance in C++
Inheritance in C++Inheritance in C++
Inheritance in C++
 

Viewers also liked

Inheritance in oops
Inheritance in oopsInheritance in oops
Inheritance in oopsHirra Sultan
 
Object Oriented Programming Concepts
Object Oriented Programming ConceptsObject Oriented Programming Concepts
Object Oriented Programming Conceptsthinkphp
 
Java: Inheritance
Java: InheritanceJava: Inheritance
Java: InheritanceTareq Hasan
 
Inheritance in JAVA PPT
Inheritance  in JAVA PPTInheritance  in JAVA PPT
Inheritance in JAVA PPTPooja Jaiswal
 
Java Programming - Inheritance
Java Programming - InheritanceJava Programming - Inheritance
Java Programming - InheritanceOum Saokosal
 
Inheritance in c++ ppt (Powerpoint) | inheritance in c++ ppt presentation | i...
Inheritance in c++ ppt (Powerpoint) | inheritance in c++ ppt presentation | i...Inheritance in c++ ppt (Powerpoint) | inheritance in c++ ppt presentation | i...
Inheritance in c++ ppt (Powerpoint) | inheritance in c++ ppt presentation | i...cprogrammings
 
Object oriented programming (oop) cs304 power point slides lecture 01
Object oriented programming (oop)   cs304 power point slides lecture 01Object oriented programming (oop)   cs304 power point slides lecture 01
Object oriented programming (oop) cs304 power point slides lecture 01Adil Kakakhel
 
Hybrid Inheritance in C++
Hybrid Inheritance in C++Hybrid Inheritance in C++
Hybrid Inheritance in C++Abhishek Pratap
 
Архитектура автоматизированных тестов
Архитектура автоматизированных тестовАрхитектура автоматизированных тестов
Архитектура автоматизированных тестовSQALab
 
Demultiplexer presentation
Demultiplexer presentationDemultiplexer presentation
Demultiplexer presentationShaikat Saha
 
Object oriented programming concepts
Object oriented programming conceptsObject oriented programming concepts
Object oriented programming conceptsrahuld115
 

Viewers also liked (20)

Inheritance in oops
Inheritance in oopsInheritance in oops
Inheritance in oops
 
Inheritance
InheritanceInheritance
Inheritance
 
Oops ppt
Oops pptOops ppt
Oops ppt
 
Object Oriented Programming Concepts
Object Oriented Programming ConceptsObject Oriented Programming Concepts
Object Oriented Programming Concepts
 
Inheritance and Polymorphism
Inheritance and PolymorphismInheritance and Polymorphism
Inheritance and Polymorphism
 
Java: Inheritance
Java: InheritanceJava: Inheritance
Java: Inheritance
 
Inheritance in JAVA PPT
Inheritance  in JAVA PPTInheritance  in JAVA PPT
Inheritance in JAVA PPT
 
Java Programming - Inheritance
Java Programming - InheritanceJava Programming - Inheritance
Java Programming - Inheritance
 
inheritance c++
inheritance c++inheritance c++
inheritance c++
 
Inheritance in c++ ppt (Powerpoint) | inheritance in c++ ppt presentation | i...
Inheritance in c++ ppt (Powerpoint) | inheritance in c++ ppt presentation | i...Inheritance in c++ ppt (Powerpoint) | inheritance in c++ ppt presentation | i...
Inheritance in c++ ppt (Powerpoint) | inheritance in c++ ppt presentation | i...
 
Constructors & destructors
Constructors & destructorsConstructors & destructors
Constructors & destructors
 
Object oriented programming (oop) cs304 power point slides lecture 01
Object oriented programming (oop)   cs304 power point slides lecture 01Object oriented programming (oop)   cs304 power point slides lecture 01
Object oriented programming (oop) cs304 power point slides lecture 01
 
C++ Inheritance
C++ InheritanceC++ Inheritance
C++ Inheritance
 
Chapter 12
Chapter 12Chapter 12
Chapter 12
 
Hybrid Inheritance in C++
Hybrid Inheritance in C++Hybrid Inheritance in C++
Hybrid Inheritance in C++
 
Automation patterns on practice
Automation patterns on practiceAutomation patterns on practice
Automation patterns on practice
 
Архитектура автоматизированных тестов
Архитектура автоматизированных тестовАрхитектура автоматизированных тестов
Архитектура автоматизированных тестов
 
Demultiplexer presentation
Demultiplexer presentationDemultiplexer presentation
Demultiplexer presentation
 
INPUT BOX- VBA
INPUT BOX- VBAINPUT BOX- VBA
INPUT BOX- VBA
 
Object oriented programming concepts
Object oriented programming conceptsObject oriented programming concepts
Object oriented programming concepts
 

Similar to Inheritance, Object Oriented Programming

Inheritance in C++
Inheritance in C++Inheritance in C++
Inheritance in C++Shweta Shah
 
Inheritance in C++
Inheritance in C++Inheritance in C++
Inheritance in C++RAJ KUMAR
 
lecture 6.pdf
lecture 6.pdflecture 6.pdf
lecture 6.pdfWaqarRaj1
 
week14 (1).ppt
week14 (1).pptweek14 (1).ppt
week14 (1).pptamal68766
 
Inheritance OOP Concept in C++.
Inheritance OOP Concept in C++.Inheritance OOP Concept in C++.
Inheritance OOP Concept in C++.MASQ Technologies
 
Java Inheritance - sub class constructors - Method overriding
Java Inheritance - sub class constructors - Method overridingJava Inheritance - sub class constructors - Method overriding
Java Inheritance - sub class constructors - Method overridingNithyaN19
 
C++ Inheritance.pptx
C++ Inheritance.pptxC++ Inheritance.pptx
C++ Inheritance.pptxXanGwaps
 
Inheritance in c++ part1
Inheritance in c++ part1Inheritance in c++ part1
Inheritance in c++ part1Mirza Hussain
 
Final presentation programming
Final presentation programmingFinal presentation programming
Final presentation programminghaider ali
 
Support for Object-Oriented Programming (OOP) in C++
Support for Object-Oriented Programming (OOP) in C++Support for Object-Oriented Programming (OOP) in C++
Support for Object-Oriented Programming (OOP) in C++Ameen Sha'arawi
 

Similar to Inheritance, Object Oriented Programming (20)

Inheritance in C++
Inheritance in C++Inheritance in C++
Inheritance in C++
 
11 Inheritance.ppt
11 Inheritance.ppt11 Inheritance.ppt
11 Inheritance.ppt
 
Inheritance in C++
Inheritance in C++Inheritance in C++
Inheritance in C++
 
lecture 6.pdf
lecture 6.pdflecture 6.pdf
lecture 6.pdf
 
Inheritance
InheritanceInheritance
Inheritance
 
Inheritance
InheritanceInheritance
Inheritance
 
week14 (1).ppt
week14 (1).pptweek14 (1).ppt
week14 (1).ppt
 
session 24_Inheritance.ppt
session 24_Inheritance.pptsession 24_Inheritance.ppt
session 24_Inheritance.ppt
 
Inheritance
InheritanceInheritance
Inheritance
 
Inheritance OOP Concept in C++.
Inheritance OOP Concept in C++.Inheritance OOP Concept in C++.
Inheritance OOP Concept in C++.
 
inheritance
inheritanceinheritance
inheritance
 
Inheritance
Inheritance Inheritance
Inheritance
 
Inheritance
InheritanceInheritance
Inheritance
 
Java Inheritance - sub class constructors - Method overriding
Java Inheritance - sub class constructors - Method overridingJava Inheritance - sub class constructors - Method overriding
Java Inheritance - sub class constructors - Method overriding
 
C++ Inheritance.pptx
C++ Inheritance.pptxC++ Inheritance.pptx
C++ Inheritance.pptx
 
00ps inheritace using c++
00ps inheritace using c++00ps inheritace using c++
00ps inheritace using c++
 
Inheritance in c++ part1
Inheritance in c++ part1Inheritance in c++ part1
Inheritance in c++ part1
 
Final presentation programming
Final presentation programmingFinal presentation programming
Final presentation programming
 
Support for Object-Oriented Programming (OOP) in C++
Support for Object-Oriented Programming (OOP) in C++Support for Object-Oriented Programming (OOP) in C++
Support for Object-Oriented Programming (OOP) in C++
 
Inheritance
InheritanceInheritance
Inheritance
 

Recently uploaded

Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxbodapatigopi8531
 
DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about usDynamic Netsoft
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...soniya singh
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionSolGuruz
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providermohitmore19
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...gurkirankumar98700
 
Test Automation Strategy for Frontend and Backend
Test Automation Strategy for Frontend and BackendTest Automation Strategy for Frontend and Backend
Test Automation Strategy for Frontend and BackendArshad QA
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackVICTOR MAESTRE RAMIREZ
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerThousandEyes
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfkalichargn70th171
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comFatema Valibhai
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsArshad QA
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...MyIntelliSource, Inc.
 
Active Directory Penetration Testing, cionsystems.com.pdf
Active Directory Penetration Testing, cionsystems.com.pdfActive Directory Penetration Testing, cionsystems.com.pdf
Active Directory Penetration Testing, cionsystems.com.pdfCionsystems
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataBradBedford3
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...MyIntelliSource, Inc.
 
Project Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanationProject Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanationkaushalgiri8080
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...OnePlan Solutions
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsAlberto González Trastoy
 

Recently uploaded (20)

Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptx
 
DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about us
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
 
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS LiveVip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with Precision
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
 
Test Automation Strategy for Frontend and Backend
Test Automation Strategy for Frontend and BackendTest Automation Strategy for Frontend and Backend
Test Automation Strategy for Frontend and Backend
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStack
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.com
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
 
Active Directory Penetration Testing, cionsystems.com.pdf
Active Directory Penetration Testing, cionsystems.com.pdfActive Directory Penetration Testing, cionsystems.com.pdf
Active Directory Penetration Testing, cionsystems.com.pdf
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
 
Project Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanationProject Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanation
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 

Inheritance, Object Oriented Programming

  • 1. Course:Course: Object Oriented ProgrammingObject Oriented Programming 4.00 Credit Hours, Spring 2014,4.00 Credit Hours, Spring 2014, Undergraduate ProgramUndergraduate Program Instructor: Sabeen JavaidInstructor: Sabeen Javaid SESSION 1, 2SESSION 1, 2 InheritanceInheritance
  • 2. InheritanceInheritance Inheritance is a relationship between two or more classes where derived class inherits behaviour and attributes of pre- existing (base) classes Intended to help reuse of existing code with little or no modification 2
  • 3. InheritanceInheritance The existing class is called the base class, and the new class is called the derived class. Other programming languages, such as Java and C#, refer to the base class as the superclass and the derived class as the subclass. A derived class represents a more specialized group of objects. 3
  • 4. InheritanceInheritance It is expressed in C++ by the “ : public “ syntax: ◦ class Car : public Vehicle {}; Car “is a” / “is derived from” / “is a specialized” / “is a subclass of” / “is a derived class of” Vehicle Vehicle “is a base class of” / “is a super class of” Car 4
  • 7. Inheritance: is-A RelationshipInheritance: is-A Relationship Derived class objects can always be treated like a base class objects Example: an object of type Student can always be used like an object of type Person ◦ Especially, we can call all methods of Person on an object of type Student 7
  • 8. InheritanceInheritance • Inheritance can be continuous –Derived class can inherit from a base class –The derived class can act as a base class and another class can inherit from it –If you change the base class, all derived classes also change –Any changes in the derived class do not change the base class –All features of the base class are available in the derived class • However, the additional features in the derived class are not available in the base class 8
  • 9. 9 Base Classes and Derived Classes
  • 12. 12 Inheritance a b Class A Features: a,b c Class B Features: a,b,c d e Class C Features: a,b,d,e f Class D Features: a,b,d,e,f
  • 13. Inheritance and EncapsulationInheritance and Encapsulation Three levels of access control ◦ Public: members (data and methods) can be used by the class and everybody else (other classes, functions, etc.) ◦ Protected: members can be accessed by the class (and its friends) and its derived classes ◦ Private: members can be accessed only by the class (and its friends) Remark: without inheritance private and protected are the same
  • 14. Inheritance and EncapsulationInheritance and Encapsulation • private member – Is accessible only via the base class • public member – Is accessible everywhere (base class, derived class, other classes) • protected member – Is accessible by the base class and derived classes
  • 15. 15 Inheritance Concept Rectangle Triangle Polygon class Polygon { private: int width, length; public: void set(int w, int l); }; class Rectangle{ private: int width, length; public: void set(int w, int l); int area(); }; class Triangle{ private: int width, length; public: void set(int w, int l); int area(); };
  • 16. 16 Rectangle Triangle Polygon class Polygon { protected: int width, length; public: void set(int w, int l); }; class Rectangle: public Polygon { public: int area(); }; class Rectangle{ protected: int width, length; public: void set(int w, int l); int area(); Inheritance Concept
  • 17. 17 Rectangle Triangle Polygon class Polygon { protected: int width, length; public: void set(int w, int l); }; class Triangle : public Polygon { public: int area(); }; class Triangle{ protected: int width, length; public: void set(int w, int l); int area(); Inheritance Concept
  • 18. 18 Inheritance Concept Point Circle 3D-Point class Point { protected: int x, y; public: void set(int a, int b); }; class Circle : public Point { private: double r; }; class 3D-Point: public Point { private: int z; }; x y x y r x y z
  • 19. class DerivedClassName : access-level BaseClassName Declaring InheritanceDeclaring Inheritance • Syntax: where –access-level specifies the type of derivation • private by default, or • public or • protected (used very rarely) • Any class can serve as a base class –Thus a derived class can also be a base class 19
  • 20. 20 Class Derivation Point 3D-Point class Point{ protected: int x, y; public: void set(int a, int b); }; class 3D-Point : public Point{ private: double z; … … }; class Sphere : public 3D-Point{ private: double r; … … }; Sphere Point is the base class of 3D-Point, while 3D-Point is the base class of Sphere
  • 21. What to Inherit?What to Inherit? In principle, every member of a base class is inherited by a derived class ◦ just with different access permission 21
  • 22. 22 Access Control Over the Members • Two levels of access control over class members – class definition – inheritance type class Point{ protected: int x, y; public: void set(int a, int b); }; class Circle : public Point{ … … };
  • 23. Member Access ControlMember Access Control  There are 3 levels of member (data or methods) access control: ◦ public: members can be used by itself and the whole world; any function can access them ◦ protected: methods (and friends) of itself and any derived class can use it ◦ private: members can only be used by its own methods (and its friends)  We’ll study friend functions later  Without inheritance, private and protected have the same meaning  The only difference is that methods of a derived class can access protected members of a base class, but cannot access private members of a base class 23
  • 24. 24 Access Rights of Derived ClassesAccess Rights of Derived Classes • Public inheritance preserves the original accessibility of the base class public and protected members in the derived class – (base) public -> (derived) public – (base) protected -> (derived) protected – (base) private -> no access • Protected inheritance causes public members to become protected (protected members are preserved) in the derived class – (base) public -> (derived) protected – (base) protected -> (derived) protected – (base) private -> no access
  • 25. 25 Access Rights of Derived ClassesAccess Rights of Derived Classes • Private inheritance causes all members to become private in the derived class – (base) public -> (derived) private – (base) protected -> (derived) private – (base) private -> no access
  • 26. Access Rights of Derived Classes -Access Rights of Derived Classes - SummarySummary  The type of inheritance defines the minimum access level for the members of derived class that are inherited from the base class  With public inheritance, the derived class follows the same access permission as in the base class  With protected inheritance, only the public members inherited from the base class can be accessed in the derived class as protected members  With private inheritance, all members from the base class are inherited as private. This means private members stay private, and protected and public members become private. private protected public private private private private protected private protected protected public private protected public Type of Inheritance AccessControl forMembers
  • 27. Access Rights of Derived ClassesAccess Rights of Derived Classes  Take these classes as examples:   class B                    { /*...*/ };  class D_priv : private   B { /*...*/ };  class D_prot : protected B { /*...*/ };  class D_publ : public    B { /*...*/ };  class UserClass          { B b; /*...*/  };   None of the derived classes can access anything that is private in B  In D_priv, the public and protected parts of B are private  In D_prot, the public and protected parts of B are protected  In D_publ, the public parts of B are public and the protected parts of B are protected (D_publ is-a-kind-of-a B)  class UserClass can access only the public parts of B, which "seals off" UserClass from B 27
  • 28. 28 protected vs. private So why not always use protected instead of private? – Because protected means that we have less encapsulation – All derived classes can access protected data members of the base class – Assume that later you decided to change the implementation of the base class having the protected data members – For example, we might want to represent address by a new class called Address instead of string – If the address data member is private, we can easily make this change – The class documentation does not need to be changed. – If it is protected, we have to go through all derived classes and change them – We also need to update the class documentation.
  • 29. 29 When to use Private InheritanceWhen to use Private Inheritance • Overall private and protected inheritance are used very rarely • Private and protected inheritance are used to represent implementation details • Protected bases are useful in class hierarchies in which further derivation is needed • Private bases are useful when defining a class by restricting the interface to a base so that stronger guarantees can be provided
  • 30. 30 Class Derivation Example mother daughter son class mother{ protected:    int x, y; public:   void set(int a,  int b); private:    int z; }; class daughter :  public mother{ private:  double a; public: void foo ( ); }; void daughter :: foo ( ){ x = y = 20; set(5, 10);  cout<<“value of a  ”<<a<<endl;  z = 100;    // error, a  private member }; daughter can access 3 of the 4 inherited members
  • 31. Class DerivationClass Derivation mother daughter son class mother{ protected: int x, y; public: void set(int a, int b); private: int z; } class son : protected mother{ private: double b; public: void foo ( ); } void son :: foo ( ){ x = y = 20; set(5, 10); cout<<“value of b ”<<b<<endl; z = 100; // error, not a public member } son can access only 3 of the 4 inherited member
  • 32. 32 mother daughter son granddaughter grandson Class Derivation Example class mother{ protected:    int x, y; public:   void set(int a,  int b); private:    int z; }; class daughter : public mother { private:  double a; public: void foo ( ); }; class granddaughter : public daughter { public: void foo ( ); };
  • 34. 34 mother daughter son granddaughter grandson class mother{ protected: int x, y; public: void set(int a, int b); private: int z; }; class son : protected mother { private: double b; public: void foo ( ); }; class grandson : public son { public: void foo ( ); }; Class Derivation Example
  • 35. 35 void grandson:: foo ( ){ x = y = 20; set(5, 10); z = 100; // error, a private member of mother }; Class Derivation Example
  • 36. EncapsulationEncapsulation class Figure { protected: int x, y; }; class Circle : public Figure { public: int radius; }; int main() { Circle a; a.x = 0; a.y = 0; a.radius = 10; }
  • 37. EncapsulationEncapsulation class Figure { protected: int x_, y_; }; class Circle : public Figure { private: int radius_; public: Circle(int x, int y, int radius); }; Circle::Circle(int x, int y, int radius) { x_ = x; y_ = y; radius_ = radius; } int main() { Circle a(0,0,10); }
  • 38. EncapsulationEncapsulation class Figure { private: int x_, y_; }; class Circle : public Figure { private: int radius_; public: Circle(int x, int y, int radius); }; Circle::Circle(int x, int y, int radius) { x_ = x; y_ = y; radius_ = radius; } int main() { Circle a(0,0,10); }
  • 39. EncapsulationEncapsulation class Figure { private: int x_, y_; public: void SetX(int x); void SetY(int y); }; void Figure::SetX(int x) { x_ = x; } void Figure::SetY(int y) { y_ = y; class Circle : public Figure { private: int radius_; public: Circle(int x, int y, int radius); }; Circle::Circle(int x, int y, int radius) { SetX(x); SetY(y); radius_ = radius; } int main() { Circle a(0,0,10); }
  • 40. What to Inherit?What to Inherit? In principle, every member of a base class is inherited by a derived class ◦ just with different access permission However, there are exceptions for ◦ Constructor and destructor ◦ Overloaded Assignment operator ◦ Friends Since all these functions are class-specific! 40
  • 41. References/ Compulsory ReadingReferences/ Compulsory Reading C++, How to Program Deitel & Deitel ◦ Chapter 12: OOP : Inheritance Robert Lafore ◦ Chapter 9: Inheritance ◦ http://www.learncpp.com/cpp-tutorial/115-inheri 41