Home - qdidactic.com
Didactica si proiecte didacticeBani si dezvoltarea cariereiStiinta  si proiecte tehniceIstorie si biografiiSanatate si medicinaDezvoltare personala
referate stiintaSa fii al doilea inseamna sa fii primul care pierde - Ayrton Senna




category
Aeronautica Comunicatii Drept Informatica Nutritie Sociologie
Tehnica mecanica


Informatica


Qdidactic » stiinta & tehnica » informatica
Programare orientata pe obiecte



Programare orientata pe obiecte


Programare orientata pe obiecte


Concepte si paradigme in POO

_ Temele de astazi

_ Paradigme de programare (programarea imperativa si programarea structurata)

_ Abstractizarea datelor

_ Tipuri de date abstracte

_ Paradigma POO

_ Concepte POO

_ Obiecte si clase

_ Incapsulare si mostenire


Paradigme de programare

_ Paradigma (dict.): Un set de supoziTii, concepte, valori si practici care constituie o viziune a realitaTii pentru comunitatea care le adopta, in special intro disciplina intelectuala.



_ Paradigma de programare

_ Un model care descrie esenTa si structura computaTiei

_ Ofera (si determina) viziunea pe care o are programatorul asupra execuTiei programului

Exemple:

_ in POO, programatorii pot concepe programele ca fiind o colecTie de obiecte care interacTioneaza

_ in programarea funcTionala un program poate fi conceput ca fiind o secvenTa de evaluari de funcTii, fara stari



Programarea imperativa

_ In modelul tradiTional von Neumann, un calculator consta dintr-o unitate centrala de prelucrare si memorie si el efectueaza secvenTe de instrucTiuni atomice care acceseaza, opereaza asupra valorilor stocate locaTii de memorie adresabile individual si le modifica. Aici, o computaTie este o serie de operaTii aritmetice si de efecte laterale, cum sunt atribuirile sau transferurile de date care modifica starea unitaTii de stocare, intrarea sau iesirea

_ Ne referim la acest ca paradigma imperativa sau procedurala.

_ Este de subliniat importanTa atribuirilor si a variabilelor pe post de containere pentru paradigma imperativa

_ Exemple de limbaje: Fortran, Pascal, C, Ada.


Programarea structurata

_ InterfaTa

_ Date de intrare/iesire

_ Descrierea funcTionalitaTii

_ Implementarea

_ Date locale

_ SecvenTe de instrucTiuni

_ Abstractizarea operaTiilor

_ Structura unui modul

_ Sintaxa limbajului

_ Organizarea codului in blocuri de instrucTiuni

_DefiniTii de funcTii si proceduri

_ Extinderea limbajului cu noi operaTii

_Apeluri la proceduri si funcTii noi


Beneficiile programarii structurate

_ Usureaza dezvoltarea software

_ Evita repetarea realizarii aceluiasi lucru

_ Munca de programare este descompusa in module independente

_ Proiectare Top-down: descompunerea in subprobleme

_ Faciliteaza intreTinerea software

_ Codul este mai usor de citit

_ IndependenTa modulelor

_ Favorizeaza reutilizarea software


Abstractizarea datelor

_ Abstractizarea datelor: impunerea unei separari clare intre proprietaTile abstracte ale unui tip de data si detaliile concrete ale implementarii lui

_ ProprietaTi abstracte: acelea care sunt vizibile codului client care foloseste tipul de data – interfaTa cu tipul de data

_ Implementarea concreta este pastrata in totalitate privata si ea se poate intr-adevar schimba, spre exemplu pentru a incorpora imbunataTiri ale performanTelor in timp.


Tipuri abstracte de date

_ Abstractizarea datelor + abstractizarea operaTiilor

_ Un tip de data abstract:

_ Structura de date care stocheaza informaTii pentru a reprezenta un anumit concept

_ FuncTionalitate: set de operaTii care pot fi aplicate tipului de data

_ Sintaxa limbajului

