0918ClassContactDeque

Run Settings
LanguageC++
Language Version
Run Command
/** Acest program evidentiaza principiile programarii orientate pe obiecte PROGRAMAREA STRUCTURATA: 1. analiza TOP-DOWN: problema de rezolvat este impartita in subprobleme relativ independente; fiecare subtproblema este analizata in acelasi mod; 2. modularizarea: programul este impartit in mai multe sectiuni(denumite module, subprograme, proceduri sau functii), fiecare modul rezolvand o subproblema a problemei date( in concordanta cu analiza TOP-DOWN a problemei); 3. codul structurat: fiecare modul consta in compunerea celor trei structuri de control fundamentale: secventiala, alternativa, repetitiva; */ #include <iostream> #include <deque> using namespace std; /** Controlul accesului la membrii unei clase: public = membrul poate fi accesat din orice functiedin domeniul de declaratie al clasei; private = membrul poate fi accesat doar din functiile membre ala clasei, precum si functiile prietene(friend) ale clasei; DEFAULT protected = ca efect, este similar cu private, dar, in plus, accesul este permis si pentru functiile membre si functiile prietene ale claselor derivate din clasa respectiva*/ class Contact { public: string nume, prenume, telefon; public: //Constructori Contact(); Contact(string); Contact(string, string); Contact(string, string, string); /** Destructor */ ~Contact(); //get/set functii string getNume(void); void setNume(string n); string getPrenume(void); void setPrenume(string p); string getTelefon(void); void setTelefon(string t); /** Copy constructor creaza un obiect care este initializat cu un obiect al aceleasi clase 1. initializeaza un obiect din alt obiect al aceleasi clase 2. copiaza un obiect pentru a fi pasat ca argument unei functii 3. copiaza un obiect returnat dintr-o functie*/ Contact(const Contact &con); /** Functiile friend au acces la toti membrii private si protected ai clasei */ friend void print(Contact con); friend istream &operator>>(istream &input, Contact &con); friend ostream &operator<<(ostream &output, const Contact &con); int compare(Contact con); }; //Constructor fara argumente Contact::Contact(){ nume = "Andrei"; prenume = " "; telefon = " "; } //Constructor cu un singur argument Contact::Contact(string n){ nume = n; prenume = " "; telefon = " "; } //Constructor cu doua argumente Contact::Contact(string n, string p){ nume = n; prenume =p; telefon = " "; } //Constructor cu trei argumente de tip string Contact::Contact(string n, string p, string t){ nume = n; prenume = p; telefon = t; } // functii get / set pentru variabilele string Contact::getNume(){ return nume; } void Contact::setNume(string n){ nume = n; } string Contact::getPrenume(){ //string p; cout << "Introduce-ti prenumele persoanei: "; cin >> prenume; //prenume = p; return prenume; } void Contact::setPrenume(string p){ prenume = p; } string Contact::getTelefon(){ cout << "Introduce-ti numarul de telefon: "; cin >> telefon; return telefon; } void Contact::setTelefon(string t){ telefon = t; } /** Definirea destructorului : */ Contact::~Contact(void){ cout<< "Obiectul este distrus."; } /** Copy Constructor */ Contact::Contact(const Contact &con){ cout << "Copy constructor alocand pointer"<<endl; //nume = new string; // *nume = *con.nume; } /** Functia friend pentru afisarea contactului*/ void print(Contact *con){ cout<<"Afisare functie PRINT: " ; cout<< con->nume<<" "<<con->prenume<<" "<<con->telefon <<endl; } int Contact::compare (Contact con){ return this->nume > con.nume; } /** Operatorul extraction >>*/ istream &operator>>(istream &input, Contact &con){ input >> con.nume >> con.prenume >> con.telefon; return input; } /** Operatorul insertie <<*/ ostream &operator<<(ostream &output, const Contact &con){ output <<"Nume: "<< con.nume<<" Prenume: "<<con.prenume<< " Telefon: "<<con.telefon; return output; } int main() { cout << "Hello world!" << endl; Contact con5; cin >> con5; cout << con5; //crearea unui contact fara parametrii; Contact* con3 = new Contact(); con3->getNume(); con3->setNume("Vasile"); print(con3); cout << con3->nume; con3->getPrenume(); cout << con3->prenume; /** crearea unui obiect contact cu un parametru */ Contact *con4 = new Contact("vasile"); cout<< con4->getNume(); // adaugarea unui element in deque; deque<Contact> lista_contacte; Contact* con1 = new Contact("Mihai", "Cornel", "0722270796"); print(con1); Contact* con2 = new Contact("Vihai", "Vasile", "0722270796"); if(con1->compare(*con2)){ cout << "con2 este mai mic decat con1"; } else { cout << "con2 este egala sau mai mare decat con1."; } lista_contacte.push_front(*con1); lista_contacte.push_front(*con2); // Iterare deque deque<Contact>::iterator it = lista_contacte.begin(); while(it++ != lista_contacte.end()) cout<<' '<< con1->getNume()<<' '<<con1->prenume<<' '<<con1->telefon<<endl; //iterare deque //for(auto it=lista_contacte.cbegin();it !=lista_contacte.cend(); ++it) //cout<<' '<<con2->prenume; return 0; }
Editor Settings
Theme
Key bindings
Full width
Lines