Sunteți pe pagina 1din 3

Universitatea Tehnic a Moldovei

Ministerul educaiei i tineretului

Universitatea Tehnic a Moldovei


Lucrarea de laborator Nr. 5
La disciplina C++

Tema :Polimorfismul.Functii virtuale.


.

A efectuat:
studentu gr. TI-142

Chifa Vladislav

A controlat:

Potlog Mihail

Chisinau 2015

1. Sarcina lucrrii:
S se defineasca o clas abstract Figure cu funcia virtual perimetru. S se defineasc clasele derivate
Rectangle, Circle, Triangle, Rhomb n care funia dat este redifinit. n funcia main s se defineasc un
vector de pointeri la clasa abstract, crora li se atribuie adrese ale diferitor obiecte.
Listingul programului:
#include <iostream>

using namespace std;


class Figure{
public:
virtual double perimetru()=0;
};
class Circle:public Figure{
double r;
public:
Circle():r(0){}
Circle(double r):r(r){}
~Circle(){r=0;}
double perimetru(){return (2*3.14159*r);}
};
class Rectangle:public Figure{
double a,b;
public:
Rectangle(double a=0,double b=0):a(a),b(b){};
~Rectangle(){a=0;b=0;}
double perimetru(){return (2*(a+b));}
};
class Triangle:public Figure{
double a,b,c;
public:
Triangle(double a=0,double b=0,double c=0):a(a),b(b),c(c){}
~Triangle(){a=0;b=0;c=0;}
double perimetru(){return (a+b+c);}
};
class Rhomb:public Figure{
double l;
public:
Rhomb(double l=0):l(l){}
~Rhomb(){l=0;}
double perimetru(){return 4*l;}
};
int main(){
Figure *f[4];
f[0]=new Circle(3);
f[1]=new Rectangle(3,5);
f[2]=new Triangle(3,4,5);

f[3]=new Rhomb(4);
for(int i=0;i<4;++i){
cout<<"Perimetru["<<i+1<<"]:"<<f[i]->perimetru()<<endl;}
for(int i=0;i<4;++i)
delete f[i];
return 0;
}

Concluzie:
Efectund aceast lucrare de laborator am luat cunotin de posibilitile pe care le ofer programatorului
mecanismul polimorfismului. Dac tim bine cum funcioneaz acest mecanism putem pur i simplu sa
redefinim o funcie abstract n clasa derivat, care are acelai sens dar o alt
realizare.