Sunteți pe pagina 1din 7

MINISTERUL EDUCAȚIEI

AL REPUBLICII MOLDOVA
Universitatea Tehnică a Moldovei
Facultatea Calculatoare, Informatică şi Microelectronică
Departamentul Microelectronică si Inginerie Biomedicală

IBM-211 Mardari Mihaela

Raport
pentru lucrarea de laborator Nr.4

la cursul de “Programarea Orientată pe Obiecte”

Verificat:
Barîmb Eusebiu, asistent universitar,
Departamentul Microelectronică si Inginerie Biomedicală,
Facultatea CIM, UTM

Chișinău – 2022

1
CUPRINS

1. Scopul lucrării:.......................................................................................................................3

1.1. Sarcina lucrării:..................................................................................................................3

2.1 Problema:1..........................................................................................................................4

2.2 Concluzia:..........................................................................................................................13

2
Tema: Moştenirea şi compoziţia

1. Scopul lucrării:
 studierea moştenirii, avantajele şi dezavantajele
 studierea compoziţiei
 studierea regulilor de definire a moştenirii şi compoziţiei
 studierea formelor de moştenire
 studierea iniţializatorilor
 principiul de substituţie
 moştenire şi compoziţie

1.1 Sarcina lucrării:

Varianta 9

а) Să se creeze o ierarhie a claselor presă – ziar, revistă şi ziar electronic. Determinaţi


câmpurile: denumirea ziarului, tirajul, indexul de abonare, periodicitatea de publicare. Pentru
setarea cîmpurilor textuale, utilizaţi operatorul new. Definiţi fluxul de ieşire şi fluxul de
intrare, constructorul de copiere, operatorul de atribuire prin funcţia corespunzătoare a clasei
de bază.

Codul Programului:

#include <iostream>
#include <bits/stdc++.h>
using namespace std;
class ziar{
char *denumire, *period;
int tiraj, index;
public:
ziar(){
3
denumire = NULL;
tiraj = 0;
period = 0;
index = 0;
}
void input(int Tiraj, char *Period, int Index, char *Denumire){
this->tiraj = Tiraj;
this->index = Index;
this->period = new char [strlen(Period)+1];
strcpy(this->period, Period);
this->denumire = new char [strlen(Denumire)+1];
strcpy(this->denumire, Denumire);
}
void out(){
cout << "Denumirea: " << this->denumire << endl;
cout << "Tirajul: " << this->tiraj << endl;
cout << "Iindexul de abonare: " << this->index << endl;
cout << "Periodicitatea de publicare: " << this->period <<
endl;
}
ziar(const ziar &z){
//constructor de copiere;
this->denumire = z.denumire;
this->tiraj = z.tiraj;
this->period = z.period;
this->index = z.index;
}
void operator = (ziar &other){
this->denumire = other.denumire;
this->tiraj = other.tiraj;
this->period = other.period;
this->index = other.index;
}
};
class revista : public ziar{};
class ziar_electronic : public ziar{};
int main(){
system("cls");
int Tiraj, Index;
char *Denumire = new char [256];
4
char *Period = new char [256];
ziar *Z = new ziar();
cout << "\tZiar" << endl;
cout << "Introduceri denumirea: ", cin >> Denumire;
cout << "Introduceri tirajul: ", cin >> Tiraj;
cout << "Introduceri indexul de abonare: ", cin >> Index;
cout << "Introduceri periodicitatea de publicare: ", cin >> Period;
Z->input(Tiraj, Period, Index, Denumire);
revista *R = new revista;
cout << "\tRevista" << endl;
cout << "Introduceri denumirea: ", cin >> Denumire;
cout << "Introduceri tirajul: ", cin >> Tiraj;
cout << "Introduceri indexul de abonare: ", cin >> Index;
cout << "Introduceri periodicitatea de publicare: ", cin >> Period;
R->input(Tiraj, Period, Index, Denumire);
ziar_electronic *ZE = new ziar_electronic;
cout << "\tZiar electronic" << endl;
cout << "Introduceri denumirea: ", cin >> Denumire;
cout << "Introduceri tirajul: ", cin >> Tiraj;
cout << "Introduceri indexul de abonare: ", cin >> Index;
cout << "Introduceri periodicitatea de publicare: ", cin >> Period;
ZE->input(Tiraj, Period, Index, Denumire);
cout << endl; Z->out();
cout << endl; R->out();
cout << endl; ZE->out();
ziar *Z2 = Z;
cout << endl << "Ziarul copiat:"; Z2->out();
}

5
MENIUL PROGRAMULUI

Figura 1. Afisarea Rezultatelor

CONCLUZIA

Prin realizarea acestei lucrări de laborator am conștientizat posibilitățile de


utilizare constructorilor a limbajului C++. Am observat că acest limbaj oferă mari posibilități
programatorului. Derivarea permite definirea într-un mod simplu, eficient şi flexibil a unor
clase noi prin adăugarea unor funcţionalităţi claselor deja existente, fără să fie necesară
reprogramarea sau recompilarea acestora. Clasele derivate exprimă relaţii ierarhice între
6
conceptele pe care acestea le reprezintă şi asigură o interfaţă comună pentru mai multe clase
diferite.

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