Curs 01 - Introducere in POO Mihai Gabroveanu

Embed Size (px)

DESCRIPTION

Curs 01 - Introducere in POOMihai Gabroveanu

Citation preview

  • Introducere n Programarea Orientat Obiect (POO)

    Mihai Gabroveanu

    Introducere n Programarea Orientat Obiect 9

    Bibliografie

    n Liviu Negrescu, Limbajele C i C++ pentru ncepatori , Vol. II, (editia XI),Editura Albastra, Cluj-Napoca, 2005

    n Bruce Eckel, Thinking in C++, 2nd Edition, Prentice Hall 2000http://www.mindview.net/Books/TICPP/ThinkingInCPP2e.html

    Introducere n Programarea Orientat Obiect 10

    Bibliografie

    n Bjarne Stroustrup: The C++ Programming Language, Adisson-Wesley, 3nd edition, 1997

    n M. Preda, A. Mirea, D. Preda, C.Teodorescu. Introducere in programarea orientata-obiect. Concepte fundamentale din perspectiva ingineriei software, Editura Polirom. 2010

    Introducere n Programarea Orientat Obiect 11

    Detalii Organizatorice

    n Curs Prezentarea teoriei generale a Programrii Orientate Obiect

    n Laborator Implementri practice ale teoriei prezentate la curs n C++ Mediul de dezvoltare: Visual Studio 2005, DevC++ Prezena este obligatorie

    n Evaluare nota de laborator = NL

    n Doua lucrarin Teme

    examen scris = NE nota final: (NL+NE)/2

  • Introducere n Programarea Orientat Obiect 12

    Ce este Programarea Orientat Obiect?

    n Programarea Orientat Obiect (POO) este o metod de proiectare i implementare n care programele sunt reprezentate sub forma unor colecii de obiecte care interacioneaz ntre ele prin intermediul mesajelor.

    n Limbaje de programare orientate obiect: C++ C# Java

    Introducere n Programarea Orientat Obiect 13

    Concepte de baz n POO

    n Principalele concepte care stau la baza POOsunt:Abstractizarea ncapsulareaModularitatea Ierarhizarea

    Introducere n Programarea Orientat Obiect 14

    Abstractizarea

    n Abstractizarea este procesul de grupare a datelor imetodelor de prelucrare specifice rezolvrii uneiprobleme.

    n Abstraciunea: exprim toate caracteristicile eseniale ale unui obiect care

    fac ca acesta s se disting de alte obiecte; ofer o definire precis a granielor conceptuale ale

    obiectelor din perspectiva unui privitor extern.

    Introducere n Programarea Orientat Obiect 15

    Abstractizarea - Exemplu

    n Tipul abstract de date "Student"typedef struct {

    char nume[50];char facultatea[30];int anStudii;

    } Student;n Instanierea tipului abstract "Student"

    Student s={"Popescu Emil,"Informatica",1};

  • Introducere n Programarea Orientat Obiect 16

    NCAPSULAREA

    n Combinarea datelor i metodelor ntr-o singurstructur de date, definind totodat modul n care obiectul i restul programului pot referi datele din obiect.

    n Concept care definete apartenena unor proprietii metode fa de un obiect.

    n Const n separarea aspectelor externe ale unuiobiect care sunt accesibile altor obiecte de aspecteleinterne ale obiectului care sunt ascunse celorlalterobiecte

    Introducere n Programarea Orientat Obiect 17

    MODULARITATEA

    n Modalitate de a grupa abstraciuni legate logic ntre ele.

    Introducere n Programarea Orientat Obiect 18

    IERARHIZAREA

    n Reprezint o ordonare a abstraciunilor.n Principalele tipuri sunt: Motenirea (ierarhia de clase) relaie ntre clase n care o

    clas mprtete structura i comportarea definit n unasau mai multe clase (semantic implic o relaie de tip is a).

    Agregarea (ierarhia de obiecte) relaie ntre dou obiecten care unul dintre obiecte aparine celuilalt obiect. (semantic implic o relaie de tip part of)

    Introducere n Programarea Orientat Obiect 19

    Obiecte

    n Un obiect este o reprezentare a unei entiti din lumea real asupra cruia se poate ntreprinde o aciune sau care poate ntreprine o aciune

    n Un obiect este caracterizat de n numen atribute (date)

    valorile atributelor la un moment dat definesc o stare

    n metode (servicii, operatii)

  • Introducere n Programarea Orientat Obiect 20

    Clasa

    n O clas este o colecie de obiecte cu aceiai structur (caracteristici) i acelai comportament (metode sau operatii)

    Obiecte - Bicilete Clasa Bicilet- atribute

    tip cadrudimensiunea rotiinumar de viteze

    - metodeacelerezafraneaza

    Introducere n Programarea Orientat Obiect 21

    Identificarea atributelor i metodelor

    n n cadrul unei banci un cont bancar are un titular, sold, o rata a dobinzii, numar de cont i se pot efectua operatii de depunere, extragere, actualizaresold.

    n Extragerea atributelor:n titular, sold, rata a dobinzii, numar de cont

    n Extragerea metodelorn depunere, extragere, actualizare sold

    Introducere n Programarea Orientat Obiect 22

    Tipuri de date abstracte si obiecte

    n A doua definitie pentru obiecte si clase:

    O clasa este o implementare a unui tip de date abstract. Ea defineste atribute si metode care implementeazastructura de date respectiv operatiile tipului de date abstract.

    Un obiect este o instanta a unei clase. El este unicdeterminat de numele sau si defineste o stare reprezentata de valorile atributelor sale la un anumitmoment particular.

    Introducere n Programarea Orientat Obiect 23

    Sintaxa definirii unei clase

    n Definirea unei clase const din dou pri distincte: declararea clasei implementarea clasei respective

    n Sintaxaclass IdNumeClasa{

    declaratii de date membru;declaratii/definiii de functii membru;

    };

  • Introducere n Programarea Orientat Obiect 24

    Protecia datelor i funciilor membre

    n Funciile i datele unei clase pot fi grupate din punct de vedere al dreptului de acces n: private conine date i funcii membre care pot fi folosite

    doar de ctre celelalte funcii aparinnd clasei respective; protected similara cu private dar care ddrepturi de

    acces i funciilor membre ale claselor derivate din clasarespectiv

    public drept de acces tuturor.

    Introducere n Programarea Orientat Obiect 25

    Delararea/definirea unei metode

    Declarareclass IdNumeClasa{

    tip idNumeMetoda(tip1 p1, , tip pn);};

    Definiretip IdNumeClasa:: tip idNumeMetoda(tip1 p1, , tip pn){

    //instructiuni}

    Introducere n Programarea Orientat Obiect 26

    Exempluclass ContBancar{

    private:char titular[100];char codIBAN[25];float sold;

    public:void init(char _titular[], char _codIBAN[],

    float _sold); void depune(float suma); void retrage(float suma); float getSold(); void afis();

    };

    Declararea clasei ContBancar

    Introducere n Programarea Orientat Obiect 27

    Exempluvoid ContBancar::init(char _titular[], char_codIBAN[], float _sold){

    strcpy(titular,_titular);strcpy(codIBAN,_codIBAN);sold = _sold;

    }

    void ContBancar::depune(float suma){sold = sold + suma;

    }

    void ContBancar::retrage(float suma){sold = sold - suma;

    }

    Implementarea clasei ContBancar

  • Introducere n Programarea Orientat Obiect 28

    ExempluImplementarea clasei ContBancar

    float ContBancar::getSold(){return sold;

    }

    void ContBancar::afis(){printf("Titular: %s\n", titular);printf("Cod IBAN: %s\n", codIBAN);printf("Sold: %g\n", sold);

    }

    Introducere n Programarea Orientat Obiect 29

    Sintaxa declararii unui obiect

    IdNumeClasa{// .

    } idOb1, , idObN;

    sau

    IdNumeClasa idOb1, , idObN;

    Introducere n Programarea Orientat Obiect 30

    Referirea la datele si metodele membru

    idOb.idDataMembruidPointerOb ->idDataMembru

    idOb.idMetodaMembru(lista de parametri);idPointerOb ->idMetodaMembru(lista de parametri);

    Introducere n Programarea Orientat Obiect 31

    Exempluint main(){

    ContBancar c;c.init("Popescu",

    "RO49RNCB0080005630320001", 100);c.afis();printf("Depun 10 RON\n");c.depune(10);c.afis();printf("Extrag 15 RON\n");c.depune(10);c.afis();

    }