Sunteți pe pagina 1din 4

Ministerul Educaţiei al Republicii Moldova

Universitatea Tehnică a Moldovei

RAPORT
Lucrarea de laborator nr.4

A efectuat:
st. gr. MAI_211M Gorea Filip

Chişinău -2021
Scopul lucrării:

-Studierea polimorfismului

-Studierea principiilor legăturii întârziate

-Studierea funcțiilor virtuale

-Polimorfismul ad-hoc

-Realizarea funcțiilor virtuale

-Studierea claselor abstracte

Sarcina lucrării:

Creați clasa abstractă de bază Figure cu funcția virtuală-aria. Square, Circle,


Triangle, Trapeze în care funcția dată este predefinită. În funcția main determinați
masivul de pointeri la clasa abstractă, cărei i se atribuie adresele obiectelor
claselor derivate. Aria trapezului : S=(a+b)h/2.

#include <iostream>
using namespace std;

class Square
{
public:
virtual float aria(float a)
{
cout << endl << "Aria patratului: ";
return a*a;
}
};

class Circle
{
public:
virtual float aria(float a)
{
cout << endl << "Aria cercului: ";
return 3.14*a*a;
}
};

class Triangle
{
public:
virtual float aria(float a, float b)
{
cout << endl << "Aria triunghiului: ";
return a*b*0.5;
}
};

class Trapeze
{
public:
virtual float aria(float a, float b, float c)
{
cout << endl << "Aria trapezului: ";
return (a+b)*c*0.5;
}
};

class Figure: public Square, public Circle, public Triangle, public Trapeze
{ virtual float aria() =0; };

int main()
{
int a,r,b,h1,p,q,h2,i;

cout << "Introduceti latura patratului:"; cin >> a;


cout << "Introduceti raza cercului:"; cin >> r;
cout << "Introduceti latura triunghiului pe care cade inaltimea si inaltimea:"; cin
>> b >> h1;
cout << "Introduceti bazele mica si mare si inaltimea trapezului:"; cin >> p >> q
>> h2;
cout << endl;

Figure *A[4];

cout << A[0]->Square::aria(a);


cout << A[1]->Circle::aria(r);
cout << A[2]->Triangle::aria(b,h1);
cout << A[3]->Trapeze::aria(p,q,h2);
}

Concluzia: În urma efectuării lucrării de laborator am studiat polimorfismul, la fel


am studiat funcțiile virtuale.

S-ar putea să vă placă și