Sunteți pe pagina 1din 27

PROGRAMAREA ORIENTATA

PE OBIECTE
[ Programarea Calculatoarelor
si Limbaje de Programare III ]
2012-Suceava

s.l.dr.ing. Remus Catalin PRODAN


remus@eed.usv.ro
remus.prodan@yahoo.com
apollo.eed.usv.ro/~remus

PROGRAMAREA ORIENTATA PE OBIECTE


PROGRAMARE SI LIMBAJE DE PROGRAMARE III
2012/2013 - Suceava

BIBLIOGRAFIE
A. CARTI

B.Stroustrup, The C++ Programming Language, Addison-Wesley, 1991


B.Stroustrup, The C++ Programming Language, Third Edition by Bjarne Stroustrup, by AT&T. Addison Wesley
Longman, Inc. ISBN 0201889544, 1997
B.Stroustrup, The Design and Evolution of C++, ddison-Wesley, ISBN 0-201-54330-3, August 2008.

B.Stroustrup, C++, Editura Teora, 2000

Ioan Salomie, Tehnici orientate pe obiecte, Ed. Microinformatica Cluj, 1995.

t.Gh. Pentiuc - Structuri de date i algoritmi fundamentali. Curs, Universitatea "tefan cel Mare" Suceava, 1993.

t.Gh. Pentiuc - Structuri de date i algoritmi fundamentali. ndrumar de laborator, Universitatea "tefan cel
Mare" Suceava, 1993

B. Referinte WEB
http://www.cplusplus.com/
http://www.oopweb.com/CPP/Documents/ThinkingInCpp1/VolumeFrames.html
http://www.oopweb.com/CPP/Documents/ThinkingInCpp2/VolumeFrames.html
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1905.pdf
http://www.open-std.org/jtc1/sc22/wg21/

PROGRAMAREA ORIENTATA PE OBIECTE


PROGRAMARE SI LIMBAJE DE PROGRAMARE III
2012/2013 - Suceava

Programa analitica CURS

Programarea Orientata pe Obiecte ( 3h )

Fundamentele POO
Conceptele ce definesc tehnologiile orientate obiect

Clase. Membrii unei clase ( 12h )

Autoreferina. Tipul de data referina


Obiecte standard de interfa (stream-uri)
Constructori si destructori
Constructorul de copiere
Membri statici ai unei clase
Tablouri de obiecte
Clase cu membri obiecte
Pointeri spre membri unei clase
Funcii si clase prietene ale unei clase.

Supradefinirea operatorilor ( 6h )

Operatorii unari si binari


Operatori speciali ( new, delete, ->, apel de funcie, etc. )
Operatori si constructori de conversie de tip. TDA-uri

PROGRAMAREA ORIENTATA PE OBIECTE

PROGRAMARE SI LIMBAJE DE PROGRAMARE III


2012/2013 - Suceava

Programa analitica CURS

Conceptele de Motenire si Generalizare ( 6h )


Motenirea simpla
Motenirea multipla
Clase si funcii virtuale

Polimorfismul ( 4h )

Funcii virtuale
Funcii pur virtuale

Mecanismul Template ( 3h )

Funcii parametrizate ( template )


Clase parametrizate ( template )
Mecanismul Template si motenirea

Mecanismul de tratare a excepiilor in C++ ( 2h )


Erori si excepii
Tratarea erorilor
Excepii in C++. Mecanismul trow, trycatch

PROGRAMAREA ORIENTATA PE OBIECTE

PROGRAMARE SI LIMBAJE DE PROGRAMARE III


2012/2013 - Suceava

Programa analitica CURS

Elemente specifice limbajului C++ (2h)


Spatii de nume (namespace)
Conversii de tip (type-casting)

Standard Template Library (STL) (3h)


Containere STL
Algoritmi STL

Evolutia limbajului: C++0x (1h)

PROGRAMAREA ORIENTATA PE OBIECTE

PROGRAMARE SI LIMBAJE DE PROGRAMARE III


2012/2013 - Suceava

Programa analitica LABORATOR

Introducere in limbajul C++


Adaugiri aduse de C++ standardului ANSI C. Utilitarul MAKE
Utilizarea obiectelor cin, cout cat si a operatorului new.
Membri statici ai unei clase
Functii si clase prietene ale unor alte clase
Redefinirea operatorilor ( unari si binari )
Redefinirea operatorilor speciali
Stream-uri. Iteratori.
Mostenirea simpla. Mostenirea multipla
Polimorfismul
Mecanismul template.
Tratarea exceptiilor

