Inheritance Concept: Polygon

Download as ppt, pdf, or txt
Download as ppt, pdf, or txt
You are on page 1of 28

1

class Rectangle{
private:
int numVertices;
float *xCoord, *yCoord;
public:
void set(float *x, float *y, int nV);
float area();
};
Inheritance Concept
Rectangle
Triangle
Polygon
class Polygon{
private:
int numVertices;
float *xCoord, *yCoord;
public:
void set(float *x, float *y, int nV);
};
class Triangle{
private:
int numVertices;
float *xCoord, *yCoord;
public:
void set(float *x, float *y, int nV);
float area();
};
2
Rectangle
Triangle
Polygon
class Polygon{
protected:
int numVertices;
float *xCoord, float *yCoord;
public:
void set(float *x, float *y, int nV);
};

class Rectangle : public Polygon{
public:
float area();
};
class Rectangle{
protected:
int numVertices;
float *xCoord, float *yCoord;
public:
void set(float *x, float *y, int nV);
float area();
};

Inheritance Concept
3
Rectangle
Triangle
Polygon
class Polygon{
protected:
int numVertices;
float *xCoord, float *yCoord;
public:
void set(float *x, float *y, int nV);
};


class Triangle : public Polygon{
public:
float area();
};
class Triangle{
protected:
int numVertices;
float *xCoord, float *yCoord;
public:
void set(float *x, float *y, int nV);
float area();
};

Inheritance Concept
4
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
5
Augmenting the original class




Specializing the original class
Inheritance Concept
RealNumber
ComplexNumber
ImaginaryNumber
Rectangle
Triangle
Polygon
Point
Circle
real
imag
real
imag
3D-Point
6
Why Inheritance ?

Inheritance is a mechanism for

building class types from existing class types

defining new class types to be a
specialization
augmentation
of existing types
7
Define a Class Hierarchy
Syntax:
class DerivedClassName : access-level BaseClassName

where
access-level specifies the type of derivation
private by default, or
public
Any class can serve as a base class
Thus a derived class can also be a base class
8
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
9
What to inherit?
In principle, every member of a base class is
inherited by a derived class
just with different access permission
10
Access Control Over the Members
Two levels of access control
over class members
class definition
inheritance type
base class/ superclass/
parent class
derived class/ subclass/
child class
d
e
r
i
v
e

f
r
o
m
m
e
m
b
e
r
s

g
o
e
s

t
o
class Point{
protected: int x, y;
public: void set(int a, int b);
};
class Circle : public Point{

};
11
The type of inheritance defines the access level for the
members of derived class that are inherited from the base
class
Access Rights of Derived Classes
private protected public
private - - -
protected private protected protected
public private protected public
Type of Inheritance
A
c
c
e
s
s

C
o
n
t
r
o
l

f
o
r

M
e
m
b
e
r
s

12
class daughter : --------- mother{
private: double dPriv;
public: void mFoo ( );
};
Class Derivation
class mother{
protected: int mProc;
public: int mPubl;
private: int mPriv;
};
class daughter : --------- mother{
private: double dPriv;
public: void dFoo ( );
};
void daughter :: dFoo ( ){
mPriv = 10; //error
mProc = 20;
};
private/protected/public
int main() {
/*.*/
}
class grandDaughter : public daughter {
private: double gPriv;
public: void gFoo ( );
};
13
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
operator=() member
friends
Since all these functions are class-specific
14
Constructor Rules for Derived Classes
The default constructor and the destructor of the
base class are always called when a new object
of a derived class is created or destroyed.
class A {
public:
A ( )
{cout<< A:default<<endl;}
A (int a)
{cout<<A:parameter<<endl;}
};
class B : public A
{
public:
B (int a)
{cout<<B<<endl;}
};
B test(1);
A:default
B
output:
15
Constructor Rules for Derived Classes
You can also specify an constructor of the
base class other than the default constructor
class A {
public:
A ( )
{cout<< A:default<<endl;}
A (int a)
{cout<<A:parameter<<endl;}
};
class C : public A {
public:
C (int a) : A(a)
{cout<<C<<endl;}
};
C test(1);
A:parameter
C
output:

DerivedClassCon ( derivedClass args ) : BaseClassCon ( baseClass
args )
{ DerivedClass constructor body }

