Sunteți pe pagina 1din 3

Laborator 9

Reutilizarea claselor
Probleme

PROBLEMĂ REZOLVATĂ:

SeparaŃi interfaŃa clasei GradeBook din laboratorul 4 de implementarea ei, iar apoi
demonstraŃi folosirea clasei printr-un exemplu.

REZOLVARE:

1. InterfaŃa clasei GradeBook – fişierul gradebk.h

// Fisierul gradebk.h
// Definirea clasei GradeBook. Acest fisier prezinta interfata publica
// fara a dezvalui detalii de implementare despre functiile membre ale
// clasei GradeBook, care sunt definite in gradebk.cpp

class GradeBook
{
public:
GradeBook( char* );
void setCourseName( char* );
char* getCourseName();
void displayMessage();
private:
char courseName[50];
};

2. Implementarea clasei GradeBook – fişierul gradebk.cpp

// Fisierul gradebk.cpp
// Definirea functiilor membre ale clasei GradeBook. Acest fisier contine
// implementarea functiilor membre al caror prototip se afla in gradebk.h

#include <iostream.h>
#include <string.h>
#include "gradebk.h"

GradeBook::GradeBook( char* name )


{
setCourseName( name );
}

1
void GradeBook::setCourseName( char* name )
{
strcpy(courseName,name);
}

char* GradeBook::getCourseName()
{
return courseName;
}

void GradeBook::displayMessage()
{
cout << "Welcome to the grade book for\n" << getCourseName()
<< "!" << endl;
}

3. Exemplu de utilizare a clasei GradeBook – fişierul lab9.cpp

// Exemplu de utilizare a clasei GradeBook


// dupa separarea interfetei de implementare

#include <iostream.h>
#include "gradebk.cpp"

int main()
{
GradeBook gradeBook1( "CS101 Introducere in C++" );
GradeBook gradeBook2( "CS102 Structuri de date in C++" );

cout << "gradeBook1 creat pentru cursul: " << gradeBook1.getCourseName()


<< endl << "gradeBook2 creat pentru cursul: " <<
gradeBook2.getCourseName() << endl;

gradeBook1.displayMessage();
return 0;
}

4. Includerea fişierelor gradebk.cpp şi lab8.cpp într-un proiect lab8.prj

a. Meniul Project – Open Project, se introduce lab9.prj şi apoi OK


b. Includerea fişierelor gradebook.cpp şi lab9.cpp în proiect
c. Meniul Compile – Run

2
5. Procesul de compilare şi link-editare care generează aplicaŃia finală

PROBLEME PROPUSE:

1. Pornind de la una din problemele din laboratoarele precedente, rescrieŃi-o separând


definiŃia claselor de folosirea lor într-o aplicaŃie, conform exemplului de mai sus.

2. Acelaşi lucru ca mai sus, doar că veŃi alege o aplicaŃie care să conŃină cel puŃin două clase,
între care să fie o relaŃie de moştenire.

S-ar putea să vă placă și