Download presentation
Presentation is loading. Please wait.
1
Programarea Orientată Obiect (POO)
Programarea Orientată Obiect (POO) este o metodă de proiectare și implementare în care programele sunt reprezentate sub forma unor colecții de obiecte care interacționează între ele prin intermediul mesajelor.
2
Abstractizarea Abstractizarea este procesul de grupare a datelor şi metodelor de prelucrare specifice rezolvării unei probleme.
3
ÎNCAPSULAREA Combinarea datelor şi metodelor într-o singură structură de date, definind totodată modul în care obiectul şi restul programului pot referi datele din obiect. Concept care defineşte apartenenţa unor proprietăţi şi metode faţă de un obiect. Constă în separarea aspectelor externe ale unui obiect care sunt accesibile altor obiecte de aspectele interne ale obiectului care sunt ascunse celorlalte obiecte
4
IERARHIZAREA Reprezintă o ordonare a abstracţiunilor.
Principalele tipuri sunt: Moştenirea (ierarhia de clase) relaţie între clase în care o clasă împărtăşeşte structura şi comportarea definită în una sau mai multe clase (semantic implică o relaţie de tip “is a”). Agregarea (ierarhia de obiecte) relaţie între două obiecte în care unul dintre obiecte aparţine celuilalt obiect. (semantic implică o relaţie de tip “part of”)
5
Obiecte Un obiect este o reprezentare a unei entități din lumea reală asupra căruia se poate întreprinde o acţiune sau care poate întreprinde o acţiune Un obiect este caracterizat de nume atribute (date) metode (servicii, operatii)
6
Clasa O clasă este o colecție de obiecte cu aceiași structură
(caracteristici) și același comportament (metode sau operatii) Obiecte - Bicilete Clasa Biciletă - atribute tip cadru dimensiunea rotii numar de viteze - metode acelereza franeaza
7
Sintaxa definirii unei clase
Definirea unei clase constă din două părţi distincte: declararea clasei implementarea clasei respective Sintaxa class IdNumeClasa{ declaratii de date membru; declaratii/definiții de functii membru; };
8
Protecția datelor și funcțiilor membre
Funcţiile şi datele unei clase pot fi grupate din punct de vedere al dreptului de acces în: private – conţine date şi funcţii membre care pot fi folosite doar de către celelalte funcţii aparţinând clasei respective; protected – similara cu private dar care dădrepturi de acces şi funcţiilor membre ale claselor derivate din clasa respectivă public – drept de acces tuturor.
9
Declararea/definirea unei metode
class IdNumeClasa{tip idNumeMetoda(tip1 p1, …, tip pn); }; Definire tip IdNumeClasa:: tip idNumeMetoda(tip1 p1, …, tip pn){ //instructiuni};
10
Exemplu class 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(); };
11
Implementarea clasei ContBancar
void 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;
12
Sintaxa declararii unui obiect
IdNumeClasa{ // …. } idOb1, …, idObN; sau IdNumeClasa idOb1, …, idObN;
13
Exemplu int main(){ ContBancar c; c.init("Popescu", "RO49RNCB ", 100); c.afis(); printf("Depun 10 RON\n"); c.depune(10); printf("Extrag 15 RON\n"); }
14
Problema 1. Sa se citeasca de la tastatura informatiile specifice cartilor dintr-o librarie: denumire carte, autorul principal, al doilea autor, numarul de pagini si pretul. Prin intermediul unei clase, carte, care descrie datele despre o carte, proprietatile (denumire carte, autorul principal, al doilea autor, numarul de pagini si pretul) si metodele de prelucrare (initializarea si afisarea unei carti) sa se afiseze pe ecran informatiile despre orice carte tratata.
15
#include <iostream> #include<string. h> #include<stdio
#include <iostream> #include<string.h> #include<stdio.h> using namespace std; int i=0; class carte { public: char nume[40]; char autor1[40]; char autor2[40]; int nrpag; double pret; void citeste_carte(char *numecarte,char *autorcarte1,char *autorcarte2,int *np,double *p); void afiseaza_carte(); }; // descrirea functiei de citire carte void carte::citeste_carte(char *numecarte,char *numeautor1, char *numeautor2,int *np,double *p) strcpy(nume,numecarte); strcpy(autor1,numeautor1); strcpy(autor2,numeautor2); nrpag=*np; pret=*p; } void carte::afiseaza_carte() cout<<"cartea nr."<<i<<":"<<nume<<endl; cout<<"\n primul autor:"<<autor1<<endl; cout<<"\n al doilea autor:"<<autor2<<endl; cout<<"\n nr pagini:"<<nrpag<<endl; cout<<"\n pretul:"<<pret<<endl; int main() carte carteacitita; char wnume[40],wautor1[40],wautor2[40]; int wnrpag; double wpret; char r='d'; while(r=='d') printf("\n denumirea cartii:"); gets(wnume); printf("\n primul autor:"); gets(wautor1); printf("\n al doilea autor:"); gets(wautor2); cout<<"\n nr. pagini:"; cin>>wnrpag; cout<<"\n pret:"; cin>>wpret; carteacitita.citeste_carte(wnume,wautor1,wautor2,&wnrpag,&wpret); carteacitita.afiseaza_carte(); cout<<"\n continuati?(d/n):"; cin>>r; return 0;
16
In urma executarii programului anterior s-au obtinut urmatoarele rezultate, care arata cum se declara o clasa, un obiect al acestei clase si modul in care se apeleaza membrii acestei clase, prin intermediul unei instante a acestei clase. denumirea cartii:Trecea o moara pe Siret primul autor:Mihail Sadoveanu al doilea autor: -- nr. pagini:200 pret:30 cartea nr.0:Trecea o moara pe Siret al doilea autor: -- nr pagini:200 pretul:30 continuati?(d/n):d denumirea cartii:O noapte furtunoasa primul autor:Ion Luca Caragiale nr. pagini:50 pret:25 continuati?(d/n):n
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.