Sunteți pe pagina 1din 32

Programareorientatobiect

Cursul1
rev 1.4/PP/20131020
Coninut
Recapitulare,extensiiC++
ConceptePOO,clase,obiecte
Constructori,destructoriconstructordecopiere
Intrri/IeiriC++
Suprancrcareaoperatorilor
Motenireiderivare
Clasegenerice(template)
Bibliotecastandarddeclasegenerice: STL (StandardTemplate Library)
Referinebibliografice
I.Smeureanu,M.Drdal, Programarea orientat obiect n limbajul
C++, EdituraCISON, 2004
Bjarne Stroustroup ,TheC++ProgrammingLanguage,4thEdition,
AddisonWesley,2013
C++LanguageReference,MSDN
Cursuriiseminarii
Materialedisponibileonline
Moduldenotare
Examinarefinal:60%(obligatoriu notdetrecere)
Testecurs:10%
Activiti seminar 40%:
Proiectdedisciplin(condiie deintrarenexamen)
Lucraredelaborator
Sumar
Recapitulare
Apelulfunciilor
Pointerilafuncii
Pointeri constani
Preprocesare
Elementenoidelimbaj(C++)
Alocareamemorieiireferine
Domeniidenume
Sistemuldeintrareieire
Tratareaexcepiilor
Recapitulare
Apelulfunciilor
#include<stdio.h>
// prototipulfunciei
float media(float,float);
void main()
{
floatn1,n2,n3;
//initializeaza n1si n2
n3=media(n1,n2);
printf("mediaeste:%f",n3);
}
//definireafunctiei
floatmedia(floata,float b)
{
floatmed=(a+b)/2;
returnmed;
}
Apelulfunciilor
Segmentdecod
Stiva