(2h)
(2h)
(2h)
(2h)
(2h)
(2h)
(2h)
(2h)
(2h)
(2h)
(2h)
(2h)

PROGRAMAREA ORIENTATA PE OBIECTE

PROGRAMARE SI LIMBAJE DE PROGRAMARE III


2012/2013 - Suceava

Programa analitica PROIECT


n cadrul proiectului se urmrete ca produsele-program realizat de studeni s utilizeze tehnologiile orientate pe
obiect studiate. Tema proiectului este la alegerea studentului, doar implementarea fiind condiionata in utilizarea
tehnologiei de programare orientata pe obiecte.
Exemple de teme de proiect:

Realizarea unei arhitecturi de clase pentru implementarea noiunii de Lista, Stiva sau alte TDA-uri.

Aplicaie ce va simula gestiunea intrrilor unei firme folosind fiiere in C++;

Aplicaie ce va simula gestiunea unei biblioteci folosind fiiere in C++;

Realizarea unei arhitecturi de clase pentru implementarea noiunii de Mulime (reprezentare prin vectori pe
bii).

Realizarea arhitecturii de clase pentru TDA-ul Arbore. Arbore binar.

Simulator de operaii cu numere complexe;

Realizarea arhitecturii de clase pentru TDA-ul Graf.

Implementarea unui meniu cu interfaa grafica in C++.

Sistemul de clase pentru implementarea unor figuri geometrice cunoscute (avnd reprezentare grafic ).

PROGRAMAREA ORIENTATA PE OBIECTE

PROGRAMARE SI LIMBAJE DE PROGRAMARE III


2012/2013 - Suceava

OBIECTIVE

pentru curs:
Constientizarea de catre studentii a importantei studierii programarii obiect orientate in contextual aplicatiilor moderne;
Prezentarea conceptelor i principiilor orientrii pe obiecte din perspectiva limabjului de programare C++;
Cursul isi propune familiarizarea studentilor cu notiunile teoretice si practice ale programarii obiectuale utilizate in cadrul
unor sisteme si compilatoare moderne de dezvoltare a aplicatiilor in C++ (Borland C++ 3.1, CodeBlocks, GCC, Visual C++,
Borland C++ Builder etc.).
Abordarea se face astfel incat aplicatiile dezvoltate sa poata fi rulate atat pe calculatoare personale (PC) cat si pe
echipamente mobile moderne.
In mod special sunt urmarite aspectele legate de optimizarea aplicatiilor din punctul de vedere al memoriei utilizate si a
vitezei de calcul.
pentru aplicatii:
Aplicatiile vin sa completeze notiunile dobandite la curs si sa creeze deprinderi corecte in dezvoltarea aplicatiilor
obiectuale.
Sunt folosite mai multe compilatoare, de la mai vechi, Borland C++ 3.1, la modernele VisualC++, Borland C++Builder, etc.
Se va programa pe platforme Windows cat si pe platforme Linux;
Temele laboratoarelor impun rezolvarea unor probleme concrete ce necesita fundamentarea cunostintelor acumulate in
timpul cursurilor.

CERINTE la DISCIPLINA
POO / PCLP III

A.

Activitatea la acesta disciplina se


va finaliza prin obtinerea celor 6 credite
aferente, atunci cand:
examenul a fost promovat cu o nota
>= 5
activitatea la laborator a fost
executata integral
proiectul a fost predat si promovat
nota la activitatea practica (laborator
+ proiect) este >= 5

B.

Neindeplinirea a cel putin unei


conditii va conduce la nepromovare si
trecerea disciplinei ca si CREDIT AMANAT.

C.

Activitatea la o disciplina ramasa

ca si credit amanat se recuprereaza


integral in anul urmator.

1. Prezenta la LABORATOR este OBLIGATORIE

2. Prezenta la CURS va fi recompensata cu 1p,


la nota obtinuta la EXAMEN

3. Recuperarea laboratoarelor:

Oricand in cadrul aceleiasi saptamani


2 absente motivate la final (in ultima
saptamana)
cu taxa, in limita a maxim 7 sedinte

