12.07.2015 Views

notiuni de programare obiectuala - Informatica aplicata si ...

notiuni de programare obiectuala - Informatica aplicata si ...

notiuni de programare obiectuala - Informatica aplicata si ...

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Capitolul 1. … noţiuni <strong>de</strong> <strong>programare</strong> obiectuală 51class Coada: public Baza{public:virtual void Afisez();virtual void Push(int);virtual int Pop();};Ce am <strong>de</strong>clarat <strong>de</strong> fapt? O clasă ElementLista, care implementează o structură <strong>de</strong>date caracteristică listei <strong>si</strong>mplu înlănţuite. Cum datele sunt private, dar vor fi folo<strong>si</strong>teîn alte clase, am <strong>de</strong>clarat aceste clase ca fiind prietene. Deoarece aceste clase nu aufost încă <strong>de</strong>clarate, ele trebuie anunţate la începutul fişierului. Constructorul claseiconstruieşte implicit un obiect cu câmpul valoare=0.Am <strong>de</strong>clarat apoi o clasă abstractă Baza, care <strong>de</strong>clară funcţiile virtuale pure Push()şi Pop() şi funcţia virtuală Afisez(). Este evi<strong>de</strong>nt că funcţiile Push() şi Pop() suntvirtuale pure, <strong>de</strong>oarece încă nu ştim clar în ce poziţii ale listei acţionează ele. Clasaconţine un pointer la clasa ElementLista, care va fi <strong>de</strong> fapt capul listei <strong>si</strong>mpluînlănţuite. Constructorul clasei construieşte acest pointer implicit NULL (să nereamintim că am dat câmpului valoare implicit valoare 0 din construcţia obiectuluiElementLista). În exemplu sunt date două modalităţi <strong>de</strong> implementare aconstructorului : cu listă <strong>de</strong> iniţializare şi respectiv „cla<strong>si</strong>c”. În continuare sunt<strong>de</strong>clarate clasele <strong>de</strong>rivate din clasa <strong>de</strong> bază, care vor implementa stiva şi respectivcoada.Fişierul sursă pentru programul exemplu va fi:#inclu<strong>de</strong> #inclu<strong>de</strong> "Liste.h"ElementLista::ElementLista(int i){valoare=i;urmatorul=NULL;}Baza::~Baza(){ElementLista* ptr=CapLista;while (CapLista!=NULL){CapLista=CapLista->urmatorul;<strong>de</strong>lete ptr;ptr=CapLista;}}void Baza::Afisez(){ElementLista* ptr=CapLista;if (ptr==NULL)cout

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!