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 . . .