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
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;
}
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();
}
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;
}
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]