16
Define its Own Members
Point
Circle
class Point{
protected:
int x, y;
public:
void set(int a, int b);
};
class Circle : public Point{
private:
double r;
public:
void set_r(double c);
};
x
y
x
y
r
class Circle{
protected:
int x, y;
private:
double r;
public:
void set(int a, int b);
void set_r(double c);
};
The derived class can also define
its own members, in addition to
the members inherited from the
base class
17
Even more
A derived class can override methods defined in its parent
class. With overriding,
the method in the subclass has the identical signature to the method
in the base class.
a subclass implements its own version of a base class method.
class A {
protected:
int x, y;
public:
void print ()
{cout<<From A<<endl;}
};
class B : public A {
public:
void print ()
{cout<<From B<<endl;}
};
18
class Point{
protected:
int x, y;
public:
void set(int a, int b)
{x=a; y=b;}
void foo ();
void print();
};
class Circle : public Point{
private: double r;
public:
void set (int a, int b, double c) {
Point :: set(a, b); //same name function call
r = c;
}
void print(); };
Access a Method
Circle C;
C.set(10,10,100); // from class Circle
C.foo (); // from base class Point
C.print(); // from class Circle
Point A;
A.set(30,50); // from base class Point
A.print(); // from base class Point
19
Putting Them Together
Time is the base class
ExtTime is the derived class with
public inheritance
The derived class can
inherit all members from the base
class, except the constructor
access all public and protected
members of the base class
define its private data member
provide its own constructor
define its public member functions
override functions inherited from
the base class
ExtTime
Time
20
class Time Specification

class Time{
public :
void Set ( int h, int m, int s ) ;
void Increment ( ) ;
void Write ( ) const ;
Time ( int initH, int initM, int initS ) ; // constructor
Time ( ) ; // default constructor

protected :
int hrs ;
int mins ;
int secs ;
} ;
// SPECIFICATION FILE ( time.h)
21

Class Interface Diagram
Protected data:

hrs

mins

secs
Set
Increment
Write
Time
Time
Time class
22
Derived Class ExtTime
// SPECIFICATION FILE ( exttime.h)


#include time.h
enum ZoneType {EST, CST, MST, PST, EDT, CDT, MDT, PDT } ;

class ExtTime : public Time
// Time is the base class and use public inheritance
{
public :
void Set ( int h, int m, int s, ZoneType timeZone ) ;
void Write ( ) const; //overridden
ExtTime (int initH, int initM, int initS, ZoneType initZone ) ;
ExtTime (); // default constructor


private :
ZoneType zone ; // added data member

} ;
23


Class Interface Diagram
Protected data:

hrs

mins

secs
ExtTime class
Set
Increment
Write
Time
Time
Set
Increment
Write
ExtTime
ExtTime
Private data:
zone
24
Implementation of ExtTime
Default Constructor
ExtTime :: ExtTime ( )
{
zone = EST ;
}
The default constructor of
base class, Time(), is
automatically called, when an
ExtTime object is created.
ExtTime et1;
hrs = 0
mins = 0
secs = 0
zone = EST
et1
25
Implementation of ExtTime
Another Constructor
ExtTime :: ExtTime (int initH, int initM, int initS, ZoneType initZone)
: Time (initH, initM, initS)
// constructor initializer
{
zone = initZone ;
}
ExtTime *et2 =
new ExtTime(8,30,0,EST);
hrs = 8
mins = 30
secs = 0
zone = EST
et2
5000
???
6000
5000
26
Implementation of ExtTime
void ExtTime :: Set (int h, int m, int s, ZoneType timeZone)
{
Time :: Set (hours, minutes, seconds); // same name function call
zone = timeZone ;
}
void ExtTime :: Write ( ) const // function overriding
{
string zoneString[8] =
{EST, CST, MST, PST, EDT, CDT, MDT, PDT} ;

Time :: Write ( ) ;
cout << <<zoneString[zone]<<endl;
}
27
Working with ExtTime
#include exttime.h


int main()
{

ExtTime thisTime ( 8, 35, 0, PST ) ;
ExtTime thatTime ; // default constructor called

thatTime.Write( ) ; // outputs 00:00:00 EST

thatTime.Set (16, 49, 23, CDT) ;
thatTime.Write( ) ; // outputs 16:49:23 CDT

thisTime.Increment ( ) ;
thisTime.Increment ( ) ;
thisTime.Write ( ) ; // outputs 08:35:02 PST
}
28
Take Home Message
Inheritance is a mechanism for defining new
class types to be a specialization or an
augmentation of existing types.

In principle, every member of a base class is
inherited by a derived class with different
access permissions, except for the constructors

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy