Căutare

Autentificare



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:
    1. consistenta # folositi acealeasi reguli in mod unitar in tot codul
    2. 2 spatii pentru indentare, fara tab-uri # permite afisarea corecta indiferent de editor
    3. 80 caractere pentru o linie de cod # liniile lungi sunt greu de urmarit
    4. 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;
    5. 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);
    6. operatorii binari au spatii de o parte si de alta: double sold = 0.0;
    7. 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

  1. Stroustrup B. - „The C++ Programming Language, Third Edition”, Editura Addison-Wesley, 1997;
  2. Sutter H., Alexandrescu A. - „C++ Coding Standards: 101 Rules, Guidelines, and Best Practices”, Editura Addison-Wesley, 2010;
  3. Schildt H. - „C++. Manul complet, Editura Teora”, 1998;
  4. Jamsa K., Klander L. - „Totul despre C si C++”, Editura Teora, 2001;