[Tutorial C/C++/C#] Programare Orientata pe Obiect II

Locked
User avatar
LaUR SNG
Fondator
Fondator
Posts: 9038
Joined: 8 years ago
Location: SNAGOV
Has thanked: 11 times
Been thanked: 6 times
Zodiac:
Age: 21
Contact:
Status: Offline
Romania

8 years ago

Nume Tutorial: C++ Programare Orientata pe Obiect (partea II)
Descriere: Am revenit. Vom continua un pic, de unde am lasat partea I.
Download:-
Autor:C++
Sursa (Link-ul oficial):-
Propria parere:Folositor ;)
Tutorialul: Mai fos .


Mai exista o metoda de a scrie programul de mai sus, un pic mai complexa, dar care ajuta enorm la procesul de debugging. Vom avea de-a face cu doua fisiere. Conventional vom folosi numele clasei pentru a numi fisierele. Pentru exemplul cu contul bancar vom crea doua fisiere: cont.h si cont.cpp. Pentru usurinta scrierii programului principal vom mai crea un fisier, pe care il numim main.cpp. Voi afisa acum codul pentru fiecare fisier, ramanand ca in cele din urma si comentez ce anume am facut.

cont.h

Code: Select all

#ifndef CONT_H

#define CONT_H



#include <iostream.h>



class Cont{

private:

   int suma;

public:

   Cont(int initSuma);

   getSuma();

   setSuma(int newSuma);

};

 #endif
cont.cpp

Code: Select all

#include <iostream.h>

#include "cont.h"



Cont::Cont(int initSuma) {

//                 ^initSuma=variabila de tip int cu care se va initializa atributul suma al clasei Cont

     Cont.suma=initSuma;

}

Cont:: getSuma(){

      cout<<Cont.suma;

}

Cont::setSuma(int newSuma){

      Cont.suma=newSuma;

}
main.cpp

Code: Select all

#include <iostream.h>

#include <conio.h>

#include "cont.h"

int main(){

   Cont contBanca1= new Cont(120);

   contBanca1.getSuma();

   contBanca1.setSuma(300);

   contBanca1.getSuma();

   getch();

}
Se complica un pic, dar credeti-ma ca este mult mai usor mai tarziu metoda asta. De aceea, de acum inainte vom face clasele din doua fisiere, iar functia main va avea un fisier separat.

cont.h -> fisierul are extensia .h, deci va fi un fisier de tip header. Acesta contine clasa cu toate atributele, respectiv metodele. Din cate puteti observa metodele/func?iile sunt doar enumerate.

cont.cpp[/b ] -> acest fisier are extensia cpp, este un fisier de tipul C++. Acesta va contine detaliile metodelor/functiilor, dupa cum puteti observa mai sus. Nu va speriati de "::", e un operator specific POO, nu intru in detalii.

[ b]main.cpp -> din nou un fisier C++, acesta va include de fiecare data fisierul .h al clasei, in cazul nostru "cont.h", acelasi lucru valabil si pentru cont.cpp.

Nu trebuie si memorati felul in care este structurat programul, veti face asta involuntar, pe masura ce dobanditi experienta.

CE ANUME ESTE SPECIFIC POO-ului?

Fac o mica recapitulare:

Atribute. Acestea sunt datele care vor fi prelucrate in interiorul clasei. Nu uitati si le declarati private, si public doar cand este cazul.

Metode. Sunt functiile care prelucreaza datele clasei; de obicei acestea se declara public. Obisnuiti-va si creati metode care si returneze valoarea fiecarui atribut, in parte, dar si metode care si duca modificarea acestuia. Vezi in exemplu, metodele getSuma(); si setSuma(); Interesant este faptul ca poti apela o metoda in interiorul altei metode. Exemplu: daca am vrea ca inainte de a modifica suma unui cont bancar, si afiaam valoare precedenta, am proceda in felul urmator:

Code: Select all

Cont::setSuma(newSuma){

       cout<<"Suma precedenta:";

       Cont::getSuma();

       Cont.suma=newSuma;

}
Exista ?i metode speciale cum ar fi constructorul ?i destructorul.

Constructorul. Va purta numele clasei si este de preferabil, chiar daca acesta(constructorul) nu va face nimic(corpul metodei este gol), si fie declarat oricum. Nu pot zice mare lucru aici, este o metoda ca oricare alta, de obicei aceasta se folosedte pentru a initializa anumite date, ca in exemplul nostru, sau sa apeleze alte metode, depinde de caz.

Destructorul. Acesta poate lipsi, si va avea semnul ~ in fata numelui clasei (in cazul nostru destructorul s-ar numi ~Cont(). Interesant este faptul ca destructorul se va apeleaza ultima acolada al functiei main, al exemplului nostru.

Tema: Creati destructorul pentru clasa Cont care sa afiseze "Contul a fost sters. Avea suma [x]", unde in loc de x va fi suma contului. Obligatoriu, vreau sa vad acest lucru cum se intampl?, adica sa vad cum se afiseaza, fara ca fereastra de consola sa se inchid?.[/b]
„Iubiti totul cu toată inima ... căci viața se termină când vrea ea si pe nepusă masă !” – LaUR SNG

https://photos.app.goo.gl/WbQsF4C9QfvDvWSo6

Curios ? Nu il deschide :13:

[spoiler]Image[/spoiler]
[spoiler]Image[/spoiler]

https://www.facebook.com/10043517804227 ... 039605115/
Locked

Return to “C / C++ / C#”