SlideShare une entreprise Scribd logo
1  sur  26
EUGEN POPESCU


      INFORMATICĂ




PROGRAMAREA ORIENTATĂ PE OBIECTE (OOP)
CUPRINS


 INTRODUCERE
 1. ÎNCAPSULAREA

 2. MOŞTENIREA

 3. POLIMORFISM

 4. ÎNTREBĂRI ŞI EXERCIŢII

 5. APLICAŢII

 BIBLIOGRAFIE
PROGRAMAREA ORIENTATĂ PE
     OBIECTE (OOP).

      INTRODUCERE
   Programele aplicative prelucrează informaţii ale realităţii
    înconjurătoare: inventariază cărţile unei biblioteci, gestionează
    materialele dintr-un depozit, manevrează fişele într-un
    dispensar etc. O tendinţă naturală a limbajelor de programare
    este de a pune în corespondenţă obiectele acestei realităţi cu
    reprezentări cât mai fidele la nivelul limbajului. Astfel, un
    obiect eterogen cum este televizorul poate fi descris printr-o
    înregistrare cu câmpuri diferite referitoare la caracteristicile
    sale: tip, carcasă, culoare, tub catodic, plasmă, cristale lichide
    etc.
   Acest mod de reprezentare este incompletă, ea surprinde
    doar o descriere fizică a dispozitivului şi nu evidenţiază
    funcţionalitatea sa. Astfel, în înregistrarea făcută nu sunt
    precizate manevrele pentru punerea în funcţiune, pentru
    schimbarea programelor sau alte asemenea acţiuni care
    trebuie efectuate pentru a putea folosi televizorul.
   Pe de altă parte, faptul că televizorul este un produs de larg
    consum, sau că el este un obiect tehnic nu este reflectat sau
    exploatat în nici un fel la nivelul structurilor amintite.
   Limbajele orientate spre obiecte elimină aceste neajunsuri
    prin includerea într-o singură structură a elementelor
    descriptive şi a celor de funcţionalitate.
   Programele aplicative prelucrează informaţii ale realităţii
    înconjurătoare: inventariază cărţile unei biblioteci, gestionează
    materialele dintr-un depozit, manevrează fişele într-un
    dispensar etc. O tendinţă naturală a limbajelor de programare
    este de a pune în corespondenţă obiectele acestei realităţi cu
    reprezentări cât mai fidele la nivelul limbajului. Astfel, un
    obiect eterogen cum este televizorul poate fi descris printr-o
    înregistrare cu câmpuri diferite referitoare la caracteristicile
    sale: tip, carcasă, culoare, tub catodic, plasmă, cristale lichide
    etc.
   Acest mod de reprezentare este incompletă, ea surprinde
    doar o descriere fizică a dispozitivului şi nu evidenţiază
    funcţionalitatea sa. Astfel, în înregistrarea făcută nu sunt
    precizate manevrele pentru punerea în funcţiune, pentru
    schimbarea programelor sau alte asemenea acţiuni care
    trebuie efectuate pentru a putea folosi televizorul.
   Pe de altă parte, faptul că televizorul este un produs de larg
    consum, sau că el este un obiect tehnic nu este reflectat sau
    exploatat în nici un fel la nivelul structurilor amintite.
   Limbajele orientate spre obiecte elimină aceste neajunsuri
    prin includerea într-o singură structură a elementelor
    descriptive şi a celor de funcţionalitate.
   Un limbaj de programare orientat pe obiect este caracterizat
    de următoarele trei proprietăţi:
   Încapsularea: se combină o înregistrare cu funcţiile şi
    procedurile care manipulează această înregistrare, formând
    un nou tip de dată care se numeşte obiect;
   Moştenire: se defineşte un obiect şi se foloseşte această
    definiţie pentru a se construi o ierahie de obiecte, fiecare
    descendent moştenind accesul la datele şi instrucţiunile
    strămoşilor;
   Polimorfismul: se defineşte o acţiune cu un singur nume care
    poate fi partajată de obiectele din ierarhie, fiecare obiect
    implementând această acţiune corespunzător cu propriile
    necesităţi.
