QReferate - referate pentru educatia ta.
Cercetarile noastre - sursa ta de inspiratie! Te ajutam gratuit, documente cu imagini si grafice. Fiecare document sau comentariu il poti downloada rapid si il poti folosi pentru temele tale de acasa.



AdministratieAlimentatieArta culturaAsistenta socialaAstronomie
BiologieChimieComunicareConstructiiCosmetica
DesenDiverseDreptEconomieEngleza
FilozofieFizicaFrancezaGeografieGermana
InformaticaIstorieLatinaManagementMarketing
MatematicaMecanicaMedicinaPedagogiePsihologie
RomanaStiinte politiceTransporturiTurism
Esti aici: Qreferat » Documente informatica

Ierarhii de clase



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)

Constructori si destructori in cadrul unei ierarhii de clase

Modul de declarare, implementare si utilizare a functiilor constructor si destructor sunt valabile si pentru clasele derivate. Pentru construirea unui obiect al clasei derivate, se creaza un obiect al clasei de baza si se apeleaza constructorul clasei de baza; apoi se creaza elementele proprii clasei derivate si se apeleaza constructorul clasei derivate. La distrugerea unui obiect al clasei derivate, este apelat intai destructorul clasei derivate, apoi cel al clasei de baza.

Exemplu:

class CPersoana ;


class CStudent: public CPersoana ;

class CAngajat: public CPersoana ;

// constructorul clasei derivate CStudent

CStudent:: CStudent(string nume, string adresa, int an, float medie) : Persoana(nume,adresa)

// constructorul clasei derivate CAngajat

CAngajat:: CAngajat (string nume, string adresa, string locMunca) : Persoana(nume,adresa)

Redefinirea functiilor membru in cadrul unei ierarhii de clase

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.


Nu se poate descarca referatul
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 }