You are on page 1of 4

MINISTERUL EDUCAŢIEI TINERETULUI ŞI SPORTULUI AL

REPUBLICII MOLDOVA
Facultatea Calculatoare, Informatică şi Microelectronică

Universitatea Tehnică a Moldovei

Catedra Calculatoare

Programare C++
Lucrare de laborator №4

Tema: Clasele derivate cu moştenire multiplă.

A elaborat : Virlan Rodion


grupa C-074

A verificat : Plotnic Constantin

Chişinău 2009

Scopul lucrării: familiarizarea studenţilor cu clasele derivate cu moştenirea


multiplă.
Sarcina :
Să se calculeze cît timp a trecut de la începutul erei noastre. Structurile de bază sînt
deceniu = {veac,era}, timp = {ora,minuta,secunda} ,data = {zi,luna,an}.

Listing:
#include <stdio.h>
#include <conio.h>
#include <iostream.h>
#include <dos.h>

class Deceniu
{
protected:
long double veac;
long double era;
public:
Deceniu(){era=0;veac=0;};
Deceniu(int a,int b){era=a;veac=b;};
~Deceniu(){};
};
class Data
{
protected:
long double zi;
long double luna;
long double an;
public:
Data(){zi=0;luna=0;an=0;}
Data(int a,int b,int c){an=a;luna=b;zi=c;};
~Data(){};
};
class Timp: public Deceniu, public Data
{
long double ora;
long double minuta;
long double secunda;
public:
Timp(){ora=0;minuta=0;secunda=0;}
Timp(int a,int b,int c,int d,int e,int f,int g,int
h):Deceniu(a,b),
Data(c,d,e){ora=f;minuta=g;secunda=h;}
//(Era-veac-an-luna-zi-ora-minuta-secunda)
void Set_timp();
void Timpul();
friend ostream& operator<<(ostream&,Timp&);
Timp operator-(Timp&);
Timp operator=(Timp&);
~Timp(){};
};
//--- Implimentarea Metodelor clasei
---------------------------------------
ostream& operator<<(ostream& outf,Timp& ob)
{
outf<<"Era="<<ob.era<<", Veacuri="<<ob.veac<<", Ani="<<ob.an<<
", Luni="<<ob.luna<<", Zile="<<ob.zi<<",
Ore="<<ob.ora<<",\nMinute="<<ob.minuta
<<", Secunde="<<ob.secunda<<endl;
return outf;
}
Timp Timp::operator-(Timp &dreapta)
{
Timp ob;
ob.era=era-dreapta.era;
ob.veac=veac-dreapta.veac;
ob.an=an-dreapta.an;
ob.luna=luna-dreapta.luna;
ob.zi=zi-dreapta.zi;
ob.ora=ora-dreapta.ora;
ob.minuta=minuta-dreapta.minuta;
ob.secunda=secunda-dreapta.secunda;
return ob;
}
Timp Timp::operator=(Timp &dreapta)
{
era=dreapta.era;
veac=dreapta.veac;
an=dreapta.an;
luna=dreapta.luna;
zi=dreapta.zi;
ora=dreapta.ora;
minuta=dreapta.minuta;
secunda=dreapta.secunda;
return *this;
}
void Timp::Set_timp()
{
int a;
cout<<"\nIntrodu data actuala:";
cout<<endl<<"Era:";
cin>>a;
era=a;
cout<<"Veacul:";
cin>>a;
veac=a;
cout<<"Anul:";
cin>>a;
an=a;
cout<<"Luna:";
cin>>a;
luna=a;
cout<<"Ziua:";
cin>>a;
zi=a;
cout<<"Ora:";
cin>>a;
ora=a;
cout<<"Minuta:";
cin>>a;
minuta=a;
cout<<"Secunda:";
cin>>a;
secunda=a;
}
void Timp::Timpul()
{
luna=an*12+luna;
zi=luna*30+zi;
ora=zi*24+ora;
minuta=ora*60+minuta;
secunda=minuta*60+secunda;
}
//---------- Program principal
-----------------------------------------
int main()
{
//Formatul (Era-veac-an-luna-zi-ora-minuta-secunda)
Timp D1(0,0,0,0,0,0,0,0);
Timp D2(1,21,2005,11,7,14,60,30),D3;
clrscr();
D2.Set_timp();
D2.Timpul();
D3=D2-D1;
cout<<D2;
getch();
return 0;
}
Rezultatele:

Concluzii:

În procesul de creare a programului am facut cunoştinţă cu clasele derivate cu


moştenire multiplă. Am observat ca moştenirea permite realizarea ierarhielor
de clase, care să modeleze adecvat sisteme complexe. Aceasta metodă permite
repartizarea unei sarcini complexe in probleme mai simple.

You might also like