Mihai Sprinceana
Un forum de programare cu de toate. Va astept sa va inscrieti si sa deveniti moderatori. Oricine este binevenit aici sa se inscrie si sa aiba acces la informatie free! Fiecare este liber sa adauge proiecte programe free etc. Ajutati acest forum sa devina o comunitate puternica unde fiecare invata de la fiecare! Tot ce trebuie sa faceti este sa va inregistrati si fiecare contributie se poate dovedi utila in timp! Forumul este free informatia free dk aveti timp liber ajutati si pe ceilalti si invatati si voi in acelasi timp! Haideti sa facem ceva pt.a ne ajuta intre noi! Cititi regulament postare forum inainte de a posta!
Lista Forumurilor Pe Tematici
Mihai Sprinceana | Inregistrare | Login

POZE MIHAI SPRINCEANA

Nu sunteti logat.
Nou pe simpatie:
OnutzaGirl pe Simpatie.ro
Femeie
24 ani
Galati
cauta Barbat
24 - 51 ani
Mihai Sprinceana / C++ / POO(Progr.orientata pe obiecte)- Clasa individ Moderat de Alric2rei, Conan, cosmy, fireratbat, profu.info, sade5000
Autor
Mesaj Pagini: 1
Conan
Moderator

Inregistrat: acum 17 ani
Postari: 198
/*Sa se implementeze clasa individ care va contine urmatoarele date membru:
varsta si nationalitate. Functii membru:constructor cu parametru,destructor,
functie de afisare si functie de returnare a nationalitatii.
Din clasa individ se va deriva clasa angajat. Date membru:nume,prenume,spe-
cializare. Functii membru:constructor cu parametru,destructor,functie de
afisare,functie de modificare a specializarii.
Din clasa angajat se va deriva clasa programator.Date membru:salariu,tip
programare.Functii membru:constructor,destructor,functie de afisare,functie
de modificare a salariului,functie de returnare a comp.tip programare.
Suplimentar vor exista 2 functii friend si 2 functii inline.In main trebuie
sa existe 3 obiecte din cele 3 clase pentru care apelam functiile apelate
anterior*/

#include<iostream.h>
#include<string.h>
#include<conio.h>

//definirea clasei de baza individ
class individ //cuvant rezervat class urmat de numele clasei
{int varsta;
char *nationalitate;//in zona privata se declar variabile,cuv rezervat private: e optional
    public: //cuv rezervat public:
//in zona publica declaram metode(functii)
    individ(int,char);//definire constructor cu parametru
    individ(individ& );//definire constructor de copiere
    ~individ(); //definire destructor
    void afisare(); //definire functie de afisare
    char *getnatiune();
};

//definirea clasei derivate angajat din clasa individ
class angajat:public individ
{char *nume;
char *prenume;
char *spec;
   public:
    angajat(char*,char*,char*,int,char*);
    ~angajat();
    void afisare();
    void set_specializare(char*);
};

//definirea clasei derivate programator din clasa angajat
class programator:public angajat
{int salariu;
char *tipprg;
public:
programator(char*,char*,char*,int,char*,int,char*);
~programator();
void afisare();
char *getprogramare();
};

//definirea constructorului cu parametru
individ:individ(int v,char *nat)
{varsta=v;
nationalitate=new char[strlen(nat)+1];
assert(nationalitate!=0);
strcpy(nationalitate,nat);
}

//definirea constructorului de copiere pentru clasa individ
individ::individ(individ&X)
{varsta=X.varsta;
nationalitate=new char[strlen(X.nationalitate)+1];
strcpy(nationalitate,X.nationalitate);
}

//definirea destructorului din clasa individ
individ::~individ()
{delete nationalitate;
}

//functia de afisare pentru clasa individ
void individ::afisare()
{cout<<"\nPersoana este de nationalitate:"<<nationalitate<<"si are"<<varsta<<"ani";
}

//functia de returnare a nationalitatii pentru clasa individ
char *individ::getnatiune()
{return nationalitate;
}

//definirea constructorului cu parametru din clasa angajat
angajat::angajat(char *num,char *pren,char *s):individ(v,n)
{nume=new char[strlen(num)+1];
strcpy(nume,num);
prenume=new char[strlen(pren)+1];
strcpy(prenume,pren);
spec=new char[strlen(s)+1];
strcpy(spec,s);
varsta=v;
}

//definirea destructorului din clasa angajat
angajat::~angajat()
{delete nume;
delete prenume;
delete spec;
}

//functia de afisare pentru clasa angajat
void angajat::afisare()
{individ::afisare()
cout<<nume<<"\n"<<prenume<<"\n"<<specializare;
}

//functia de modificare a specializarii a clasei derivate angajat
void angajat::set_specializare(char *s)
{cin>>s;
spec=new char[strlen(s)+1];
strcpy(spec,s);
}

//functia de modificare a salariului pt clasa derivata programator
void programator::set_specializare(int sal)
{salariu=sal;
}

//functia de returnare a componentei tip programare pentru clasa programator
char *programator::getprogramare()
{return tipprg;
}