1. ÎNCAPSULAREA
   Prin încapsulare se înţelege mecanismul prin care datele si
    subprogramele sunt plasate împreună, într-o unică structură.
   Pentru realizarea acestui obiectiv în limbajul Pascal există
    tipul object.
   O structură de tip obiect se defineste astfel:




   object
          list1;
          list2;
          ...
          metoda1;
          metoda2;
          ...
   end
   O astfel de structură are două tipuri de componente:
   Datele - reprezentate de elementele declarate în cadrul
    listelor list1, list2, .... sub forma: nume_câmp:tip_câmp.
    Aceste date se mai numesc şi atributele obiectului.
   Metodele - sunt reprezentate de antetele subprogramelor
    care acţionează asupra datelor. Ele pot fi de forma:
      procedure nume_metoda (lista de parametri)
      function nume_metoda(lista de parametri):tip_functie
      constructor nume_metoda(lista de parametri)
      destructor nume_metoda(lista de parametri)


        Notă:
   În general nu avem acces direct la date, ci numai prin
    intermediul metodelor.

   Odată ce a fost definit un obiect, pot fi declarate instanţe ale
    sale. Acestea pot fi valorile unor variabile-obiect statice sau
    ale unor variabile dinamice create prin aplicarea procedurilor
    new şi getmem unor variabile referinţe la obiectul declarat.
2. MOŞTENIREA
   Prin moştenire se înţelege acea proprietate a tipului object
    prin care un tip nou poate prelua datele şi metodele unui tip
    mai vechi.

   Tipul nou construit păstrează datele şi metodele vechiului tip
    la care se adauga date şi metode noi.

   Tipul obiect care moşteneşte un alt tip object se mai numeşte
    şi tip descendent

   Tipul obiect care este moştenit se mai numeşte şi strămoş.
   O dată a obiectului descendent nu poate avea acelaşi nume
    cu o altă dată a obiectului strămoş. În astfel de cazuri se
    semnalează eroare.

   Dacă obiectul descendent are o metodă cu acelaşi nume ca
    strămoşul, la apelare este apelată metoda descendentului.
   Unei variabile de tip obiect strămoş i se poate atribui un
    obiect de tip descendent, dar invers nu este posibil.
   Subprogramele care lucrează cu parametri formali de tip
    obiect ai strămoşului pot lucra cu obiecte descendente ale
    acestuia, dar invers nu este posibil.



       Notă:
   Membrii publici ai tipului obiect strămoş rămân publici pentru
    tipul obiect descendent
   Membrii privaţi ai tipului obiect strămoş rămân privaţi pentru
    tipul obiect descendent
   Metodele tipului descendent au acces la datele şi metodele
    private ale strămoşului.
3. POLIMORFISM
   Polimorfismul presupune definirea unei acţiuni cu un singur
    nume care poate fi partajată de obiectele din ierarhie, fiecare
    obiect implementând această acţiune corespunzător cu
    propriile necesităţi.


   Presupune ca avem un tip obiect obiect1 derivat din tipul
    obiect2. Cele două obiecte conţin fiecare câte o metodă cu
    acelaşi nume met2 care apelează o metoda met1 definită
    doar în obiect1. Dacă declarăm un obiect de tip obiect2 care
    apelează metoda met1, metoda apelată de aceasta va fi met2
    din obiect1 sau met2 din obiect2?
   Răspunsul este următorul: este apelată met2 din obiect1.

   O astfel de metodă de selecţie a metodei prin obiectul care o
    apelează se numeşte selecţie statică. Explicaţia este
    următoarea: atunci când a fost compilat obiectul obiect2,
    deci şi metoda met1, ea apela metoda met2 din obiectul
    obiect1.
   Pentru realizarea selecţiei în momentul execuţiei şi nu al
    compilării se foloseşte selecţia dinamică sau virtuală.
   Pentru a realiza selecţia dinamică trebuie procedat astfel:
   Când se declară, în cadrul obiectului strămoş, o metodă ce va
    fi redefinită, se adaugă după declaraţie cuvântul VIRTUAL
   Orice redefinire a metodei, în cadrul obiectelor
    descendente, se face utilizând cuvântul VIRTUAL
   Fiecare obiect ce conţine o metodă redefinită va avea o
    metodă specifică numită CONSTRUCTOR. Constructorul este
    prima care se va apela din cadrul obiectului. După apelul
    ei, relativ la un alt obiect, o metodă care apare redefinită este
    apelată din cadrul obiectului pentru care s-a făcut apelul
    constructorului.
   Metoda constructor execută şi alte operaţii, cum ar fi
    iniţializarea câmpurilor obiectului, alocarea unor variabile
    dinamice etc. Sintactic, constructorul diferă de celelalte
    metode prin prezenţa cuvântului rezervat constructor, în loc
    de procedure sau function.
   Spre deosebire de alte metode constructorii nu pot fi virtuali.
    Un obiect poate avea mai mulţi constructori, cu antete diferite.
   Constructorii pot fi moşteniţi.
   Funcţia inversă celei a constructorului este realizată de o altă
    metodă specială, numită DESTRUCTOR. Sintactic, ea se
    deosebeşte prin cuvântul rezervat destructor folosit în locul
    cuvintelor procedure sau function.
   Destructorul este ultima metodă apelată a unui obiect.
    Uzual, destructorul nu are parametri.
   Mecanismul metodelor virtuale se bazează pe construirea şi
    utilizarea unei tabele de metode virtuale (VMT - Virtual Methods
    Table) pentru fiecare obiect. Ea are următoarea alcătuire:
   dimensiunea obiectului (1 cuvânt);
   valoarea negativă a primului cuvânt;
   adresa primei metode virtuale (2 cuvinte: segment + deplasare);
   adresa celei de-a doua metode virtuale etc.

   Exemplu:
   Fie obiectele persoana şi elev, obiectul elev derivat din persoana
    cu redefinirea metodei afisare:
   persoana
                  nume
                  prenume
                  varsta
   VMT            dimensiune
         - dimensiune
         persoana.afisare
