Vizitatori
Avem 8 vizitatori online
|
Programare orientată obiect |
Proiect (aplicație realizată în C++ cu fișiere). Cerințe:
- prezentarea problemei și a limitelor aplicației
- reprezentarea grafică (UML: diagrama claselor) a clasei de bază și a claselor derivate (minim 2 clase derivate)
- trebuie definiți constructori (vid, inițializare, copiere), destructor, supraincărcați operatorii insertor și extractor, minim o metodă specifică clasei
- meniul aplicației trebuie să conțină funcționalitatea de bază (vizualizarea, căutare, adăugare, editare, ștergere)
- fișierul trebuie să conțină minim 10 inregistrări reale
- prezentarea și interpretarea rulării pentru cel puțin 2 exemple concrete diferite
Laborator
- Reguli de scriere a codului:
- consistenta # folositi acealeasi reguli in mod unitar in tot codul
- 2 spatii pentru indentare, fara tab-uri # permite afisarea corecta indiferent de editor
- 80 caractere pentru o linie de cod # liniile lungi sunt greu de urmarit
- nume variabile: numele trebuie sa fie descriptiv, exprimat prin substantive, fara abrevieri (exceptie: abrevieri general valabile); litere mici, cuvintele separate prin undescore '_': double capital_social;
- nume functii: numele trebuie sa fie descriptiv, exprimat prin verbe, fara abrevieri (exceptie: abrevieri general valabile); litere mari la inceput de cuvinte fara a le separa prin undescore '_': double ExtrageSuma(double suma);
- operatorii binari au spatii de o parte si de alta: double sold = 0.0;
- conditiile trebuie se fie clare, trecand de fiecare data explicit conditia de test fara a presupune ca ea se evalueaza automat la false (zero) sau true (diferit de zero), constanta plasata in partea stanga petru a evita atribuirea nedorita: if (true == continua) ...
- persoana.h
#ifndef PERSOANA_H_ #define PERSOANA_H_
class Persoana { public: Persoana(char *nume_); ~Persoana(); void Write(); void Read();
private: char nume[30]; };
#endif // PERSOANA_H
- persoana.cpp
#include <iostream> #include <string.h> #include "persoana.h"
using namespace std;
Persoana::Persoana(char *nume_) { cout<<"Constructor Persoana::Persoana()"<<endl; strcpy(nume, nume_); } Persoana::~Persoana() { cout<<"Destructor Persoana::~Persoana()"<<endl; } void Persoana::Write() { cout<<"nume:"<<nume<<endl; } void Persoana::Read() { cout<<"nume="; cin>>nume; }
- persoana_fizica.h
#ifndef PERSOANA_FIZICA_H_ #define PERSOANA_FIZICA_H_
#include "persoana.h"
class PersoanaFizica : public Persoana { public: PersoanaFizica(char *nume_, char *CNP_); ~PersoanaFizica(); void Write(); void Read();
private: char CNP[14]; };
#endif // PERSOANA_FIZICA_H
- persoana_fizica.cpp
#include <iostream> #include <string.h> #include "persoana_fizica.h"
using namespace std;
PersoanaFizica::PersoanaFizica(char *nume_, char *CNP_) : Persoana(nume_) { cout<<"Constructor PersoanaFizica:PersoanaFizica()"<<endl; strcpy(CNP, CNP_); } PersoanaFizica::~PersoanaFizica() { cout<<"Destructor PersoanaFizica::~PersoanaFizica()"<<endl; } void PersoanaFizica::Write() { this->Persoana::Write(); cout<<"CNP:"<<CNP<<endl; } void PersoanaFizica::Read() { this->Persoana::Read(); cout<<"CNP="; cin>>CNP; }
- persoana_test.cpp
$ g++ persoana.cpp persoana_fizica.cpp persoana_test.cpp -o persoana_test ./persoana_test
#include "persoana_fizica.h"
int main() { PersoanaFizica x("Popescu", "1234567890123"); x.Write(); x.Read(); x.Write(); return 0; }
Resurse
Bibliografie
- Stroustrup B. - „The C++ Programming Language, Third Edition”, Editura Addison-Wesley, 1997;
- Sutter H., Alexandrescu A. - „C++ Coding Standards: 101 Rules, Guidelines, and Best Practices”, Editura Addison-Wesley, 2010;
- Schildt H. - „C++. Manul complet, Editura Teora”, 1998;
- Jamsa K., Klander L. - „Totul despre C si C++”, Editura Teora, 2001;
|
|