_ Modulele sunt asociate tipurilor de date

_ Sintaxa nu este neaparat noua faTa de programarea Modulara


Beneficiile tipurilor de date abstracte

_ Conceptele din domeniu sunt reflectate in cod

_ Incapsulare: complexitatea interna, datele si detaliile operaTiilor sunt ascunse

_ Utilizarea tipului de data este independenta de implementarea sa interna

_ Ofera o mai mare modularitate

_ Sporeste usurinTa intreTinerii si reutilizarii codului


Paradigma orientata pe obiecte


_ Paradigma programarii structurate a avut iniTial success (1975-85)

_ Dar a inceput sa esueze la produse mai mari (> 50,000 LOC)

_ PS avea probleme de intreTinere post-livrare (astazi aceasta intreTinere necesita, de la 70 la 80% din efortul total)

_ Motivul: Metodele structurate sunt fie

_ orientate pe operaTii (analiza fluxului de date) fie

_ orientate pe atribute (d.e. dezvoltarea cu metoda Jackson)

_ Dar nu amandoua

_ Paradigma folosita in limbaje: o simulare a domeniului unei probleme prin abstractizarea informaTiilor de comportament si stare din obiecte din lumea reala

_ Conceptele de obiecte, clase, transmitere de mesaje si mostenire sunt cunoscute ca facand parte din paradigma orientarii pe obiecte.

_ POO considera ca atat atributele cat si operaTiile au importanTa egala

_ O viziune simplista a unui obiect poate fi:

_ Obiect = componenta software care incorporeaza atat atributele cat si operaTiile care se pot efectua asupra atributelor si care suporta mostenirea.

_ Exemplu:

_ Cont bancar

_ Date: soldul contului

_ AcTiuni: depune, retrage, determina soldul


ComparaTie intre paradigma structurata si cea obiectuala

_ Ascunderea informaTiei

_ Proiectarea dirijata de responsabilitaTi

_ Impact asupra intreTinerii si dezvoltarii


Ascunderea informaTiei

_ In versiunea orientata pe obiecte

_ Linia continua din jurul lui soldulContului arata ca in afara obiectului nu se stie cum este implementat soldulContului

_ In versiunea clasica

_ Toate modulele au detalii privind implementarea lui soldulContului


Punctele tari ale paradigmei OO

_ Cu ascunderea informaTiei, intreTinerea postlivrare este mai sigura

_ Sansele apariTiei erorilor regresive sunt reduse (in software nu se repeta erori cunoscute)

_ Dezvoltarea este mai usoara

_ Obiectele au in general corespondente fizice

_ Acest lucru simplifica modelarea (un aspect cheie al paradigmei OO)

_ Obiectele bine proiectate sunt unitaTi independente

_ Tot ce se refera la obiectul real modelat este in obiect — incapsulare

_ Comunicarea se face prin schimb de mesaje

_ Aceasta independenTa este augmentata prin proiectarea dirijata de responsabilitate

_ Un produs clasic consta d.p.d.v conceptual dintr-o singura unitate (desi poate fi implementata ca un set de module)

_ Paradigma OO reduce complexitatea deoarece produsul consta, in general, din unitaTi independente

_ Paradigma OO promoveaza reutilizarea

_ Obiectele sunt entitaTi independente


Programarea orientata pe obiecte

_ Ofera suport sintactic pentru tipurile de date abstracte

_ Ofera facilitaTi asociate cu ierarhiile de clase

_ Schimba punctul de vedere: programele sunt apendice ale datelor

_ introduc un concept nou: obiect = tip de data abstract cu stare (atribute) si comportament (operaTii)


Concepte OOP

_ Ne ocupam doar de datele care prezinta interes pentru problema noastra.

_ Acest proces de filtrare a detaliilor neimportante ale obiectului astfel incat sa

ramana doar caracteristicile importante poarta numele de abstractizare.


Ce sunt obiectele software?

_ Blocurile de construcTie a sistemelor software