4. Notarea la laborator se face pe baza:

notelor la cele 2, teste planificate cat si


pe baza notarii proiectului (aplicatie in C++ si
documentatie)

5. Examenul consta in 2 probe, date in aceeasi


zi:

proba practica ( pe calculator in C++)


proba teoretica (test cu 9 intrebari)

CERINTE la DISCIPLINA
POO / PCLP III

A. Activitatea pe parcurs

la specializarea AUTOMATICA

B. Activitatea pe parcurs la
specializarea CALCULATOARE

C. Nota la disciplina POO


/ PCLP III

Promovarea activitatii pe parcurs


este conditionata de:
prezenta 100% la sedintele de
laborator
media celor doua teste >= 5

Promovarea activitatii pe parcurs


este conditionata de:
prezenta 100%
media celor doua note >= 5
nota proiect >=5

Media( N.A.P, N.Ex )


N.A.P este >= 5
N.Ex este >= 5

PROGRAMAREA
ORIENTATA PE OBIECTE /

PCLP III
2012/2013 - Suceava

Agent-oriented
Component-based

Flow-based

Pipeline
Concatenative
Concurrent computing
Declarative (contrast: Imperative)

Functional
Dataflow

Paradigme de
programare

Constraint
Logic
Constraint logic
Abductive logic
aInductive logic

Modular

Recursive

Object - oriented

Class-based
Prototype-based
Automata-based
By separation of concerns:
- Aspect-oriented
- Subject-oriented
- Role-oriented
Language-oriented

Domain-specific

Grammar-oriented
Dialecting

Intentional
Metaprogramming

Automatic

Generic
Template
- Policy-based

Reflective
Attribute-oriented

Nondeterministic

Parallel computing

http://en.wikipedia.org/wiki/Object-oriented_programming

( contrast: Non-

Procedural

Non-structured ( contrast: Structured)

Array (contrast: Scalar)

Iterative

Structured

structured)

Cell-oriented
(spreadsheets)
Reactive

Event-driven

Service-oriented

Time-driven
Expression-oriented
Feature-oriented
Function-level ( contrast: Value-level)
Imperative ( contrast: Declarative)

Process-oriented

Programming in the large and


programming in the small
Value-level (contrast: Function-level)

PROGRAMAREA
ORIENTATA PE OBIECTE /
PCLP III

Programare nestructurata

programul principal
lucreaza direct cu
datele globale

2012/2013 - Suceava

O privire
asupra
tehnicilor de
programare

Observatii ....

Tehnica folosita, de obicei, in cazul primilor pasi pasi


facuti in programare, atunci cand cream primele
programe simple.

Metoda consta in insiruirea unei liste de declaratii si


instructiuni, ce modifica datele globale pe tot parcursul
programului

PROGRAMAREA
ORIENTATA PE OBIECTE /
PCLP III
2012/2013 - Suceava

O privire
asupra
tehnicilor de
programare

Programare procedurala
programul principal
apeleaza procedurile
si gestioneaza
parametri transmisi
cat si valorile
returnate

apelul procedurilor si
revenirea in locul
apelului

Paradigm n programare, prin care :


un program apeleaz subprograme
(functii si proceduri, pentru a rezolva subprobleme)
prin transmiterea corespunzatoare a parametrilor
(actuali, aflati n corespondent cu parametrii
formali descrisi in subprograme).

PROGRAMAREA
ORIENTATA PE OBIECTE /
PCLP III
2012/2013 - Suceava

O privire
asupra
tehnicilor de
programare

Programare structurata
Disciplin n programare prin folosirea unor
structuri bine precizate (fr goto).
Orice problem se poate descrie doar prin utilizarea
urmtoarelor trei structuri:
secvential,
alternativ,
repetitiv.
Limbaje specifice acestui stil de programare:
limbajul C,
limbajul Pascal,
etc.

PROGRAMAREA
ORIENTATA PE OBIECTE /
PCLP III
2012/2013 - Suceava

O privire
asupra
tehnicilor de
programare

Programare modulara
programul principal
apeleaza procedurile
in module separate
si gestioneaza datele
corespunzatore ca si
parametri

Prin proiectare (programare) modular nelegem metoda de