Saltlacodul
funciei
Apelfuncie
Adresafunciei
Fir
execuie
n1
n2
Adresarevenire
Adresa prec.
Codfuncie
Adresade
revenire
b
a
}
Parametri reali
med }
Variabil local
Reveniredin
funcie
}
Variabile locale
main() media(a,b)
main
media
n3
Pointerilafuncii
Numeleuneifuncii:pointerconstant
adresadinmemorieasociatcoduluiexecutabil
Seutilizeazpentrutransmitereafunciilorcaparametrialtorfuncii
Componente:
Tipulparametrilor
Tipulreturnat
Seiniializeazcunumeleuneifuncii
Exempledeutilizarentlnite:
Sortare:modalitateadeordonare
Funciicuapelinvers(callback)
Diferitecalcule/operaii(implementateprinfunciicuacelaiprototip)aplicate
repetatpeaceleaiseturidedate
Pointerilafuncii
void (*pf2)()
Pointerlafuncie frparametricarenureturneazvaloare
bool (*pf1)(int,int)
Pointerlafuncie cudoiparametridetipint carereturneazbool
int (*pf3)(int)
Pointerlafuncie cuunparametrudetipint carereturneazint
double (*pf4[N])(double,double)
VectordeNpointerilafunciicudoiparametridetipdouble carereturneaz
double
Constantedetippointer
Pointerconstant:
Tip*const p =adresa;
Pointerlaozondememorieconstant
Tipconst *p;
const Tip*p;
Pointerconstantlaozondememorieconstant
const Tip*const p =adresa;
Directivepreprocesor
Includerefiiere(#include)
Constantesimbolice/macrodefiniii (#define,#undef)
Compilarecondiionat(#ifdef,#ifndef,#else,#endif)
Erori(#error)
Opiunicompilare(#pragma)
Controlulliniilordecodlacompilare(#line)
Operatori preprocesare
# transformare nirdecaractere
##concatenareparametri
Elementenoidelimbaj(C++)
Alocarea memoriei
Operatoriinew idelete
Referine
Alocarea memoriei
Operatorul new
Alocare fr iniializare
int *pi=new int;
Alocarea cuiniializare
int *pi=new int(3);
Alocaremasivunidimensional
int *pv =new int[10];
Deverificat rezultatul alocrii!
Eliberarea memoriei
Operatoruldelete
Eliberarememorieelement
delete pi;
Eliberare memorie masiv;
delete[]pv;
malloc()/free() inew/delete!
Alocare dinamic Probleme posibile
Referireaunorzonedememorieprotejate
Referireaunorzonedememorieeliberate(dangling pointers)
Neeliberareamemoriei(memory leaks)
ncercareadeeliberareamemorieieliberatanterior
Alocarea memoriei

int *pa =NULL;

*pa =20;
pa xx
xx
xx
Alocarea memoriei

int *pa =new int(3);

deletepa;

*pa =20;
pa 3
Stiva
Heap
Alocarea memoriei

{
int *pa =new int(3);

}
pa 3
Stiva
Heap
Alocarea memoriei

int *pa,*pb =newint(3);


pa=pb;
deletepa;
deletepb;
pb 3
Stiva
Heap
pa
Referine
Stocheazadresauneivariabile
Aliaspentruvariabilaasociat
Seiniializeazladefinire
Nupotfimodificateulterior
Sederefereniaz automat
Utilentransmitereaparametrilorfunciilor
Referine
Tip&ref =varDefinitaAnterior;
Exemplu:
int x=20;
int &rx =x;
rx =15;
Referine
Funcie
voidcomuta(int &x,int &y)
{
int aux=x;
x=y;
y=aux;
}
Apel:
int a=3,b=10;
comuta(a,b);
Referine
Funcie:
int calcRadical(double x,double &rez)
{
int codRet =0;//inregula
if (x<0)
codRet =1;//eroare
else
rez =sqrt(x);
returncodRet;
}
Apel:
doublea=3,rad;
int cod=calcRadical(a,rad);
Referine
Funcie:
int &inc(int &x)
{
return++x;
}
Apel:
int a=3;
inc(a)+=10;
Domeniidenume
Posibilitateadegrupareatipurilordefinitedeutilizator
Evitareaconflictelordenume
Definireaunuidomeniudenume:
namespace nume_domeniu
{
}
Referireamembrilordintrundomeniu:
using namespace nume_domeniu;
sau
nume_domeniu::membru_domeniu;
SistemuldeintrareieireC++
Orientatdefluxuridedate(stream)
Variabileiniializateglobal
cin intrare
cout ieire
cerr eroare(ieire)
etc.
Operatori
>> (intrare) extraciedinflux
<< (ieire) inserienflux
Seutilizeaz:
fiierulantetiostream:include<iostream>
domeniuldenumestd:usingnamespacestd;
sau
domeniuldenumestd ioperatorulderezoluie:std::cout,std::cin etc.
Tratareaexcepiilor
Excepii situaiianormalelaexecuiaprogramului
mprirelazero
Depire
Accesareaunuielementnafaralimitelorunuimasiv
Referireailegalauneiadresedememorie
ntrerupereaexecuieiprogramului dacnusnt tratate!
try/catch/throw:
laapariiauneisituaiianormalenblocultry estetransmis(lansat)ovariabil
(excepie)prininstruciuneathrow (directnblocultry saudefunciileapelaten
acesta)
situaiileexcepionalesnt tratatenbloculcatch corespunztorexcepieilansate
Tratareaexcepiilor
try
{
//codcarepoatelansa excepii (prin throw):
apeluri defuncii carepotlansaexcepii
direct,prinutilizareainstruciuniithrow
}
catch(tipExceptie varExceptie)
{
//tratare excepiedetiptipExceptie
}
catch(tipExceptie1 varExceptie1)
{
//tratare excepiedetiptipExceptie1
}
catch()
{
//tratare excepiedeoricealttip
}
Exempluexcepie

S-ar putea să vă placă și

  • Instrumente CASE
    Instrumente CASE
    Document78 pagini
    Instrumente CASE
    AleXtazy
    Încă nu există evaluări
  • Java
    Java
    Document14 pagini
    Java
    AleXtazy
    Încă nu există evaluări
  • Java
    Java
    Document14 pagini
    Java
    AleXtazy
    Încă nu există evaluări
  • Curs Baze de Date
    Curs Baze de Date
    Document17 pagini
    Curs Baze de Date
    AleXtazy
    Încă nu există evaluări
  • POO Cursul 01
    POO Cursul 01
    Document32 pagini
    POO Cursul 01
    AleXtazy
    Încă nu există evaluări
  • Java
    Java
    Document14 pagini
    Java
    AleXtazy
    Încă nu există evaluări
  • MK 2 PP
    MK 2 PP
    Document20 pagini
    MK 2 PP
    Victor Ivanitchi
    Încă nu există evaluări
  • Curs 11
    Curs 11
    Document23 pagini
    Curs 11
    Viviana Vasile
    Încă nu există evaluări
  • 2b. Psihologia Umanista LB Romana
    2b. Psihologia Umanista LB Romana
    Document15 pagini
    2b. Psihologia Umanista LB Romana
    Catalin Campian
    Încă nu există evaluări
  • Manual POO Si Vizuala
    Manual POO Si Vizuala
    Document232 pagini
    Manual POO Si Vizuala
    informaticasitero
    100% (5)