CONCLUZII
 Programarea orientată pe obiect este o metodă de
  programare care duce la creşterea productivităţii
  construirii produselor software. Ea reprezintă o
  evoluţie naturală de la metodele de programare
  anterioare:
 Este mai structurată decât încercările anterioare de
  structurare a programelor.
 Este mai modulară şi mai abstractă decât
  încercările anterioare de ascundere a datelor şi de
  abstractizare.
4. ÎNTREBĂRI ŞI EXERCIŢII
   Ce se înţelege prin noţiunea de încapsulare a datelor ?
   Care sunt componentele tipului object ?
   Ce este o instanţă a tipului obiect ?
   Ce se înţelege prin noţiunea de moştenire ? Cum se
    realizează ea ?
   Ce se înţelege prin polimorfism ?
   Ce sunt metodele statice? Dar cele virtuale ?
   Ce sunt constructorii şi destructorii ? Care este rolul lor ?
5. APLICAŢII
   Folosind structura descrisă pentru tipul complex, realizaţi un
    program care să efectueze următoarele:
   a) Ordonarea crescă toare după modul a n numere complexe;
   b) Calcul sumei a n numere complexe;
   c) Ridicarea la putere a unui număr complex;
   d) Calculul lui .
                          n
                     z1
                     z2
   Descrieţi un tip object care să permită prelucrări asupra
    matricelor de dimensiune n x m: citirea; iniţializarea
    dimensiunii matricei; citirea şi afişarea elementelor matricei;
    calculul transpusei; suma a două matrici; produsul a două
    matrici.
   Folosind structura de la problema 2 realizaţi un program
    ghidat de meniu care să opereze asupra matricilor.
   Realizaţi un obiect care să permită lucru cu liste liniare simplu
    înlănţuite.
   Derivaţi obiectul rational prezentat la exemplu cu metode
    pentru amplificarea fracţiei cu un număr natural, pentru
    tipărirea unui număr raţional, pentru verificarea următoarelor
    situaţii: dacă este fracţie subunitară sau supraunitară, dacă
    are numărătorul sau numitorul unitar.
   Realizaţi un obiect care să permită operaţii cu numere mari
    reprezentate sub formă de listă liniară. Tipul obiectul creat
    poate fi derivat din tipul listă creat anterior. Cu ajutorul acestui
    tip pot fi realizate operaţii de citire, scriere a unui număr
    mare, adunare, scădere şi comparaţia a două numre mari.
   Folosind tipul definit la problema 6, scrieţi un program care
    exemplifică operaţiile cu numere mari.
   Realizaţi un obiect numit polinom care permite lucru cu
    polinoame. Polinoamele sunt memorate sub forma listelor
    liniare simplu înlănţuite, memorându-se ca date coeficientul şi
    exponentul fiecărui termen al polinomului.
