Programare Orientata uguguguguObiectugNovacuguguguugugug

download Programare Orientata uguguguguObiectugNovacuguguguugugug

of 188

  • date post

    29-Nov-2015
  • Category

    Documents

  • view

    11
  • download

    1

Embed Size (px)

description

fguguguguguguuuguguguguguug

Transcript of Programare Orientata uguguguguObiectugNovacuguguguugugug

  • 1LIMBAJUL C++

    Programarea orientat peobiecte

  • 2Introducere

    Exist limbaje concepute strict pe baza POO, ex. Simula, Smalltalk, Java;

    O alt abordare - adaugarea tehnicilor POO limbajelor cu mare polularitate, ex. Pascal i C;

    C++ combin avantajele oferite de C (eficien, flexibilitate, portabilitate) cu avantajele oferite de POO.

  • 3Programarea orientat pe obiecte n C++

    Scopul limbajului C++ este s permit dezvoltarea programelor complexe (peste 25.000 linii cod surs);

    C++ asigur programatorului libertatea i controlul din C, mpreun cu puterea obiectelor;

    POO combin metodele programrii structurate cu concepte noi;

  • 4 C++ conine mbuntiri ale limbajului C care nu sunt direct legate de POO, cum ar fi: Tipul referin; Funcii inline; Suprancrcarea operatorilor; Operatori pentru gestionarea memoriei

    libere.

  • 5Ce este programarea orientat pe obiecte ?

    n POO se mparte o problem n subgrupe de seciuni nrudite, care in seam att de cod ct i de datele corespunztoare din fiecare grup.

    Se organizeaz apoi, aceste subgrupe pe structuri ierarhice;

    Se transform subgrupele n uniti de sine stttoare, numite obiecte.

  • 6Toate limbajele OO au 3 caracteristici comune: ncapsulare, polimorfism i motenire

    ncapsularea este un mecanism care leag mpreun cod i date;

    Permite crearea unui obiect; Un obiect este o entitate logic care

    ncapsuleaz att date ct i cod care manevrez aceste date;

    Cnd se definete un obiect, implicit se creeaz un nou tip de date !

  • 7Polimorfism

    n POO polimorfismul se aplic metode-lor unei clase i permite definirea unor funcii cu acelai nume dar cu comportament diferit (specific);

    Exemplu: metoda de calculat aria unui poligon;

  • 8Motenirea

    Este procesul prin care un obiect poate s preia prototipul altui obiect;

    Se admite astfel conceptul de clasificare;

    Exemplu: Clasa mamifer

    Clasa pisica Clasa pisic birmanez

  • 9Inregistrare - Clas

    n numeroase aplicaii, este necesar s se prelucreze date grupate sub forma de nregistrri, situate fizic fie n fiiere, fie nmemoria intern.

    S considerm, de exemplu, evidenamaterialelor dintr-o magazie.

    Fiecare material se caracterizeaz prin maimulte atribute, cum sunt: codul materialului, denumirea materialului, cantitatea.

  • 10

    Informaia despre un material ar putea fi, deci, pstrat pe un formular de hrtieavnd, ca exemplu, urmtorul coninut:

    MATERIAL Cod material: 13027522 Denumire material: Pnza alb bumbacCantitate: 127.53

  • 11

    Pentru prelucrare, aceste date sunt grupatentr-o nregistrare de forma:

    127.53Pnza alb bumbac13027522

  • 12

    Remarcm c aceast structur, care se introduce n memoria calcula-torului, conine numai datele, nu i alteinformaii, cum ar fi denumirile atribu-telor i tipurile de date din fiecare cmp.

    Descrierea acestei structuri se face nprogram, folosind o instruciune numitdeclaraie de structur.

    Forma declaraiei depinde de sintaxalimbajului de programare utilizat.

  • 13

    In limbajul C, aceleai declaraii se fac sub forma:

    typedef struct{ int cod; char nume[30]; double cantitate} Material;

    Material a, b, c;

  • 14

    Remarcm c nici n Pascal, nici n C nu este predefinit un tip de date numitMaterial, dar limbajul pune la dispoziia programatorului modalitateaprin care el poate s defineasc un astfel de tip.

  • 15

    nregistrarea (engl: record) este o structur de date neomogen cu urmtoarele caracteristici:

    Componentele nregistrrii, numite nmod uzual cmpuri (engl. fields), au fiecare propriul su nume;

    Cmpurile nregistrrii pot aparine unortipuri de date diferite (de aceea spunemc este o structur neomogen);

    n memorie cmpurile sunt aezateconsecutiv (n linie), ocupnd o zon de memorie compact.

  • 16

    Primele dou caracteristici se refer la conceptul abstract de nregistrare, iarultima caracteristic se refer la modulde implementare.

    Cmpurile de date dintr-o nregistare pot conine nu numai date primitive, ci istructuri de date.

    n particular, orice cmp al unei nregis-trri poate fi el nsui o nregistrare.

  • 17

    Clasa ca extindere a structuriide nregistrare n limbajele de programare OO, structura de

    nregistrare a fost extins, astfel nct n afar de date sa conin i metode, adic funcii sauproceduri prin care se prelucreaz datele respective.

    S-a obinut astfel conceptul de clas. Clasa nu mai este o simpl structur de date, ci un

    modul de program, care conine att date, ct imetode.

    Se poate deci considera c nregistrarea este un cazparticular de clas, care nu conine metode.

  • 18

    Clasele structuri abstracte de date, definite de utilizator, care ncapsuleaz att datele propriu-zise ct i operaiile efectuate asupra acestora.

    Un obiect este o instan a unei clase. Clasa = abstractizare logic; Obiect = real, exist n memoria

    calculatorului; O clas are atribute (caracteristici-date)

    i metode (funcii);

  • 19

    mbuntiri ale limbajului C introduse n C++

    1. Transmiterea parametrilorn C++ exist 2 posibiliti de transmitere a param. actuali ctre o funcie:

    Prin valoare; Prin referin.

    Primul este modul standard de transmitere a param. n C.

  • 20

    Transmiterea parametrilor prin referin

    Prin folosirea param formali referin se permite realizarea transferului prin adres, la fel ca n Pascal (paramerii VAR).

    Se elimin astfel necesitatea utilizarii param formali pointeri, n cazul n care modificrile fcute n interiorul funciei asupra param. trebuie s rmn i dup revenirea din procedur.

  • 21

    Exemplu

    void schimb(int &a, int &b){int aux=a; a=b; b=aux;} Transferul prin referin este util atunci

    cnd programul are dimensiune mare (struct, class) i crearea n stiv a unei copii a valorii lui reduce viteza de execuie i ncarc memoria.

  • 22

    2. Parametri cu valori implicite

    n C++ se pot declara funcii cu valori implicite ale parametrilor;

    La apelarea acestor funcii se poate omite specificarea param efectivi pentru aceia care au fost declarai cu valori implicite;

    Este obligatoriu ca numai ultimii param s aib valori implicite i nu este permis alternarea param cu i far valori implicite.

  • 23

    Exemplu- Val_impl.cpp

    void fct(int, int=10);void fct(int p1, int p2){

    cout

  • 24

    3. Funcii inline

    Prezena funciilor inline anun compila-torul s nu mai genereze cod main necesar apelului i revenirii, ceea ce conduce la micorarea duratei de execuie.

    Practic, funciile care au corpul format din maximum 3 instruciuni i nu conin instruciuni repetitive (for, while, do-while) pot fi declarate funcii inline.

  • 25

    Declararea funciei inline

    inline (lista param. formali);

    n cazul metodelor unei clase, dac acestea sunt definite n interiorul clasei, ele sunt considerate implicit funcii inline;

    Exist i posibilitatea de a declara metoda la definirea clasei i de a specifica, explicit, c este funcie inline la definirea funciei.

  • 26

    Exempluclass Dreptunghi {//.

    public://.void seteaza_dim (double, double);

    //declarare metoda};inline void Dreptunghi::seteaza_dim (double

    L, double l){lung=L;lat=l;}

  • 27

    4. Supradefinirea (suprancrcarea) funciilor

    C++ permite suprancrcarea (overloading) funciilor, adic existena mai multor funcii cu acelai nume;

    Compilatorul va determina care funcie va fi apelat prin examinarea numrului i tipului de argumente;

    Nu se verific i tipul valorii returnate, deci 2 fct. suprancrcate NU pot diferi doar prin valoarea returnat.

  • 28

    Exemplu

    void fct(int a) {cout

  • 29

    5. Alocarea dinamic a memoriei folosind new i delete

    Operatorii new i delete sunt similari fct. malloc() i free(), dar constituie o metod superioar adaptat POO;

    Operatorul new poate fi folosit n urmtoarele situaii:

    int *ip1, *ip2,*ip3;ip1=new int; // var. intrega neinitializataip2=new(2); // var. int initializata cu 2ip3=new[100]; //tablou de 100 de intregi

  • 30

    Operatorii new i delete

    Operatorul new poate fi folosit i la alocarea dinamic a obiectelor (apelarea constructorului clasei);

    Operatorul delete este complementarul lui new i permite eliberarea memoriei alocate (apelarea destructorului clasei).

  • 31

    6. Operatorul de rezoluie

    n C++ este definit un operator de rezoluie ::, a crui principal aplicaie este legat de clase i obiecte.

    Exemplu:int n=1;void main() {int n=2; afiseaza(n); //afiseaza 2afiseaza(::n); // afiseaza 1}

  • CLASE N C++

  • Tipul class

    n C++ clasa este un concept fundamental prin care se definesc noi tipuri de date, prin asocierea unui set de funcii la o structur de date;

    Definirea unei clase presupune declararea ei prin specificarea numelui, lista claselor de baz din care este derivat clasa, dac exist, i membrii clasei- atribute (date) i metode (funcii).

  • Definirea unei clase antet i corp Antetul este format din cuvntul cheie

    class urmat de numele clasei. Corpul clasei este cuprins ntre {} i

    conine membrii clasei, urmai de ; sau de o list de declarare.

    Exemplu: class Screen { /* ... */ };class Screen { /* ... */ } ecranA, ecranB;

    Datele membre se declar exact ca variabilele C obinuite, exceptnd faptul cnu pot fi iniializate explicit.

  • Exemplu

    class Screen { short row, col; // nr linii i coloanechar *cursor; // poziia curent a cursoruluichar *screen; // matricea ecran,