Programarea modulara permite protejarea datelor prin memorie statica, (accesul la date se poate efectua doar din locul declararii pana la sfarsitul modulului, nu si in afara lui).
Un tip abstract de data (Domeniu, Operatii) contine o interfata ("Tad.h") si o implementare ("Tad.Cpp"). Programul ("Program.Cpp") care utilizeaza acest tip abstract de data va avea acces doar la modulul de interfata, asa cum se poate vedea in schema de mai jos:
In proiect (meniul Project) vor fi incluse fisierele Program.Cpp si Tad.Cpp.
In exemplul urmator, pentru Tad Multime, fisierele vor fi PMult.Cpp, Mult.h si Mult.Cpp:
PMult.Cpp
#include <conio.h>
#include <iostream.h>
#include 'Mult.h'
void main (void)
Mult.h
#include 'ElMult.h' // Sunt definite elementele multimii
struct Cet;
typedef Cet *Multime;
void Init (Multime &A);
int Card (Multime A);
int E_Vida (Multime A);
void Vida (Multime A);
void AdEl (TEl x, Multime A);
void CitM (Multime A);
void TipM (Multime A);
int Apart (TEl x, Multime A);
void Inters (Multime A, Multime B, Multime C);
void Dif (Multime A, Multime B, Multime C);
void Reun (Multime A, Multime B, Multime C);
int Inclus (Multime A, Multime B);
int Egale (Multime A, Multime B);
Multime DifEl (Multime A, TEl a);
Multime Difer (Multime A, Multime B);
PMult.Cpp
#include <iostream.h>
#include <conio.h>
#include 'ElMult.h'
#include 'Mult.h'
typedef struct Cet ;
int Card (Multime A)
void CitM (Multime A)
void TipM (Multime A)
int Apart (TEl x, Multime A)
void Inters (Multime A, Multime B, Multime C)
void Dif (Multime A, Multime B, Multime C)
Multime DifEl (Multime A, TEl a)
else return A;
Multime Difer (Multime A, Multime B)
Multime Difer (Multime A, Multime B)
void Reun (Multime A, Multime B, Multime C)
int Inclus (Multime A, Multime B)
int Egale (Multime A, Multime B)
int Egale (Multime A, Multime B)
void AdEl(TEl x, Multime A)
else
A->Elem[++(A->card)]=x;
void Vida(Multime A)
void Init(Multime &A)
int E_Vida(Multime A)
ElMult.h
#define Cm 255
typedef int TEl; // Tipul elementelor multimii
Un tip abstract de data realizeaza o unificare (printr-o grupare de tip struct) intre date (date membru) si operatiile (functii membru) lor caracteristice. Functiile membru sunt considerate de tip inline iar definirea lor in afara structurii se face prin operatorul de rezolutie (::). In acest mod insa nu se realizeaza o protectie a datelor (accesul la date se poate face si prin alte functii, nu numai prin cele membru), aceasta protectie putand fi realizata (asa cum vom vedea in cele ce urmeaza) cu ajutorul claselor.
Exemplu:
#include <stdio.h>; #include <conio.h>; #include <iostream.h>;
#define Pi
struct Cerc
float Lung ();
float Aria ();
};
float Cerc::Lung ()
float Cerc::Aria ()
void main (void)
|