LINK-URI
 ro.wikipedia.org/wiki/Programare_orientată_pe_obi
  ecte
 facultate.regielive.ro/cursuri/.../programare-pe-
  obiecte-8262.html
 ro.scribd.com/doc/18992860/Programarea-pe-
  obiecte
 www.aut.upt.ro/~dberian/Labs/POO.pdf

 www.programare.ase.ro/Programare%202/11%20-
  %20POO.ppt
BIBLIOGRAFIE
   Atanasiu Adrian, Pintea Rodica – „Culegere de probleme
    Pascal”, Editura Petrion, Bucureşti, 1997.
   Burdescu Dumitru Dan – „Algoritmi şi structuri de date”,
    Editura Mirton, Timişoara, 1992.
   Mateescu George Daniel, Moraru Pavel Florin – „Informatică.
    Manual pentru clasa a XI-a – varianta Pascal”, Editura
    Niculescu, Bucureşti, 2001
   Oprescu Daniela, Pintea Rodica, Grigoroiu Dan, Bălănescu
    Cecilia, Voicu Anca – „Teste de sinteză în programare”,
    Editura L&S Infomat, Bucureşti, 2000.
   Pătrăşcoiu Octavian, Marian Gheorghe, Mitroi Nicolae –
    „Elemente de grafuri şi combinatorică. Metode, algoritmi şi
    programe”, Editura ALL, Bucureşti, 1994
   Popescu E., Codreş. D, Codreş M., Boarna E. s.a Metode de
    programare, Structuri dinamice de date, Grafuri şi POO,
    Editura Else, Craiova, 2005.
RECAPITULARE
   Un limbaj de programare orientat pe obiect este
    caracterizat de următoarele trei proprietăţi:
   Încapsularea: se combină o înregistrare cu funcţiile şi
    procedurile care manipulează această înregistrare,
    formând un nou tip de dată care se numeşte obiect;
   Moştenire: se defineşte un obiect şi se foloseşte
    această definiţie pentru a se construi o ierahie de
    obiecte, fiecare descendent moştenind accesul la datele
    şi instrucţiunile strămoşilor;
   Polimorfismul: se defineşte o acţiune cu un singur
    nume care poate fi partajată de obiectele din ierarhie,
    fiecare     obiect    implementând     această  acţiune
    corespunzător cu propriile necesităţi.

Contenu connexe

En vedette

How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental Health
ThinkNow
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
Kurio // The Social Media Age(ncy)
 

En vedette (20)

Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage Engineerings
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental Health
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
 
Skeleton Culture Code
Skeleton Culture CodeSkeleton Culture Code
Skeleton Culture Code
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
 
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
 
12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work
 

