Documente Academic
Documente Profesional
Documente Cultură
AL REPUBLICII MOLDOVA
Universitatea Tehnică a Moldovei
Facultatea Calculatoare, Informatică şi Microelectronică
Departamentul Informatică și Ingineria Sistemelor
Gojan Marin
MI-212
Raport
pentru lucrarea de laborator Nr.4
Verificat:
Barâmb Eusebiu, asistent universitar,.
Departamentul Informatică și Ingineria Sistemelor,
Facultatea FCIM, UTM
Chișinău – 2022
SCOPUL LUCRĂRII
studierea compoziţiei
studierea iniţializatorilor
principiul de substituţie
moştenire şi compoziţie
Note teoretice:
- public,
- private,
- protected,
Când o clasă este derivată dintr-o clasă de bază, clasa derivată moşteneşte
toţi membrii clasei de bază (cu excepţia unora: constructori, destructor şi
funcţia operator de asignare). Tipul de acces din clasa derivată la membrii
clasei de bază este dat de specificatorul de acces. Dacă nu este indicat,
specificatorul de acces este implicit private.
Când specificatorul de acces este public, toţi membrii de tip public ai clasei
de bază devin membri de tip public ai clasei derivate; toţi membrii protected ai
clasei de bază devin membri protected ai clasei derivate. Membrii private ai
clasei de bază rămân private în clasa de bază şi nu sunt accesibili membrilor
clasei derivate. Această restricţie de acces ar putea pare surprinzătoare, dar,
dacă s-ar permite accesul dintr-o clasă derivată la membrii private ai clasei de
bază, noţiunile de încapsulare şi ascundere a datelor nu ar mai avea nici o
semnificaţie.
Varianta 6:
а) Să se creeze clasa om, care are numele (pointer spre char), vîrsta, greutatea.
Determinaţi constructorii, destructorul şi operatorul de atribuire. Creaţi clasa
derivata - matur, care are numărul paşaportului. Definiţi constructorii: impliciţi, cu
parametri, destructorul, operatorii fluxului de ieşire. Definiţi funcţiile de resetare a
vîrstei şi a numărului paşaportului.
b) Definiţi clasa vaca care este compusă din următoarele câmpuri: numărul de
identificare – trebuie să fie garantat unic (pentru care se utilizează un contor static),
cantitatea medie de lapte, vîrsta, numele şi rasa. Pentru setarea câmpurilor textuale
utilizaţi operatorul new. Definiţi clasa cireadă, care constă dintr-un număr nelimitat
de vaci. Definiţi metodele de introducere, eliminare, de determinare a cantităţii
medii de lapte în cireadă şi cantitatea totală de lapte în cireadă şi alte funcţii
necesare.
Codul programului, având comentarii relevante în el:
Varianta 6(a)
Main.cpp :
#include "Matur.h"
#include <vector>
int main()
{
vector<Matur> oameni;
oameni.push_back(Matur("Ion", 20, 70, "1234567890123"));
oameni.push_back(Matur("Maria", 21, 60, "1234567890124"));
oameni.push_back(Matur("Gheorghe", 22, 80, "1234567890125"));
oameni.push_back(Matur("Ana", 23, 50, "1234567890126"));
for (int i = 0; i < oameni.size(); i++)
{
cout << "-----------------\n";
cout << oameni[i] <<endl;
}
}
Matur.h :
#pragma once
#include "Om.h"
class Matur : public Om
{
private:
string IDNP;
public:
Matur() : Om()
{
IDNP = "0000000000000";
}
Matur(string nume, int varsta, double greutate, string
IDNP) : Om(nume, varsta, greutate)
{
this->IDNP = IDNP;
}
void setIDNP(string IDNP)
{
this->IDNP = IDNP;
}
void setVarsta(int varsta)
{
this->varsta = varsta;
}
friend ostream& operator<<(ostream& out, const Matur&
m)
{
out << "Nume: " << m.nume << endl;
out << "Varsta: " << m.varsta << endl;
out << "Greutate: " << m.greutate << endl;
out << "IDNP: " << m.IDNP << endl;
return out;
}
};
Om.h :
#pragma once
#include <iostream>
#include <string>
class Om
{
protected:
string nume;
int varsta;
double greutate;
public:
Om()
{
nume = "Anonim";
varsta = 0;
greutate = 0;
}
Om(string nume, int varsta, double greutate)
{
this->nume = nume;
this->varsta = varsta;
this->greutate = greutate;
}
Om& operator=(const Om& o)
{
this->nume = o.nume;
this->varsta = o.varsta;
this->greutate = o.greutate;
return *this;
}
};
Figura 1. Imprimarea de pe ecran a execuției programului
CONCLUZIE