Administratie | Alimentatie | Arta cultura | Asistenta sociala | Astronomie |
Biologie | Chimie | Comunicare | Constructii | Cosmetica |
Desen | Diverse | Drept | Economie | Engleza |
Filozofie | Fizica | Franceza | Geografie | Germana |
Informatica | Istorie | Latina | Management | Marketing |
Matematica | Mecanica | Medicina | Pedagogie | Psihologie |
Romana | Stiinte politice | Transporturi | Turism |
Ierarhii de clase
Scopul lucrarii:
Proiectarea si folosirea ierarhiilor de clase folosind limbajul de
programare C++.
Desfasurarea
lucrarii: Se vor scrie programe in cadrul carora se vor
defini si utiliza ierahii de clase.
· Mostenire simpla;
· Constructori si destructori in cadrul unei ierarhii de clase;
· Suprascrierea functiilor membre;
· Mostenirea multipla;
· Utilizarea modificatorilor de acces in cadrul unei ierarhii de clase.
Se vor utiliza paradigmele de abstractizare a datelor si mostenire a claselor, aplicatiile avand fisiere header pentru declararea claselor si fisiere sursa pentru implementarea functiilor membre, precum si un fisier sursa pentru testare. Se vor identifica si proiecta modulele corespunzatoare pentru rezolvarea fiecarei aplicatii.
Reutilizarea claselor utilizand mostenirea simpla
Mostenirea reprezinta mecanismul prin care se pot crea obiecte noi, din cele existente; noile obiecte preiau (mostenesc) metode si date de la obiectul parinte, putand sa modifice altele (suprascrie). O clasa poate mosteni proprietati (date si functii) de la una sau mai multe clase, mecanismul avand numele de mostenire simpla, respectiv mostenire multipla . Prin mostenire se creaza o ierarhie de clase, iar acest fapt va avea influente in modul de folosire a functiilor constructor si destructor apelate la instantierea/distrugerea obiectelor din clase frunza ale ierarhiei(clase derivate).
Sintaxa prin care se specifica ca o
clasa mosteneste (este derivata) o alta clasa pentru
limbajul C++ este urmatoarea:
specificator_de
_clasa nume_de_clasa: specificator_acces nume_clasa_da_baza unde:
- specificator_de _clasa poate fi class sau struct (nu se pot deriva clase noi din union);
- specificator_acces poate fi private sau public; daca specificator_acces este absent, atunci valoarea sa implicita este private pentru class, respectiv public pentru struct. O clasa derivata mosteneste toti membrii clasei de baza, dar poate accesa numai membrii protejati si publici. Membrii private ai clasei de baza nu sunt disponibili si nu pot fi mosteniti la urmatorul nivel din ierarhie; in schimb, membrii protected si public pot fi transmisi in jos, in cadrul ierarhiei cat timp derivarea este de tip public.
Exemplu:
class punct
class pixel:public punct;
void pixel::SetPixel(int xi,int yi,int vizi)
class pixel3d:public pixel;
void pixel3d::SetPixel3d(int xi,int yi,int vizi,int zi)
class CPersoana ;
class CStudent: public CPersoana ;
class CAngajat: public CPersoana ;
Clasele CStudent si CAngajat mostenesc functia afisareDate din clasa de baza CPersoana. Functia din clasa de baza afiseaza numai datele comune tuturor persoanelor, fara sa afiseze anul si media, daca persoana este student, sau locul de munca, daca este angajat. Pentru a putea afisa si aceste informatii, se poate redefini functia afisareDate ca functie membru in clasele CStudent si CAngajat. Compilatorul de C++ alege functia membru apelata pe baza tipului obiectului apelant. Implementarea noua din clasa derivata nu inlocuieste implementarea din clasa de baza, ci se adauga ei. Clasa derivata are la dispozitie si implementarea din clasa de baza, pe care o poate folosi utilizand operatorul de rezolutie ::.
Reutilizarea claselor utilizand mostenirea multipla
O clasa poate mosteni mai multe clase numite clase de baza. Un exemplu este urmatorul:
class A ;
class B ;
class C: public A, public B ;
Clasa C mosteneste membrii de tip public si protected ai claselor A si B rezultand un obiect din clasa C ce contine doua sub-obiecte.
Probleme propuse:
1.Sa se realizeze o ierarhie de clase
care descrie multimea elementelor din plan intalnite in geometrie. Se
considera clasa de baza CPunct , din ea se deriveaza clasa CDreapta ,
clasa CCerc , clasa CDreptunghi si clasa CPatrat .Pentru clasele CCerc,
CDreptunghi si CPatrat sa se implementeze o functie de calcul a
ariei si o functie pentru calculul perimetrului.
2.Sa se construiasca o ierarhie de clase care sa descrie rasele
de caini.Se considera clasa de baza Caine , din ea se
deriveaza clasa CaineCuPete , clasa CaineFaraPete . Despre un caine se
cunosc : nume, inaltime, greutate, varsta, culoare. Despre cainii cu
pete se stie, in plus, si numarul de pete. Sa se
defineasca pentru fiecare clasa o functie membru pentru citirea
datelor, respectiv una pentru afisare.
3.Sa se proiecteze o ierarhie de clase care sa simuleze
functionarea unei retele de calculatoare. Reteaua admite maxim
10 utilizatori si furnizeaza protectie prin parola si
functii pentru conectare si deconectare. Reteaua este
gestionata de un administrator de sistem. Pentru fiecare utilizator se
cunosc parola si nume. Administratorul este la randul sau tot un
utilizator care are anumite facilitati in plus : poate vizualiza
toti utilizatorii retelei, poate deconecta unul sau mai multi
utilizatori , poate schimba setul de comenzi functionale.
Sa se realizeze clasa compusa CRetea care va avea un nume si un
numar de maxim 11 utilizatori din care unul singur poate fi administrator.
4.Sa se realizeze o ierarhie de clase care descrie habitatul animalelor
dintr-o rezervatie naturala. In rezervatie pot fi intalnite
urmatoarele animale: iepuri, ursi, caprioare, vulpi si lei.
Unele dintre animale sunt ierbivore, alte carnivore sau chiar ierbivore si
carnivore (de exemplu ursul). Ierarhia de clase va avea, ca si, clasa
de baza CAnimal, clasa abstracta, din care vor deriva doua
clase : CAnimalIerbivor si CAnimalCarnivor. Pentru fiecare tip de animal
se va proiecta o clasa corespunzatoare care va extinde (mosteni)
una din clase de mai sus, sau ambele, corespunzator modului de hrana a
animalului.
Despre un animal se cunosc urmatoarele informatii comune : nume, data
aducerii, greutate, hrana preferata, cantitate pe zi. In plus despre iepure se
cunoaste suprafata minima pe care poate trai; despre vulpe
- temperatura maxima de trai, tipul (polara, indigena); despre
leu - temperatura minima suportata, tara de
provenienta; despre urs - perioada de hibernare; despre
caprioara - numarul de pui. Sa se construiasca o clasa
compusa CRezervatie care va contine un numar de animale; sa
se populeze rezervatia.
Acest document nu se poate descarca
E posibil sa te intereseze alte documente despre: |
Copyright © 2024 - Toate drepturile rezervate QReferat.com | Folositi documentele afisate ca sursa de inspiratie. Va recomandam sa nu copiati textul, ci sa compuneti propriul document pe baza informatiilor de pe site. { Home } { Contact } { Termeni si conditii } |
Documente similare:
|
ComentariiCaracterizari
|
Cauta document |