Proiect tic a_2b_popescu_eugen

  • 1. EUGEN POPESCU INFORMATICĂ PROGRAMAREA ORIENTATĂ PE OBIECTE (OOP)
  • 2. CUPRINS  INTRODUCERE  1. ÎNCAPSULAREA  2. MOŞTENIREA  3. POLIMORFISM  4. ÎNTREBĂRI ŞI EXERCIŢII  5. APLICAŢII  BIBLIOGRAFIE
  • 3. PROGRAMAREA ORIENTATĂ PE OBIECTE (OOP). INTRODUCERE
  • 4. Programele aplicative prelucrează informaţii ale realităţii înconjurătoare: inventariază cărţile unei biblioteci, gestionează materialele dintr-un depozit, manevrează fişele într-un dispensar etc. O tendinţă naturală a limbajelor de programare este de a pune în corespondenţă obiectele acestei realităţi cu reprezentări cât mai fidele la nivelul limbajului. Astfel, un obiect eterogen cum este televizorul poate fi descris printr-o înregistrare cu câmpuri diferite referitoare la caracteristicile sale: tip, carcasă, culoare, tub catodic, plasmă, cristale lichide etc.  Acest mod de reprezentare este incompletă, ea surprinde doar o descriere fizică a dispozitivului şi nu evidenţiază funcţionalitatea sa. Astfel, în înregistrarea făcută nu sunt precizate manevrele pentru punerea în funcţiune, pentru schimbarea programelor sau alte asemenea acţiuni care trebuie efectuate pentru a putea folosi televizorul.  Pe de altă parte, faptul că televizorul este un produs de larg consum, sau că el este un obiect tehnic nu este reflectat sau exploatat în nici un fel la nivelul structurilor amintite.  Limbajele orientate spre obiecte elimină aceste neajunsuri prin includerea într-o singură structură a elementelor descriptive şi a celor de funcţionalitate.
  • 5. Programele aplicative prelucrează informaţii ale realităţii înconjurătoare: inventariază cărţile unei biblioteci, gestionează materialele dintr-un depozit, manevrează fişele într-un dispensar etc. O tendinţă naturală a limbajelor de programare este de a pune în corespondenţă obiectele acestei realităţi cu reprezentări cât mai fidele la nivelul limbajului. Astfel, un obiect eterogen cum este televizorul poate fi descris printr-o înregistrare cu câmpuri diferite referitoare la caracteristicile sale: tip, carcasă, culoare, tub catodic, plasmă, cristale lichide etc.  Acest mod de reprezentare este incompletă, ea surprinde doar o descriere fizică a dispozitivului şi nu evidenţiază funcţionalitatea sa. Astfel, în înregistrarea făcută nu sunt precizate manevrele pentru punerea în funcţiune, pentru schimbarea programelor sau alte asemenea acţiuni care trebuie efectuate pentru a putea folosi televizorul.  Pe de altă parte, faptul că televizorul este un produs de larg consum, sau că el este un obiect tehnic nu este reflectat sau exploatat în nici un fel la nivelul structurilor amintite.  Limbajele orientate spre obiecte elimină aceste neajunsuri prin includerea într-o singură structură a elementelor descriptive şi a celor de funcţionalitate.
  • 6. Un limbaj de programare orientat pe obiect este caracterizat de următoarele trei proprietăţi:  Încapsularea: se combină o înregistrare cu funcţiile şi procedurile care manipulează această înregistrare, formând un nou tip de dată care se numeşte obiect;  Moştenire: se defineşte un obiect şi se foloseşte această definiţie pentru a se construi o ierahie de obiecte, fiecare descendent moştenind accesul la datele şi instrucţiunile strămoşilor;  Polimorfismul: se defineşte o acţiune cu un singur nume care poate fi partajată de obiectele din ierarhie, fiecare obiect implementând această acţiune corespunzător cu propriile necesităţi.
  • 8. Prin încapsulare se înţelege mecanismul prin care datele si subprogramele sunt plasate împreună, într-o unică structură.  Pentru realizarea acestui obiectiv în limbajul Pascal există tipul object.  O structură de tip obiect se defineste astfel:   object  list1;  list2;  ...  metoda1;  metoda2;  ...  end  O astfel de structură are două tipuri de componente:  Datele - reprezentate de elementele declarate în cadrul listelor list1, list2, .... sub forma: nume_câmp:tip_câmp. Aceste date se mai numesc şi atributele obiectului.
  • 9. Metodele - sunt reprezentate de antetele subprogramelor care acţionează asupra datelor. Ele pot fi de forma:  procedure nume_metoda (lista de parametri)  function nume_metoda(lista de parametri):tip_functie  constructor nume_metoda(lista de parametri)  destructor nume_metoda(lista de parametri) Notă:  În general nu avem acces direct la date, ci numai prin intermediul metodelor.  Odată ce a fost definit un obiect, pot fi declarate instanţe ale sale. Acestea pot fi valorile unor variabile-obiect statice sau ale unor variabile dinamice create prin aplicarea procedurilor new şi getmem unor variabile referinţe la obiectul declarat.
  • 11. Prin moştenire se înţelege acea proprietate a tipului object prin care un tip nou poate prelua datele şi metodele unui tip mai vechi.  Tipul nou construit păstrează datele şi metodele vechiului tip la care se adauga date şi metode noi.  Tipul obiect care moşteneşte un alt tip object se mai numeşte şi tip descendent  Tipul obiect care este moştenit se mai numeşte şi strămoş.  O dată a obiectului descendent nu poate avea acelaşi nume cu o altă dată a obiectului strămoş. În astfel de cazuri se semnalează eroare.  Dacă obiectul descendent are o metodă cu acelaşi nume ca strămoşul, la apelare este apelată metoda descendentului.
  • 12. Unei variabile de tip obiect strămoş i se poate atribui un obiect de tip descendent, dar invers nu este posibil.  Subprogramele care lucrează cu parametri formali de tip obiect ai strămoşului pot lucra cu obiecte descendente ale acestuia, dar invers nu este posibil. Notă:  Membrii publici ai tipului obiect strămoş rămân publici pentru tipul obiect descendent  Membrii privaţi ai tipului obiect strămoş rămân privaţi pentru tipul obiect descendent  Metodele tipului descendent au acces la datele şi metodele private ale strămoşului.
  • 14. Polimorfismul presupune definirea unei acţiuni cu un singur nume care poate fi partajată de obiectele din ierarhie, fiecare obiect implementând această acţiune corespunzător cu propriile necesităţi.   Presupune ca avem un tip obiect obiect1 derivat din tipul obiect2. Cele două obiecte conţin fiecare câte o metodă cu acelaşi nume met2 care apelează o metoda met1 definită doar în obiect1. Dacă declarăm un obiect de tip obiect2 care apelează metoda met1, metoda apelată de aceasta va fi met2 din obiect1 sau met2 din obiect2?  Răspunsul este următorul: este apelată met2 din obiect1.  O astfel de metodă de selecţie a metodei prin obiectul care o apelează se numeşte selecţie statică. Explicaţia este următoarea: atunci când a fost compilat obiectul obiect2, deci şi metoda met1, ea apela metoda met2 din obiectul obiect1.
  • 15. Pentru realizarea selecţiei în momentul execuţiei şi nu al compilării se foloseşte selecţia dinamică sau virtuală.  Pentru a realiza selecţia dinamică trebuie procedat astfel:  Când se declară, în cadrul obiectului strămoş, o metodă ce va fi redefinită, se adaugă după declaraţie cuvântul VIRTUAL  Orice redefinire a metodei, în cadrul obiectelor descendente, se face utilizând cuvântul VIRTUAL  Fiecare obiect ce conţine o metodă redefinită va avea o metodă specifică numită CONSTRUCTOR. Constructorul este prima care se va apela din cadrul obiectului. După apelul ei, relativ la un alt obiect, o metodă care apare redefinită este apelată din cadrul obiectului pentru care s-a făcut apelul constructorului.
  • 16. Metoda constructor execută şi alte operaţii, cum ar fi iniţializarea câmpurilor obiectului, alocarea unor variabile dinamice etc. Sintactic, constructorul diferă de celelalte metode prin prezenţa cuvântului rezervat constructor, în loc de procedure sau function.  Spre deosebire de alte metode constructorii nu pot fi virtuali. Un obiect poate avea mai mulţi constructori, cu antete diferite.  Constructorii pot fi moşteniţi.  Funcţia inversă celei a constructorului este realizată de o altă metodă specială, numită DESTRUCTOR. Sintactic, ea se deosebeşte prin cuvântul rezervat destructor folosit în locul cuvintelor procedure sau function.  Destructorul este ultima metodă apelată a unui obiect. Uzual, destructorul nu are parametri.
  • 17. Mecanismul metodelor virtuale se bazează pe construirea şi utilizarea unei tabele de metode virtuale (VMT - Virtual Methods Table) pentru fiecare obiect. Ea are următoarea alcătuire:  dimensiunea obiectului (1 cuvânt);  valoarea negativă a primului cuvânt;  adresa primei metode virtuale (2 cuvinte: segment + deplasare);  adresa celei de-a doua metode virtuale etc.  Exemplu:  Fie obiectele persoana şi elev, obiectul elev derivat din persoana cu redefinirea metodei afisare:  persoana  nume  prenume  varsta  VMT dimensiune  - dimensiune  persoana.afisare
  • 18. CONCLUZII  Programarea orientată pe obiect este o metodă de programare care duce la creşterea productivităţii construirii produselor software. Ea reprezintă o evoluţie naturală de la metodele de programare anterioare:  Este mai structurată decât încercările anterioare de structurare a programelor.  Este mai modulară şi mai abstractă decât încercările anterioare de ascundere a datelor şi de abstractizare.
  • 19. 4. ÎNTREBĂRI ŞI EXERCIŢII
  • 20. Ce se înţelege prin noţiunea de încapsulare a datelor ?  Care sunt componentele tipului object ?  Ce este o instanţă a tipului obiect ?  Ce se înţelege prin noţiunea de moştenire ? Cum se realizează ea ?  Ce se înţelege prin polimorfism ?  Ce sunt metodele statice? Dar cele virtuale ?  Ce sunt constructorii şi destructorii ? Care este rolul lor ?
  • 22. Folosind structura descrisă pentru tipul complex, realizaţi un program care să efectueze următoarele:  a) Ordonarea crescă toare după modul a n numere complexe;  b) Calcul sumei a n numere complexe;  c) Ridicarea la putere a unui număr complex;  d) Calculul lui . n z1 z2  Descrieţi un tip object care să permită prelucrări asupra matricelor de dimensiune n x m: citirea; iniţializarea dimensiunii matricei; citirea şi afişarea elementelor matricei; calculul transpusei; suma a două matrici; produsul a două matrici.  Folosind structura de la problema 2 realizaţi un program ghidat de meniu care să opereze asupra matricilor.  Realizaţi un obiect care să permită lucru cu liste liniare simplu înlănţuite.
  • 23. Derivaţi obiectul rational prezentat la exemplu cu metode pentru amplificarea fracţiei cu un număr natural, pentru tipărirea unui număr raţional, pentru verificarea următoarelor situaţii: dacă este fracţie subunitară sau supraunitară, dacă are numărătorul sau numitorul unitar.  Realizaţi un obiect care să permită operaţii cu numere mari reprezentate sub formă de listă liniară. Tipul obiectul creat poate fi derivat din tipul listă creat anterior. Cu ajutorul acestui tip pot fi realizate operaţii de citire, scriere a unui număr mare, adunare, scădere şi comparaţia a două numre mari.  Folosind tipul definit la problema 6, scrieţi un program care exemplifică operaţiile cu numere mari.  Realizaţi un obiect numit polinom care permite lucru cu polinoame. Polinoamele sunt memorate sub forma listelor liniare simplu înlănţuite, memorându-se ca date coeficientul şi exponentul fiecărui termen al polinomului.
  • 24. LINK-URI  ro.wikipedia.org/wiki/Programare_orientată_pe_obi ecte  facultate.regielive.ro/cursuri/.../programare-pe- obiecte-8262.html  ro.scribd.com/doc/18992860/Programarea-pe- obiecte  www.aut.upt.ro/~dberian/Labs/POO.pdf  www.programare.ase.ro/Programare%202/11%20- %20POO.ppt
  • 25. BIBLIOGRAFIE  Atanasiu Adrian, Pintea Rodica – „Culegere de probleme Pascal”, Editura Petrion, Bucureşti, 1997.  Burdescu Dumitru Dan – „Algoritmi şi structuri de date”, Editura Mirton, Timişoara, 1992.  Mateescu George Daniel, Moraru Pavel Florin – „Informatică. Manual pentru clasa a XI-a – varianta Pascal”, Editura Niculescu, Bucureşti, 2001  Oprescu Daniela, Pintea Rodica, Grigoroiu Dan, Bălănescu Cecilia, Voicu Anca – „Teste de sinteză în programare”, Editura L&S Infomat, Bucureşti, 2000.  Pătrăşcoiu Octavian, Marian Gheorghe, Mitroi Nicolae – „Elemente de grafuri şi combinatorică. Metode, algoritmi şi programe”, Editura ALL, Bucureşti, 1994  Popescu E., Codreş. D, Codreş M., Boarna E. s.a Metode de programare, Structuri dinamice de date, Grafuri şi POO, Editura Else, Craiova, 2005.
  • 26. RECAPITULARE  Un limbaj de programare orientat pe obiect este caracterizat de următoarele trei proprietăţi:  Încapsularea: se combină o înregistrare cu funcţiile şi procedurile care manipulează această înregistrare, formând un nou tip de dată care se numeşte obiect;  Moştenire: se defineşte un obiect şi se foloseşte această definiţie pentru a se construi o ierahie de obiecte, fiecare descendent moştenind accesul la datele şi instrucţiunile strămoşilor;  Polimorfismul: se defineşte o acţiune cu un singur nume care poate fi partajată de obiectele din ierarhie, fiecare obiect implementând această acţiune corespunzător cu propriile necesităţi.