Sunteți pe pagina 1din 3

#include <iostream>

using namespace std;


class Bicicleta
{
private:
char * model;
float pret;
int nr_pinioane;
float* diametru_pinioane; //vector
bool cu_roti_ajutatoare;
public:
void afisare_functie()
{
cout << this->model << " " << this->pret << " " << this->nr_pi
nioane << " " << this->cu_roti_ajutatoare << " ";
for (int i = 0;i<this->nr_pinioane - 1;i++)
cout << this->diametru_pinioane[i] << " ,";
cout << this->diametru_pinioane[this->nr_pinioane - 1] << ".";
}
void set_pret(float pret)
{
if(pret>0)
this->pret = pret; //atributul pret =parametru
}
void set_pret_exceptie(float pret)
{
if (pret > 0)
this->pret = pret; //atributul pret =parametru
else
throw "pretul e prea mic";
}
int set_pret_conditie(float pret) //cu conditie
{
if (pret > 0)
{
this->pret = pret; //atributul pret =parametru
return 1;
}
else
return 0;
}
float get_pret()
{
return this->pret;
}
void set_model(char* model)
{
if (model != NULL && strlen(model) > 0)
{

//eroare == memory leak (nu am dezalocat memoria)


this->model = new char[strlen(model) + 1];
strcpy(this->model, model);
}
}
char*get_model()
{
return this->model;
}
void set_roti(bool cu_roti_ajutatoare)
{
if(cu_roti_ajutatoare>0)
this->cu_roti_ajutatoare = cu_roti_ajutatoare;
}
bool get_roti()
{
return this->cu_roti_ajutatoare;
}
void set_pinioane(int nr, float* diametru)
{
if (nr > 0)
{
this->nr_pinioane = nr;
//eroare->memory leak
this->diametru_pinioane = new float[nr];
for (int i = 0;i < nr;i++)
this->diametru_pinioane[i] = diametru[i];
}
}
float* get_diamentru_pinioane()
{
return this->diametru_pinioane;
}
float get_diametru_pozitie(int pozitie)
{
if (pozitie >= 0 && pozitie < this->nr_pinioane)
return this->diametru_pinioane[pozitie];
else
throw "pozitie incorecta";
}
};
//Bicicleta initializare(char* model, float pret, int nr, float*diametru_pinioan
e, bool cu_roti)
//{
//
Bicicleta b;
//
b.model = new char[strlen(model) + 1];
//
strcpy(b.model, model);
//
b.pret = pret;
//
b.nr_pinioane = nr;
//
b.diametru_pinioane = new float[nr];
//
for (int i = 0;i<nr;i++)
//
b.diametru_pinioane[i] = diametru_pinioane[i];
//
b.cu_roti_ajutatoare = cu_roti;
//
return b;
//}

void main()
{
Bicicleta b;
if (b.set_pret_conditie(-1000) == 1)
cout << b.get_pret() << endl;
else
cout << "pretul nu a fost setat"
<< endl;
b.set_model("Pegas");
cout << b.get_model() << endl;
b.set_roti(true);
cout << b.get_roti() << endl;
try
{
b.set_pret_exceptie(-5);
//cod de rulat
//se incaerca a fi rulat;
}
catch ( char*exceptie /*tip exceptie*/)
{
cout << "A fost captata o exceptie: " << exceptie << endl;
}
cout << b.get_diamentru_pinioane()[0]; //il indexam
cout << b.get_diamentru_pinioane()[1];
cout << b.get_diamentru_pozitie(0); //aici nu se mai face indexare
cout << b.get_diamentru_pozitie(1);
/*Bicicleta b;
float vector[7];
for (int i = 0;i<7;i++)
vector[i] = i + 2;
b = initializare("Pegas", 1000, 7, vector, false);
b.afisare_functie;
Bicicleta * pBicicleta = &b;
Bicicleta*pBicicleta2 = new Bicicleta();
Bicicleta*vector = new Bicicleta[3];
Bicicleta**pVector = new Bicicleta*[3];
*/
}
//incapsulare=accesul controlat la clase
//metode de acces get si set;
//get=au tipul returnat tipul atributului
//setter=moficia valoarea atributului ;nu returneaza nimic (void set_pret)
//
primeste un parametru de tipul atributului pe care urmeaza sa il setam
//
setter este de tip void
// float get_pret =nu primeste niciun parametru
//this=adresa la obiectul curent
//la apel dam si lista de parametri atunci cand apelam o functie!! chiar daca es
te vida ,adica()
//A nu se folosi cout si cin in functiile membre !! Doar in cele de afisare si d
e citire

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