void main()
{clrscr();
//creaza un obiect numit ind de tip individ(adica din clasa din care face parte)
individ ind(23,"roman" );
//creaza un obiect numit a de tip angajat(adica din clasa din care face parte)
angajat a("Popescu","Virgil","programator",15,"roman" );
programator p("Popescu"," Virgil",20000,"C++","Pascal","roman","programator" );
//creaza un obiect numit p de tip programator(adica din clasa din care face parte)
ind.afisare(); //apeluri functii de afisare
a.afisare();
p.afisare();
}


pus acum 16 ani
   
Conan
Moderator

Inregistrat: acum 17 ani
Postari: 198
/*Implementati clasa individ folosind cele 3 tipuri de constructori,un
destructor,o functie friend cu referire la un anumit camp,o functie de
afisare,o functie inline*/

//partea de directive
#include <conio.h>//directiva contine in prog.principal clrscr() si getch()
#include <iostream.h>//pt.cuvintele cheie cout si cin
#include <assert.h>//foloseste new(alocare) si delete(dealocare)
#include <string.h>//foloseste functia de copiere a sirului strcpy si de
//returnare a lungimii sirului respectiv strlen
#define MAX 15//directiva in care se definesc maxim 15 elemente

//definirea clasei individ
class individ
  {private:
  //zona privata cu date membru practic variabile care le declar
  char *nationalitate,*nume,*prenume,*ocupatie;//date membru
  int varsta,salariu;
  static int nr;//membru static
   public:   //zona publica cu functii membru(constructori,destructor)
     individ();//constructor implicit
     individ(char *,char *,char *,char *,int,int);//constructor cu parametrii
     individ(individ& );//constructor de copiere
     ~individ();//destructor
     void afisare();//functie de afisare
     friend void ocupatie_ind(individ& );  //functie friend
     void pointer_this(); //pointer this
     static int getnr();  //functie membru
};

int individ::nr=0;  //initializare variabila statica
int individ::getnr()  //initializare functie membru
{
return nr;
}

//definire constructor implicit
individ::individ()//nume clasa::si nume fct am definit constructorul implicit
{
nationalitate=new char[2]; //pointerul de alocare new
strcpy(nationalitate," " );
nume=new char[2];
strcpy(nume," " );
prenume=new char[2];
strcpy(prenume," " );
ocupatie=new char[2];
strcpy(ocupatie," " );
varsta=0;
salariu=0;
}

//definire constructor cu parametru
individ::individ(char *Nat,char *Oc,char *Num,char *Pren,int Var,int Sal)
{
nationalitate=new char[strlen(Nat)+1];
assert(nationalitate!=0);//camp nationalitate de tip char
strcpy(nationalitate,Nat);
nume=new char[strlen(Num)+1];//camp nume de tip char
assert(nume!=0);
strcpy(nume,Num);
prenume=new char[strlen(Pren)+1];//camp prenume de tip char
assert(prenume!=0);
strcpy(prenume,Pren);
ocupatie=new char[strlen(Oc)+1];// camp ocupatie de tip char
assert(ocupatie!=0);
strcpy(ocupatie,Oc);
varsta=Var; //camp varsta de tip int
salariu=Sal; //camp salariu de tip int
}

//definire constructor de copiere
individ::individ(individ&X)
{
nationalitate=new char[strlen(X.nationalitate)+1];
assert(X.nationalitate!=0);
strcpy(nationalitate,X.nationalitate);
nume=new char[strlen(X.nume)+1];
assert(X.nume!=0);
strcpy(nume,X.nume);
prenume=new char[strlen(X.prenume)+1];
assert(X.prenume!=0);
strcpy(prenume,X.prenume);
ocupatie=new char[strlen(X.ocupatie)+1];
assert(X.ocupatie!=0);
strcpy(ocupatie,X.ocupatie);
varsta=X.varsta;
salariu=X.salariu;
}

//definire destructor
individ::~individ()
{
delete nationalitate;//delete-operator de dealocare pt.stergerea campurilor char
delete nume;
delete prenume;
delete ocupatie;
}

//afisare date membru
void individ::afisare()
{
cout<<"\nNationalitate: "<<nationalitate;//afisarea campului nationalitate
cout<<"\nNume: "<<ocupatie;//afisarea campului nume
cout<<"\nPrenume: "<<ocupatie;//afisarea campului prenume
cout<<"\nOcupatie: "<<ocupatie;//afisarea campului ocupatie
cout<<"\nVarsta: "<<varsta;//afisarea campului varsta
cout<<"\nSalariu: "<<salariu;//afisarea campului salariu
}

//functie friend-ma refer la campul ocupatie
void ocupatie_ind(individ&X)
{cout<<"Acces la un camp al clasei individ\n";
cout<<X.ocupatie;
}

//pointer this-ma refer la campul nationalitate
void individ::pointer_this()
{cout<<"\nX= "<<nationalitate<<"\nthis->X"<<this->nationalitate<<"\n(*this).X="<<(*this).nationalitate;
}

//programul principal
void main()
{
clrscr();
individ s("Roman","Cosmin","Ivanovici","inginer soft",25,5000);//definirea obiectului
individ s1(s),s2;//definirea pentru constructorul de copiere
individ tab[10];//definire tablou de obiecte
int i,n;
cout<<"n="; //afisare n unde n reprezinta numarul de inregistrare
cin>>n;//citire n
ocupatie_ind(s);
s.afisare();
s.pointer_this();
getch();
}


pus acum 16 ani
   
Pagini: 1  

Mergi la