Object-Oriented Programming
(OOP)
Lecture No. 27
Class Collection
class Collection {
...
public:
void AddElement(int);
bool SearchElement(int);
bool SearchElementAgain(int...
Class Set
class Set: private Collection {
private:
...
public:
void AddMember(int);
bool IsMember(int);
bool DeleteMember(...
Specialization (Restriction)
• the derived class is behaviourally
incompatible with the base class
• Behaviourally incompa...
Specialization (Restriction)
• Specialization (Restriction) can be
implemented using private and
protected inheritance
Example – Specialization
(Restriction)
Person
age : [0..125]
Adult
age : [18..125]
setAge( a )
setAge( a )
age = a
If age ...
Example
class Person{
…
protected:
int age;
public:
bool SetAge(int _age){
if (_age >=0 && _age <= 125) {
age = _age;
retu...
Example
class Adult : private Person {
public:
bool SetAge(int _age){
if (_age >=18 && _age <= 125) {
age = _age;
return t...
Private Inheritance
• Only member functions and friend
functions of a derived class can
convert pointer or reference of
de...
Example
class Parent{
};
class Child : private Parent{
};
int main(){
Child cobj;
Parent *pptr = & cobj; //Error
return 0;...
Example
void DoSomething(const Parent &);
Child::Child(){
Parent & pPtr =
static_cast<Parent &>(*this);
DoSomething(pPtr);...
Private Inheritance
• The child class object has an
anonymous object of parent class
object
• The default constructor and ...
Example
class Parent{
public:
Parent(){
cout << “Parent Constructor”;
}
Parent(const Parent & prhs){
cout << “Parent Copy ...
Example
class Child: private Parent{
public:
Child(){
cout << “Child Constructor”;
}
Child(const Child & crhs)
:Parent(crh...
Example
int main() {
Child cobj1;
Child cobj2 = cobj1;
//Child cobj2(cobj1);
return 0;
}
Example
• Output:
Parent Constructor
Child Constructor
Parent Copy Constructor
Child Copy Constructor
Private Inheritance
• The base class that is more then
one level down the hierarchy
cannot access the member
function of p...
Class Hierarchy
class GrandParent{
public :
void DoSomething();
};
class Parent: private GrandParent{
void SomeFunction(){...
Example
class Child: private Parent
{
public:
Child() {
DoSomething(); //Error
}
};
Private Inheritance
• The base class that is more then
one level down the hierarchy
cannot convert the pointer or
referenc...
Class Hierarchy
void DoSomething(GrandParent&);
class GrandParent{
};
class Parent: private GrandParent{
public:
Parent() ...
Example
class Child: private Parent {
public:
Child()
{
DoSomething(*this); //Error
}
};
Protected Inheritance
• Use protected inheritance if you
want to build class hierarchy
using “implemented in terms of”
Protected Inheritance
• If B is a protected base and D is
derived class then public and
protected members of B can be
used...
Class Hierarchy
class GrandParent{
public :
void DoSomething();
};
class Parent: protected GrandParent{
void SomeFunction(...
Example
class Child: protected Parent
{
public:
Child()
{
DoSomething();
}
};
Protected Inheritance
• If B is a protected base and D is
derived class then only friends
and members of D and friends
and...
Class Hierarchy
void DoSomething(GrandParent&);
class GrandParent{
};
class Parent: protected
GrandParent{
};
Example
class Child: protected Parent {
public:
Child()
{
DoSomething(*this);
}
};
Upcoming SlideShare
Loading in...5
×

Oop + lecture27

149

Published on

Published in: Design, Technology, Sports
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
149
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
6
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Oop + lecture27

  1. 1. Object-Oriented Programming (OOP) Lecture No. 27
  2. 2. Class Collection class Collection { ... public: void AddElement(int); bool SearchElement(int); bool SearchElementAgain(int); bool DeleteElement(int); };
  3. 3. Class Set class Set: private Collection { private: ... public: void AddMember(int); bool IsMember(int); bool DeleteMember(int); };
  4. 4. Specialization (Restriction) • the derived class is behaviourally incompatible with the base class • Behaviourally incompatible means that base class can’t always be replaced by the derived class
  5. 5. Specialization (Restriction) • Specialization (Restriction) can be implemented using private and protected inheritance
  6. 6. Example – Specialization (Restriction) Person age : [0..125] Adult age : [18..125] setAge( a ) setAge( a ) age = a If age < 18 then error else age = a
  7. 7. Example class Person{ … protected: int age; public: bool SetAge(int _age){ if (_age >=0 && _age <= 125) { age = _age; return true; } return false; } };
  8. 8. Example class Adult : private Person { public: bool SetAge(int _age){ if (_age >=18 && _age <= 125) { age = _age; return true; } return false; } };
  9. 9. Private Inheritance • Only member functions and friend functions of a derived class can convert pointer or reference of derived object to that of parent object
  10. 10. Example class Parent{ }; class Child : private Parent{ }; int main(){ Child cobj; Parent *pptr = & cobj; //Error return 0; }
  11. 11. Example void DoSomething(const Parent &); Child::Child(){ Parent & pPtr = static_cast<Parent &>(*this); DoSomething(pPtr); // DoSomething(*this); }
  12. 12. Private Inheritance • The child class object has an anonymous object of parent class object • The default constructor and copy constructor of parent class are called when needed
  13. 13. Example class Parent{ public: Parent(){ cout << “Parent Constructor”; } Parent(const Parent & prhs){ cout << “Parent Copy Constructor”; } };
  14. 14. Example class Child: private Parent{ public: Child(){ cout << “Child Constructor”; } Child(const Child & crhs) :Parent(crhs){ cout << “Child Copy Constructor”; } };
  15. 15. Example int main() { Child cobj1; Child cobj2 = cobj1; //Child cobj2(cobj1); return 0; }
  16. 16. Example • Output: Parent Constructor Child Constructor Parent Copy Constructor Child Copy Constructor
  17. 17. Private Inheritance • The base class that is more then one level down the hierarchy cannot access the member function of parent class, if we are using private inheritance
  18. 18. Class Hierarchy class GrandParent{ public : void DoSomething(); }; class Parent: private GrandParent{ void SomeFunction(){ DoSomething(); } };
  19. 19. Example class Child: private Parent { public: Child() { DoSomething(); //Error } };
  20. 20. Private Inheritance • The base class that is more then one level down the hierarchy cannot convert the pointer or reference to child object to that of parent, if we are using private inheritance
  21. 21. Class Hierarchy void DoSomething(GrandParent&); class GrandParent{ }; class Parent: private GrandParent{ public: Parent() {DoSomething(*this);} };
  22. 22. Example class Child: private Parent { public: Child() { DoSomething(*this); //Error } };
  23. 23. Protected Inheritance • Use protected inheritance if you want to build class hierarchy using “implemented in terms of”
  24. 24. Protected Inheritance • If B is a protected base and D is derived class then public and protected members of B can be used by member functions and friends of classes derived from D
  25. 25. Class Hierarchy class GrandParent{ public : void DoSomething(); }; class Parent: protected GrandParent{ void SomeFunction(){ DoSomething(); } };
  26. 26. Example class Child: protected Parent { public: Child() { DoSomething(); } };
  27. 27. Protected Inheritance • If B is a protected base and D is derived class then only friends and members of D and friends and members of class derived from D can convert D* to B* or D& to B&
  28. 28. Class Hierarchy void DoSomething(GrandParent&); class GrandParent{ }; class Parent: protected GrandParent{ };
  29. 29. Example class Child: protected Parent { public: Child() { DoSomething(*this); } };
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×