proiectare (programare) a unui algoritm pentru rezolvarea unei
probleme prin folosirea modulelor.
Modulul este considerat o unitate structural de sine stttoare, fie
program, fie subprogram, fie o unitate de program.
Un modul poate conine sau poate fi coninut ntr-alt modul si poate
fi format din mai multe submodule.

Probleme in programarea modulara


- Crearea si distrugerea explicita a tipurilor de date
- Decuplarea datelor de operatii

PROGRAMAREA
ORIENTATA PE OBIECTE /
PCLP III

Programare Orientata pe Obiecte


obiectele
programului
interactioneaza intre
ele prin
transmiterea de
mesaje.

2012/2013 - Suceava

O privire
asupra
tehnicilor de
programare

PRINCIPII .....

In cadrul programului sunt definite noi tipuri de date CLASE,


clase formate din date si functii.

Programul instantiaza unul sau mai multe OBIECTE din Clasele


create.

Obiectele interactoneaza intre ele prin intermediul interfetelor


publice puse la dispozitie.

Limbaje de programare specifice acestei tehnici:


Simula
SmallTalk
C++, C++0x
Java
C#, etc

PROGRAMAREA
ORIENTATA PE OBIECTE /
PCLP III
2012/2013 - Suceava

Istoria
limbajului C++

Limbajul C++
1970 - pentru prima dat definit limbajul C (Brian
Kernighan & Dennis Ritchie)
1965 existenta limbajelor orientate pe obiect:
SIMULA (1965)
SIMULA 2 (1967)
SMALLTALK (1970)
[ Dezavantajul acestor limbaje (n sensul c nu au
rmas pe pia ocupnd un procent foarte mare)
este faptul c nu au aprut de sine stttoare,
adic nu s-au bazat pe limbajele anterioare ]
1980 - BJARNE STROUSTRUP definete sub
denumirea de C with classes, limbajul ce a
devenit ulterior C++ .;
1983 - acest limbaj intr n lumea academic
1990 se incepe standardizarea prin comitetul
ANSI - X3J16 http://www.openstd.org/jtc1/sc22/wg21/docs/wp/html/oct97/

1996 - este standardizat ANSI C++


2009 - se initiaza dezvoltarea unui nou standard
C++09 ( initial fiind denumirea C++0x ) http://www.artima.com/cppsource/cpp0x.html

PROGRAMAREA
ORIENTATA PE OBIECTE /
PCLP III
2012/2013 - Suceava

Limbajului C++

Avantajul care l-a avut C++ comparativ cu celelalte


limbaje existente (urmrind aceeai tehnologie O.O )
a fost faptul c el a fost definit ca un superset al
limbajului C.
Ceea ce s-a introdus nou i foarte important fa de
vechiul limbaj C a fost noiunea de clas i restul
notiunilor ce deriv din aceasta.
Programatorii de C au fost pui n situaia de a sta n
faa unui compilator care le permitea s lucreze n
vechea lor manier i care accepta noile idei de P.O.O.
Utilizatorii au nceput s foloseasc C++ nainte ca
specialitii s aib timpul necesar s-i instruiasc
pentru a-l folosi cu randament maxim. (Stroustrup).
Acestui limbaj i se reproeaz multe:

este foarte complex i


este un limbaj de nivel mediu, ca i limbajul C
de unde rezult c nu corespunde n
totalitate principiilor de P.O.O ( care n mod
normal trebuiau s fie de nivel nalt).

[ De aceea, recent, a aprut un nou limbaj


care ncearc s corecteze aceste neajunsuri
reproate C++ - ului, limbajul JAVA ]

PROGRAMAREA
ORIENTATA PE OBIECTE /
PCLP III

Programarea Structurat este definit :


STRUCTURI
DE DATE

2012/2013 - Suceava

Fundamentele
Programarii
Orientate pe
Obiecte

PROGRAM
ALGORITMI

Programarea Orientat pe Obiect definit :


DATE

OBIECT
METODE

PROGRAMAREA
ORIENTATA PE OBIECTE /
PCLP III

Avantajul gruprii structurilor de date i a metodelor ce


opereaz cu aceste date, sub forma unor obiecte, este faptul c
obiectele, ce ncearc s simuleze conceptele ntlnite n lumea
nconjurtoare, reuesc s grupeze
structura conceptului respectiv, ct i
funcionalitatea sa.

Luand exemplul conceptului de numr complex, definirea lui n


