Documente Academic
Documente Profesional
Documente Cultură
Lab3 DPP
Lab3 DPP
RAPORT
Lucrarea de laborator nr.3
A efectuat:
st. gr. MAI_211M Gorea Filip
Chişinău -2021
Tema: Moştenirea şi compoziţia.
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
Varianta 8
а) Să se creeze ierarhia de clase bloc de studiu - clasa de bază abstractă şi instituţie preşcolară,
instituţie şcolară medie şi instituţie de învăţămînt superior – clase derivate. Să se supraîncarce
fluxul de ieşire şi fluxul de intrare, să se definească constructorul de copiere, operatorul de
atribuire prin funcţiile corespunzătoare ale clasei de bază.
b) Să se creeze clasa motor, care are o firmă producătoare, tip şi putere. Determinaţi funcţiile de
setare, de schimbare a parametrilor motoarelor. Creaţi o ierarhie a claselor: corabie – clasa de
bază şi vapor pentru pasageri – derivată. Corabia are un motor, capacitate de încărcare, măsurător
de apă, denumire, portul unde este înscris. Pentru setarea cîmpurilor textuale, utilizaţi operatorul
new.
Codul programului a):
#include <iostream>
#include <cstdlib>
#include <cstring>
#include <string.h>
#include <bits/stdc++.h>
using namespace std;
public:
blocStudiu() {
this->BS = new char[100];
}
institutiePrescolara() {
this->IP = new char[100];
}
instScolMed() {
ISM = new char[100];
}
instinvSup() {
IIS = new char[100];
}
int main() {
int n;
blocStudiu *bs1;
institutiePrescolara *ip1;
instScolMed *ism1;
instinvSup *iis1;
return 0;
}
Rezultatul programului:
#include <iostream>
#include <cstdlib>
#include <cstring>
#include <string.h>
#include <new>
motor() {
firma = new char[100];
tip = new char[100];
putere = 0;
}
motor(const motor &m) {
strcpy(this->firma, m.firma);
strcpy(this->tip, m.tip);
this->putere = m.putere;
}
return (in);
}
void schimbare() {
int ch;
cout << "Doriti Sa Schimbati Firma Productoare? 1)Da 2)Nu ";
cin >> ch;
if (ch == 1) {
this->firma = new char[100];
cout << "Introdu Firma Productoare Nou: ";
cin >> this->firma;
}
return (in);
}
int main() {
motor *m;
vapor *v;
char *search = new char[101];
int n, ch, searc;
while (1) {
cout << "********** Pentru Motoarele **********" << endl << endl;
cout << "1) Introducerea." << endl;
cout << "2) Afisarea(MOTOR)." << endl;
cout << "3) Schimbarea(MOTOR)." << endl;
cout << "4) Afisarea(Vapor)." << endl << endl;
cout << "Alegeti o varianta: ";
cin >> ch;
cout << endl;
switch (ch) {
case 1: {
for (int i = 0; i < n; ++i) {
cin >> m[i];
v[i].motoare = m[i].tip;
cout << endl;
cin >> v[i];
cout << endl;
}
}
break;
case 2: {
for (int i = 0; i < n; ++i) {
cout << endl;
cout << m[i];
cout << endl;
}
}
break;
case 3: {
searc = 0;
cout << "Ce Doriti Sa Schimbati: ";
cin >> search;
for (int i = 0; i < n; ++i) {
if (m[i].search(search) == true) {
searc++;
}
}
if (searc > 2) {
cout << "Care " << search << ": " << endl;
for (int i = 0; i < n; ++i) {
if (m[i].search(search) == true) {
cout << i << ") ";
cout << m[i];
}
}
cin >> ch;
m[ch].schimbare();
} else if (searc == 1) {
for (int i = 0; i < n; ++i) {
if (m[i].search(search) == true) {
m[i].schimbare();
}
}
}
}
break;
case 4:{
for (int i = 0; i < n; ++i) {
cout << endl;
cout << v[i];
cout << endl;
}
}
break;
}
}
return 0;
}
Rezultatul programului:
Concluzii :
In rezultatul elaborarii lucrarii date s-a pus baza aplicarii in practica a cunostintelor
teoretice referitoare la mostenire.
Astfel se poate judeca despre posibilitatile largi acordate de limbajul C++ referitor
la manipularea claselor.