Ndarja e nderfaqes nga implementimi
Nderfaqet percaktojne dhe standartizojne menyren se si sistemet komunikojne me njeri tjetrin.
Nderfaqja e nje klase percakton cfare sherbimesh mund te perdori nje klient i klases dhe si ti kerkoje keto sherbime, por jo si i mban klasa keto sherbime.
Ndarja e nderfaqes nga implementimi e ben programin me te lehte per t'u modifikuar.
Ndryshimet ne implementimin e klases nuk ndikojne tek klientet per sa kohe qe nderfaqja e klases nuk ndryshon.
Pra eshte teknike me e mire programimi te ndertosh funksionet anetare jashte deklarimit te klases, keshtu qe detajet e implementimit te tyre mund te fshihen nga kodi klient.
Kjo praktike siguron qe programuesit te mos shkruajne kodin klient qe te varet nga detajet e implementimit .Perndryshe kodi klient nuk do te funksiononte nese implementimi i klases do te ndryshonte.
Ne deklarimin e klases shkruhen vetem deklarimet e anetareve te te dhenave dhe prototipet e funksioneve anetare.
Prototipi i nje funksioni i tregon kompilatorit emrin e funksionit, tipin e kthimit , tipet e parametrave te tij dhe rendin e tyre.
Ne skedarin GradeBook.h jane vendosur prototipet e funksioneve anetare. Kurse implementimi i tyre eshte vendosur ne skedarin Gradebook.cpp .
Per cdo anetar funksion te ndertuar jashte deklarimit te klases perkatese, emri i funksionit duhet te filloje me emrin e klases dhe operatorin binar te zgjedhjes se scope-it (::).
Programi i modifikiuar i klases GradeBook:
GradeBook.h
/* GradeBook.h
Deklarimi i klases GradeBook .
Ky skedar perfaqeson nderfaqen publike te klases GradeBook pa shfaqur implementimin
e funksioneve anetare, te cilet jane ndertuar ne GradeBook.cpp.
*/
#include <string>
using std::string;
// deklarimi i klases GradeBook
class GradeBook
{
public:
GradeBook( string ); // konstruktori inicializon emrin e kursit
void setEmriKursit( string ); // funksioni qe vendos emrin e kursit
string getEmriKursit(); // funksioni qe merr emrin e kursit
void afishoMesazh(); // funksioni qe afishon mesazh pershendetje
private:
string emriKursit; // emri i kursit per klasen GradeBook
};
GradeBook.cpp
// GradeBook.cpp
// Ndertimi i funksioneve te klases GradeBook.
// Ky skedar mban implementimin e funksioneve anetare prototipet e te cileve u deklaruan ne skedarin GradeBook.h
#include <iostream>
using std::cout;
using std::endl;
#include "GradeBook.h" // include definition of class GradeBook
// Konstruktori inicializon emriKursit me nje string te kaluar si argument.
GradeBook::GradeBook( string name )
{
setEmriKursit( name ); // thirret funksioni set per inicializimin e emriKursit
} //fund konstruktori
void GradeBook::setEmriKursit( string name )
{
emriKursit = name; // ruan emrin e kursit ne objekt
}
string GradeBook::getEmriKursit()
{
return emriKursit; // kthen emriKursit te objektit
}
void GradeBook::afishoMesazh()
{
cout << "Mirsevini ne librin e notave per\n"
<< getEmriKursit()<< "!" << endl;
}
TestGradeBook.cpp
// TestGradeBook.cpp
// Perfshihet klasa GradeBook nga GradeBook.h per perdorim ne main.
#include <iostream>
using namespace std;
#include "GradeBook.h" // Perfshihet deklarimi i klases GradeBook
int main()
{
GradeBook libri1("Code For Students - C++ ");
GradeBook libri2("Code For Students - JAVA " );
cout << "libri1 u krijua per kursin: "
<< libri1.getEmriKursit()
<< "\nlibri2 u krijua per kursin: "
<< libri2.getEmriKursit()
<< endl;
system("pause");
return 0;
}
Afishon:
libri1 u krijua per kursin: Code For Students - C++
libri2 u krijua per kursin: Code For Students - JAVA
Press any key to continue . . .