_ un program este o colecTie de obiecte care interacTioneaza

_ obiectele coopereaza pentru a finaliza o sarcina

_ pentru aceasta, ele comunica trimiTandu-si “mesaje” unul altuia

_ Obiectele modeleaza lucruri tangibile (persoana, bicicleta)

_ Obiectele modeleaza lucruri conceptuale (intalnire, data calendaristica)

_ Obiectele modeleaza procese (aflarea drumului printr-un labirint, sortarea unui pachet de carTi de joc)

_ Obiectele au:

_ capabilitaTi: ce pot face, cum se comporta

_ proprietaTi: trasaturi (caracteristici) care descriu obiectele


CapabilitaTile obiectelor: acTiuni

_Obiectele au capabilitaTi (comportamente) care le permit sa efectueze acTiuni specifice

_ obiectele sunt destepte — ele “stiu” cum sa faca anumite lucruri

_ un obiect face ceva doar daca un alt obiect ii spune sa-si foloseasca una dintre capabilitaTi

_CapabilitaTile pot fi:

_ constructori: stabilesc starea iniTiala a proprietaTilor obiectului

_ comenzi: modifica proprietaTile obiectului

_ interogari: furnizeaza raspunsuri bazate pe proprietaTile Obiectului

_ Exemple: borcanele cu gem sunt capabile sa efectueze acTiuni specifice

•constructor: sa fie creat

•comenzi: adauga gem, goleste-te

•interogari: raspunde daca este inchis/deschis capacul, daca e plin/gol


ProprietaTile obiectului: starea

_ ProprietaTile determina cum acTioneaza un obiect

_ unele proprietaTi pot fi constante, iar altele variabile

_ proprietaTile insele sunt obiecte — pot si primi mesaje

_ capacul borcanului cu gem si gemul in sine sunt obiecte

_ ProprietaTile pot fi:

_ atribute: lucruri care ajuta la descrierea unui obiect

_ componente: lucruri care sunt “parte a” unui obiect

_ asocieri: lucruri despre care stie un obiect, dar care nu sunt parte a acelui obiect

_ Stare: colecTie a tuturor proprietaTilor obiectului; se schimba daca o proprietate se schimba

_ unele nu se schimba, d.e. volanul unei masini

_ altele se schimba, d.e. culoarea masinii

_ Exemplu: proprietaTile borcanelor cu gem

_ atribute: culoare, material, miros

_ componente: capac, container, eticheta

_ asocieri: un borcan cu gem poate fi asociat cu incaperea in care se afla


Clase si instanTe

_ ConcepTia noastra curenta: fiecare obiect corespunde direct unui anumit obiect din realitate, d.e., un atom sau un automobil anume

_ Dezavantaj: este mult prea nepractic sa lucram cu obiecte in acest fel deoarece

_ ele pot fi infinit de multe

_ nu dorim sa descriem fiecare individ separat, deoarece ei au multe lucruri in comun

_ Clasificarea obiectelor scoate in evidenTa ce este comun intre mulTimi de obiecte similare

_ mai intai sa descriem ce este comun

_ apoi sa “stampilam” oricate copii


Clase ale obiectelor


_Clasa unui obiect

_ categoria obiectului

_ defineste capabilitaTile si proprietaTile commune unei mulTimi de obiecte individuale

_ toate borcanele cu gem se pot deschide, inchide si goli

_ defineste un sablon pentru crearea de instanTe de obiect

_ unele borcane cu gem pot fi din plastic, pot fi colorate, de o anumita marime etc.

_ Clasele implementeaza capabilitaTile ca metode

_ secvenTe de instrucTiuni in Java

_ obiectele coopereaza trimiTand mesaje altor obiecte

_ fiecare mesaj “invoca o metoda”

_ Clasele implementeaza proprietaTile ca variabile instanTa

_ locaTie de memorie alocata obiectului, care poate potenTial pastra o valoare care se poate schimba


InstanTe de obiect