manier orientat obiect const n:
Crearea unei clase;
Clasa va conine n zona de date
partea real i
parte imaginar a numrului,
In zona de interfa definim toate funciile sau operatorii
cu care lucreaz acest concept.

2012/2013 - Suceava

Fundamentele
Programarii
Orientate pe
Obiecte

Dup definirea acestei clase, n utilizare nu vor fi diferene fa


de utilizarea numrului ntreg, de exemplu.
Apare totui o diferen: acest concept de numr ntreg este
definit n interiorul limbajului C i este recunoscut, pe cand
conceptul de numr complex este definit de noi.

Programarea structural este o etap ce trebuia depit din


mai multe motive :
reutilizarea programelor era greoaie ;
scalabilitatea i extinderea unor module era dificil;
tratarea separat a datelor i a algoritmilor ce utilizeaz
aceste date.


PROGRAMAREA
ORIENTATA PE OBIECTE /
PCLP III

2012/2013 - Suceava

Conceptele
utilizate in
Tehnologiile
Orientate pe
Obiecte

P.O.O. Programare Orientat pe Obiecte


O.O.P. Object Oriented Programming
Conceptele introduse de POO:

ncapsularea
Abstractizarea
Motenirea ( Generalizarea si Specializarea )
Polimorfismul

Notiuni utilizate in POO:

Clasa
Obiect
Instanta
Metoda
Mostenire
Abstarctizare
Polimorfism

- class
- object
- instance
- method
- inheritance
- abstraction
- polymorphism

PROGRAMAREA
ORIENTATA PE OBIECTE /
PCLP III
2012/2013 - Suceava

Conceptele
utilizate in
Tehnologiile
Orientate pe
Obiecte

PROGRAMAREA
ORIENTATA PE OBIECTE /
PCLP III
2012/2013 - Suceava

Primul concept introdus de P.O.O. l reprezint


ncapsularea.

Acesta este realizat prin introducerea noiunii


de clas, ce poate grupa mpreun:
date (proprietati) i
funcii (metode)

Conceptele utilizate in
Tehnologiile Orientate pe
Obiecte

INCAPSULAREA

PROGRAMAREA
ORIENTATA PE OBIECTE /
PCLP III
2012/2013 - Suceava

Conceptele utilizate in
Tehnologiile Orientate pe
Obiecte

ABSTRACTIZAREA

Al doilea concept este abstractizarea.

Obiectul ce nglobeaz o anumit structur


(date membre) va fi definit n cadrul
programului va interaciona doar prin
intermediul comportamentului sau, funciilor
metodelor de interfa.

PROGRAMAREA
ORIENTATA PE OBIECTE /
PCLP III
2012/2013 - Suceava

Un alt concept este motenirea.


Acest concept ne permite specializarea
anumitor clase, n sensul mbuntirii
functionalitatilor , sau n sensul adugirii unor
noi metode.

Conceptele utilizate in
Tehnologiile Orientate pe
Obiecte

MOSTENIREA
Odat cu motenirea se definete generalizarea si
specializarea.
In fond, reprezint acelai lucru :
In cazul specializrii privim motenirea n evoluia sa
dinspre clasa de baz catre cea derivat (specializat),
iar generalizarea este fenomenul privit n sens invers.

PROGRAMAREA
ORIENTATA PE OBIECTE /
PCLP III
2012/2013 - Suceava

Conceptele utilizate in
Tehnologiile Orientate pe
Obiecte

POLIMORFISMUL

Un al patrulea concept este polimorfismul.

Vorbim despre acest concept atunci cnd o


entitate ( un obiect) produce un
comportament diferit aflat in situatii diferite.

PROGRAMAREA
ORIENTATA PE OBIECTE /
PCLP III
2012/2013 - Suceava

O privire
asupra
tehnicilor de
programare

Medii de programare (IDE) in C++


Borland CodeGear Embarcadero
Borland C++ 3.1
C++ Builder 6
C++ BuilderX
Turbo C++ ( freeware )
Embarcadero RAD Studio 2010, RAD Studio
XE1/2/3, etc
....
Microsoft
Microsoft Visual Studio 6
Microsoft Visual Studio 2010, 2012
....
Freeware
CodeBlocks
C-Free 5
Turbo C++
Eclipse C++
Carbide C++
Qt Creator
....

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