Clase derivate

Trimis la data: 2010-06-13 Materia: Automatica Nivel: Facultate Pagini: 9 Nota: / 10 Downloads: 18
Autor: Olaru Radu Dimensiune: 19kb Voturi: Tipul fisierelor: doc Acorda si tu o nota acestui seminar: 1 2 3 4 5 6 7 8 9 10
vezi mai multe detalii vezi mai putine detalii
Raporteaza o eroare
Clasele derivate implementeaza conceptul de mostenire (inheritance), prin care o clasa existenta poate fi modificata sau i se pot adauga elemente pentru a crea o noua clasa. Prin mecanismul de mostenire se pot crea ierarhii de tipuri inrudite, ceea ce permite reutilizarea codului sursa. Multe tipuri utile de date sunt variante ale altor asemenea tipuri si de multe ori este ineficient sa se scrie acelasi cod pentru fiecare dintre ele. O clasa derivata mosteneste descrierea clasei sale de baza. Aceasta poate fi modificata prin adaugarea de noi membri, prin modificarea functiilor existente sau prin modificarea drepturilor de acces.
Referate similare: Nu exista seminarii similare

Acest tip de ierarhizare a cunostintelor este frecvent intilnit in stiinta. De exemplu, considerind notiunea Mamifer din biologie, si stiind ca speciile Elefant si Soarece sunt mamifere, putem structura informatiile despre ele mult mai eficient.

Conceptul de mamifer ne spune ca ambele specii au anumite proprietati (sunt vertebrate, au singe cald etc.), dar aceste informatii sunt descrise in notiunea de baza Mamifer (o singura data) si sunt mostenite de notiunile derivate Elefant si Soarece. In termenii programarii orientate obiect am spune ca Elefant si Soarece sunt clase derivate ale clasei de baza Mamifer.

Pe linga adaugarea de noi membri (date sau metode), mostenirea permite redefinirea unor functii membre, prin asa numitele functii virtuale. Acestea sunt functii declarate in clasa de baza si redefinite in clasa derivata. O ierarhie de clase derivate prin mostenire publica creeaza un set de tipuri definite de utilizator, care pot fi referite printr-un pointer la clasa de baza.

Accesul la functiile virtuale prin intermediul acestui pointer inseamna selactarea definitiei concrete a functiei la momentul executiei aplicatiei. Obiectul referit trebuie sa contina informatii despre tipul sau astfel incit sa se poate distinge intre diversele obiecte derivate, in mod dinamic. Aceasta este o proprietate esentiala a programarii orientate-obiect, care se numeste polimorfism pur.

Mostenirea trebuie utilizata pentru a maximiza reutilizarea codului si pentru a permite modelarea naturala a domeniului problemei. Obiectivele principale ale programarii orientat-obiect devin, in ceea ce priveste mostenirea, urmatoarele:
• decizia asupra unei multimi adecvate de tipuri de date;
• proiectarea relatiilor acestora si utilizarea mostenuirii pentru partajaera codului;
• utilizarea functiilor virtuale pentru procesarea polimorfica a obiectelor inrudite.

Supradefinirea functiilor membre impune un algoritm de detectare a tipului concret al obiectului, care trebuie dedus pe baza unor informatii disponibile la momentul compilarii. In exemplul anterior, acest lucru se aplica pointerilor ps si pgs, pentru care se selecta functia print adecvata. Acest mecanism de distinctie (rezolutie) se numeste asociere timpurie sau statica (early sau static binding.

Functiile virtuale permit selectarea functiei membru adecvate la momentul executiei (run-time), in mod dinamic. Acest fapt are implicatii majore, deoarece selectia nu se mai face la momentul compilarii. In exemplul precedent, daca clasele BAZA si DERIVATA ar fi fos definite in fisiere separate, derivarea unei noi clase, sa zice m DERIVATA2 ar fi presupus recompilarea tuturot fisierelor sursa, desi cel in care este definita clasa BAZA nu s-a modificat cu nimic.

Problema nu este minora, de exemplu in cazul pachetelor software comerciale. Producatorul de software nu va pune niciodata la dispozitia utilizatorilor sursele unui sistem de clase de baza, doar pentru ca acesta sa-si poata deriva clase proprii. Functiile virtuale (definite cu cuvantul cheie virtual in clasa de baza) permit redefinirea functiilor respective in clase derivate, fara a mai fi nevoie de recompilarea clasei de baza. Mecanismul de distinctie (rezolutie) se numeste in acest caz asociere tarzie sau dinamica (late sau dinamic binding).

O functie declarata virtual in clasa de baza pastreaza acest caracter si in clasa derivata, chiar daca cuvintul cheie virtual nu mai este folosit in clasa derivata. Combinarea functiilor virtuale cu mostenirea publica conduce la mecanismul de polimorfism pur.

Nota explicativa
Referatele si lucrarile oferite de Referate.ro au scop educativ si orientativ pentru cercetare academica.

Iti recomandam ca referatele pe care le downloadezi de pe site sa le utilizezi doar ca sursa de inspiratie sau ca resurse educationale pentru conceperea unui referat nou, propriu si original.

Referat.ro te invata cum sa faci o lucrare de nota 10!
Linkuri utile
Programeaza-te online la salonul favorit Descarca gratuit aplicatiile pentru iOS si Android Filmulete haioase Filme, poante si cele mai tari faze Jocuri Cele mai tari jocuri de pe net Referate scoala Resurse, lucrari, referate materiale pentru lucrari de nota 10
Toate imaginile, textele sau alte materiale prezentate pe site sunt proprietatea referat.ro fiind interzisa reproducerea integrala sau partiala a continutului acestui site pe alte siteuri sau in orice alta forma fara acordul scris al referat.ro. Va rugam sa consultati Termenii si conditiile de utilizare a site-ului. Informati-va despre Politica de confidentialitate. Daca aveti intrebari sau sugestii care pot ajuta la dezvoltarea site-ului va rugam sa ne scrieti la adresa webmaster@referat.ro.
Confidentialitatea ta este importanta pentru noi

Referat.ro utilizeaza fisiere de tip cookie pentru a personaliza si imbunatati experienta ta pe Website-ul nostru. Te informam ca ne-am actualizat politica de confidentialitate pentru a integra cele mai recente modificari privind protectia persoanelor fizice in ceea ce priveste prelucrarea datelor cu caracter personal. Inainte de a continua navigarea pe Website-ul nostru te rugam sa aloci timpul necesar pentru a citi si intelege continutul Politicii de Cookie. Prin continuarea navigarii pe Website-ul nostru confirmi acceptarea utilizarii fisierelor de tip cookie conform Politicii de Cookie. Nu uita totusi ca poti modifica in orice moment setarile acestor fisiere cookie urmarind instructiunile din Politica de Cookie.


Politica de Cookie
Am inteles