_InstanTele obiectelor sunt obiecte individuale

_ realizate din sablonul clasei

_ o clasa poate reprezenta un numar nedefinit de instanTe de obiect

_ realizarea unei instanTe de obiect se numeste instanTierea obiectului respectiv

_Prescurtare:

_ clasa: clasa obiectului

_ instanTa: instanTa obiectului (a nu se confunda cu variabilele instanTa)

_ InstanTe diferite ale, d.e., clasei BorcanCuGem pot avea: culoare, poziTie diferita

_ Astfel ca, variabilele instanTa ale lor au valori diferite

_ Nota: instanTele de obiect conTin variabile instanTa — doua moduri de folosire diferite, dar inrudite, a cuvantului instanTa

_ InstanTele individuale au identitaTi individuale

_ aceasta permite altor obiecte sa trimita mesaje a unui obiect dat

_ fiecare instanTa este unica, chiar daca are aceleasi capabilitaTi

_ gandiTi-va la clasa studenTilor de la acest curs


Mesaje pentru comunicarea intre obiecte

_ Nici o instanTa nu este o insula — ea trebuie sa comunice cu altele pentru a-si realiza sarcina

_ proprietaTile le permit sa stie despre alte obiecte

_ InstanTele trimit mesaje una alteia pentru a invoca o capabilitate (adica, pentru a executa o sarcina)

_ metoda reprezinta codul care implementeaza mesajul

_ spunem “apeleaza metoda” in loc de “invoca capabilitatea”

_ Fiecare mesaj necesita:

_ un emiTator (expeditor): obiectul care iniTiaza acTiunea

_ un receptor: instanTa a carei metode este invocata

_ numele mesajului: numele metodei apelate

_ opTional parametri: informaTii suplimentare necesitata de metoda pentru a opera

_ Receptorul poate (dar nu este nevoit) sa trimita un raspuns


Incapsulare

_Un automobil incapsuleaza multa informaTie

_ chiar literal, prin complexitatea construcTiei sale

_Dar nu este nevoie sa stii cum funcTioneaza o masina pentru a o conduce

_ Volanul si schimbarea vitezelor constituie interfaTa

_ motorul, transmisia, axul cardanic, sunt implementarea (ascunsa)

_ Asemanator, nu e nevoie sa stim cum funcTioneaza un obiect pentru a-i trimite mesaje

_ Dar, este nevoie sa stim ce mesaje inTelege (adica, care ii sunt capabilitaTile)

_ clasa instanTei determina ce mesaje ii pot fi trimise

_ Inchiderea datelor intr-un obiect

_ Datele nu pot fi accesate direct din afara

_ Ofera securitatea datelor


Vederile unei clase

_Obiectele separa interfaTa de implementare

_obiectul este “cutie neagra”; ascunde funcTionarea si parTile interne

_interfaTa protejeaza implementarea impotriva utilizarii

_ InterfaTa: vedere publica

_ permite instanTelor sa coopereze unele cu altele fara a sti prea multe detalii

_ ca un contract: consta dintr-o lista de capabilitaTi si documentaTie pentru cum sa fie folosite

_ Implementarea: vedere privata

_ proprietaTile care ajuta capabilitaTile sa-si indeplineasca sarcinile


Mostenirea

_ O clasa (subclasa) poate mosteni atribute si metode dintr-o alta clasa (superclasa)

_ Subclasele furnizeaza comportament specializat

_ Ofera reutilizarea codului

_ Evita duplicarea Datelor


Polimorfism

_ Abilitatea de a lua multe forme

_ Aceeasi metoda folosita intr-o superclasa poate fi suprascrise in subclase pentru a da o funcTionalitate diferita




Contact |- ia legatura cu noi -| contact
Adauga document |- pune-ti documente online -| adauga-document
Termeni & conditii de utilizare |- politica de cookies si de confidentialitate -| termeni
Copyright © |- 2024 - Toate drepturile rezervate -| copyright