Sunteți pe pagina 1din 14

Obiectivele cursului

Programare orientat pe obiecte




1. Despre curs
2. Concepte i paradigme n POO

02.03.2006

OOP1 - T.U. Cluj - M. Joldos

S v ofere cunotine operaionale n dezvoltarea


software folosind orientarea pe obiecte, cu accent
pe conceptele, paradigmele i atitudinile necesare
scrierii de cod orientat pe obiecte de calitate
S v permit s v dezvoltai ndemnarea n
programare i inginerie software, s nvai s
utilizai efectiv un limbaj de programare orientat
pe obiecte relevant din punctul de vedere al
industriei software

02.03.2006

Rezultatele cursului (1)




OOP1 - T.U. Cluj - M. Joldos

Abiliti intelectuale


Fundamentele POO
Elementele principale n proiectarea,
programarea, testarea i documentarea
soluiilor OO
Metode de proiectare pentru programe Java de
complexitate relativ redus
Elemente de baz ale UML

02.03.2006

Rezultatele cursului (2)

Privitoare la cunotine/nelegere


OOP1 - T.U. Cluj - M. Joldos

S nelegei specificaia unei probleme i s o


rezolvai printr-un program pentru calculator n
paradigma programrii orientate pe obiecte.
S luai o specificaie parial i s luai deciziile
corespunztoare asupra funcionalitii
sistemului propus.
S dezvoltai o specificaie n UML dintr-o
descriere n limbaj natural

02.03.2006

OOP1 - T.U. Cluj - M. Joldos

Rezultatele cursului (3)




Subiecte abordate

Abiliti practice


S folosii eficient conceptele de programare OO


n Java
Sa dezvoltai programe de complexitate relativ
redus n Java
Sa depanai, testai i documentai soluii
folosind orientarea pe obiecte
Sa dezvoltai applet-uri i componente GUI
relativ simple

02.03.2006

Concepte i paradigme n
programarea orientat pe obiecte
Abstraciuni i tipuri de date
abstracte
Caracteristicile limbajului Java
Tipurile de date primitive i
structurile de control n Java
Clase i obiecte
Interfee Java
Excepii i tratarea lor
Principalele API-uri i clase
predefinite n Java

OOP1 - T.U. Cluj - M. Joldos









02.03.2006

Examen scris (E), evaluarea activitii de la laborator


(L), evaluarea unui mini-proiect (P).
Nota final = 0.5E + 0.5(L+P)/2





Tnas, S., Olaru, C, Andrei, t., Java de la 0 la expert, Ed.


Polirom, 2003
Clin Vduva, Programarea n Java, Ed. Albastr, 2004
(reeditare)
Bruce Eckel, Thinking in Java, 3rd edition, Prentice Hall,
2002
Documentaia Java de la Sun Microsystems
Tutoriale UML introductive
Documentaia BlueJ

02.03.2006

OOP1 - T.U. Cluj - M. Joldos




Temele de astzi

Referine

Concepte i paradigme n POO

Evaluare


Reprezentarea n UML a claselor,


obiectelor i asociaiilor; diagrame
de clase i obiecte
Programarea bazat pe clase i
obiecte
Motenirea i polimorfismul
Programarea orientat pe obiecte
Scurt introducere n
programarea condus de
evenimente
Scurt introducere n
programarea applet-urilor i a
componentelor GUI

OOP1 - T.U. Cluj - M. Joldos

Evaluare. Referine


Paradigme de programare (programarea


imperativ i programarea structurat)
Abstractizarea datelor





Paradigma POO
Concepte POO



Tipuri de date abstracte

02.03.2006

Obiecte i clase
ncapsulare i motenire
OOP1 - T.U. Cluj - M. Joldos

Paradigme de programare


Paradigme de programare

Paradigm (dict.): Un set de supoziii, concepte,


valori i practici care constituie o viziune a realitii
pentru comunitatea care le adopt, n special ntro disciplin intelectual.
Paradigm de programare



Un model care descrie esena i structura computaiei


Ofer (i determin) viziunea pe care o are
programatorul asupra execuiei programului
Exemple:


02.03.2006

n POO, programatorii pot concepe programele ca fiind o


colecie de obiecte care interacioneaz
n programarea funcional un program poate fi conceput ca
fiind o secven de evaluri de funcii, fr stri
OOP1 - T.U. Cluj - M. Joldos

02.03.2006

Programarea imperativ


Programarea structurat

n modelul tradiional von Neumann, un calculator const


dintr-o unitate central de prelucrare i memorie i el
efectueaz secvene de instruciuni atomice care
acceseaz, opereaz asupra valorilor stocate locaii de
memorie adresabile individual i le modific. Aici, o
computaie este o serie de operaii aritmetice i de
efecte laterale, cum sunt atribuirile sau transferurile de
date care modific starea unitii de stocare, intrarea
sau ieirea
Ne referim la acest ca paradigm imperativ sau
procedural.
Este de subliniat importana atribuirilor i a variabilelor pe
post de containere pentru paradigma imperativ
Exemple de limbaje: Fortran, Pascal, C, Ada.

02.03.2006

OOP1 - T.U. Cluj - M. Joldos

10

OOP1 - T.U. Cluj - M. Joldos

11

valori de intrare

Bloc
principal

Procedur

valori de intrare

Funcie
valoare/valori de ieire

02.03.2006

OOP1 - T.U. Cluj - M. Joldos

12

Programarea structurat


Beneficiile programrii structurate

Abstractizarea operaiilor


Structura unui modul


Interfaa








Implementarea

Date de intrare
Date de ieire
Descrierea funcionalitii




Date locale
Secvene de instruciuni

Sintaxa limbajului


02.03.2006

Uureaz dezvoltarea software

Organizarea codului n blocuri de instruciuni


Definiii de funcii i proceduri
Extinderea limbajului cu noi operaii
Apeluri la proceduri i funcii noi
OOP1 - T.U. Cluj - M. Joldos

Faciliteaz ntreinerea software






13

Evit repetarea realizrii aceluiai lucru


Munca de programare este descompus n
module independente
Proiectare Top-down: descompunerea n
subprobleme
Codul este mai uor de citit
Independena modulelor

Favorizeaz reutilizarea software

02.03.2006

Programarea structurat. Exemplu

Abstractizarea datelor: impunerea unei separri


clare ntre proprietile abstracte ale unui tip de
dat i detaliile concrete ale implementrii lui


OOP1 - T.U. Cluj - M. Joldos

14

Abstractizarea datelor


02.03.2006

OOP1 - T.U. Cluj - M. Joldos

15

Proprieti abstracte: acelea care sunt vizibile codului


client care folosete tipul de dat interfaa cu tipul de
dat
Implementarea concret este pstrat in totalitate
privat i ea se poate intr-adevr schimba, spre exemplu
pentru a incorpora mbuntiri ale performanelor n
timp.

02.03.2006

OOP1 - T.U. Cluj - M. Joldos

16

Tipuri abstracte de date




Exemplu de tip de dat abstract n C

Abstractizarea datelor + abstractizarea


operaiilor


Un tip de dat abstract:




Structur de date care stocheaz informaii pentru


a reprezenta un anumit concept
Funcionalitate: set de operaii care pot fi aplicate
tipului de dat

Sintaxa limbajului



02.03.2006

Modulele sunt asociate tipurilor de date


Sintaxa nu este neaprat nou fa de programarea
modular
OOP1 - T.U. Cluj - M. Joldos

17

02.03.2006

Extensibilitatea tipului de dat abstract




OOP1 - T.U. Cluj - M. Joldos

18

Beneficiile tipurilor de date abstracte




02.03.2006

OOP1 - T.U. Cluj - M. Joldos

19

Conceptele din domeniu sunt reflectate n cod


ncapsulare: complexitatea intern, datele i
detaliile operaiilor sunt ascunse
Utilizarea tipului de dat este independent de
implementarea sa intern
Ofer o mai mare modularitate
Sporete uurina ntreinerii i reutilizrii codului

02.03.2006

OOP1 - T.U. Cluj - M. Joldos

20

Paradigma orientat pe obiecte




Paradigma orientrii pe obiecte

Paradigma programrii structurate a avut iniial succes


(1975-85)
 Dar a nceput s eueze la produse mai mari (>
50,000 LOC)
PS avea probleme de ntreinere post-livrare (astzi
aceast ntreinere necesit, de la 70 la 80% din efortul
total)
Motivul: Metodele structurate sunt fie
 orientate pe operaii (analiza fluxului de date)
fie
 orientate pe atribute (d.e. dezvoltarea cu metoda
Jackson)
 Dar nu amndou

02.03.2006

OOP1 - T.U. Cluj - M. Joldos

21

Paradigma folosit n limbaje: o simulare a


domeniului unei probleme prin abstractizarea
informaiilor de comportament i stare din obiecte
din lumea real
Conceptele de obiecte, clase, transmitere de
mesaje i motenire sunt cunoscute ca fcnd
parte din paradigma orientrii pe obiecte.

02.03.2006

Comparaie ntre paradigma structurat


i cea obiectual

Paradigma orientrii pe obiecte




retrage

POO consider c att atributele ct i


operaiile au importan egal
O viziune simplist a unui obiect poate fi:


depune

Obiect = component software care incorporeaz


att atributele ct i operaiile care se pot efectua
asupra atributelor i care suport motenirea.

Date:
soldul contului
Aciuni: depune, retrage, determin soldul




02.03.2006

OOP1 - T.U. Cluj - M. Joldos

mesaj

determinaSold

Cont bancar


solduContului
soldulContului

depune

retrage

mesaj

soldulContului
determinaSold

Exemplu:


22

OOP1 - T.U. Cluj - M. Joldos

23

mesaj

Ascunderea informaiei
Proiectarea dirijat de responsabiliti
Impact asupra ntreinerii i dezvoltrii

02.03.2006

OOP1 - T.U. Cluj - M. Joldos

24

Ascunderea informaiei


n versiunea orientat pe obiecte




Punctele tari ale paradigmei OO




Linia continu din jurul lui soldulContului arat


c n afara obiectului nu se tie cum este
implementat soldulContului

n versiunea clasic

Cu ascunderea informaiei, ntreinerea postlivrare este mai sigur

Dezvoltarea este mai uoar




Toate modulele au detalii privind implementarea


lui soldulContului

02.03.2006

OOP1 - T.U. Cluj - M. Joldos

25

ansele apariiei erorilor regresive sunt reduse


(n software nu se repet erori cunoscute)
Obiectele au n general corespondente fizice


02.03.2006

Punctele tari ale paradigmei OO (2)


Obiectele bine proiectate sunt uniti
independente





Tot ce se refer la obiectul real modelat este n


obiect ncapsulare
Comunicarea se face prin schimb de mesaje
Aceast independen este augmentat prin

02.03.2006

OOP1 - T.U. Cluj - M. Joldos

Paradigma OO reduce complexitatea deoarece


produsul const, n general, din uniti
independente

Paradigma OO promoveaz reutilizarea




27

26

Un produs clasic const d.p.d.v conceptual


dintr-o singur unitate (dei poate fi
implementat ca un set de module)


proiectarea dirijat de responsabilitate

OOP1 - T.U. Cluj - M. Joldos

Punctele tari ale paradigmei OO (3)




Acest lucru simplific modelarea (un aspect cheie al


paradigmei OO)

Obiectele sunt entiti independente

02.03.2006

OOP1 - T.U. Cluj - M. Joldos

28

Programarea orientat pe obiecte







Concepte OOP

Ofer suport sintactic pentru tipurile de date


abstracte
Ofer faciliti asociate cu ierarhiile de clase
Schimb punctul de vedere: programele
sunt apendice ale datelor
introduc un concept nou: obiect = tip de
dat abstract cu stare (atribute) i
comportament (operaii)

02.03.2006

29

OOP1 - T.U. Cluj - M. Joldos

Ne ocupm doar de datele care prezint


interes pentru problema noastr.
Acest proces de filtrare a detaliilor
neimportante ale obiectului astfel nct s
rmn doar caracteristicile importante este
cunoscut sub numele de abstractizare.

02.03.2006

Abstractizare

Abstractizare
istoric genetic

istoric medical
familia

maini
vndute

maini vndute

procentul
comisionului

procentul
comisionului
numele

talente
jurnalul
creditului

numele
Abstractizarea unei
PersoanaVinzator pentru un
Sistem de urmrire a vnzrilor

lumea real
02.03.2006

30

OOP1 - T.U. Cluj - M. Joldos

OOP1 - T.U. Cluj - M. Joldos

31

02.03.2006

OOP1 - T.U. Cluj - M. Joldos

32

Abstractizare

Ce sunt obiectele software?




Blocurile de construcie a sistemelor software




istoric medical


istoric genetic

familia


Obiectele modeleaz lucruri tangibile




Abstractizarea unui
Pacient dintr-o baze de
date medical
02.03.2006

OOP1 - T.U. Cluj - M. Joldos




33

un program este o colecie de obiecte care


interacioneaz
obiectele coopereaz pentru a finaliza o sarcin
pentru aceasta, ele comunic trimindu-si mesaje
unul altuia
persoana
biciclet

02.03.2006

Ce sunt obiectele software?




ntlnire
dat calendaristic

aflarea drumului printr-un labirint


sortarea unui pachet de cri de joc

capabiliti: ce pot face, cum se comport


proprieti: trsturi (caracteristici) care descriu
obiectele

02.03.2006

OOP1 - T.U. Cluj - M. Joldos

obiectele sunt detepte ele tiu cum s fac anumite


lucruri
un obiect face ceva doar dac un alt obiect i spune s-i
foloseasc una dintre capabiliti

 Capabilitile

Obiectele au


Obiectele au capabiliti (comportamente) care le


permit s efectueze aciuni specifice


Obiectele modeleaz procese




34

Capabilitile obiectelor: aciuni

Obiectele modeleaz lucruri conceptuale




OOP1 - T.U. Cluj - M. Joldos




35

pot fi:

constructori: stabilesc starea iniial a proprietilor

obiectului
comenzi: modific proprietile obiectului
interogri: furnizeaz rspunsuri bazate pe proprietile
obiectului

02.03.2006

OOP1 - T.U. Cluj - M. Joldos

36

Capabilitile obiectelor: aciuni




Proprietile obiectului: starea

Exemple: borcanele cu gem sunt capabile s


efectueze aciuni specifice




constructor: s fie creat


comenzi: adaug gem, golete-te
interogri: rspunde dac este nchis
sau deschis capacul, dac este plin sau
gol

02.03.2006

OOP1 - T.U. Cluj - M. Joldos

Proprietile determin cum acioneaz un obiect

Proprietile pot fi:






37

unele proprieti pot fi constante, iar altele variabile


proprietile nsele sunt obiecte pot i primi mesaje
capacul borcanului cu gem i gemul n sine sunt obiecte
atribute: lucruri care ajut la descrierea unui obiect
componente: lucruri care sunt parte a unui obiect
asocieri: lucruri despre care tie un obiect, dar care nu
sunt parte a acelui obiect

02.03.2006

Proprietile obiectului: starea




obiectului; se schimb dac o proprietate se


schimb


unele nu se schimb, d.e. volanul unei maini


altele se schimb, d.e. culoarea mainii

Concepia noastr curent: fiecare obiect


corespunde direct unui anumit obiect din realitate,
d.e., un atom sau un automobil anume
Dezavantaj: este mult prea nepractic s lucrm cu
obiecte n acest fel deoarece


Exemplu: proprietile borcanelor cu gem

 atribute: culoare, material, miros


 componente: capac, container, etichet
 asocieri: un borcan cu gem poate fi asociat cu
ncperea n care se afl

OOP1 - T.U. Cluj - M. Joldos

39

ele pot fi infinit de multe


nu dorim s descriem fiecare individ separat, deoarece
ei au multe lucruri n comun

Clasificarea obiectelor scoate n eviden ce este


comun ntre mulimi de obiecte similare


02.03.2006

38

Clase i instane

Stare: colecie a tuturor proprietilor

OOP1 - T.U. Cluj - M. Joldos

mai nti s descriem ce este comun


apoi s tampilm oricte copii

02.03.2006

OOP1 - T.U. Cluj - M. Joldos

40

Clase ale obiectelor

Clase ale obiectelor




Clasa unui obiect

categoria obiectului
 definete capabilitile i proprietile comune
unei mulimi de obiecte individuale




toate borcanele cu gem se pot deschide, nchide i goli

definete un ablon pentru crearea de instane

de obiect


Clasele implementeaz capabilitile ca metode

Clasele implementeaz proprietile ca variabile

instan


unele borcane cu gem pot fi din plastic, pot fi colorate,


de o anumit mrime etc.

02.03.2006

OOP1 - T.U. Cluj - M. Joldos

41

secvene de instruciuni n Java


obiectele coopereaz trimind mesaje altor obiecte
fiecare mesaj invoc o metod

locaie de memorie alocat obiectului, care poate


potenial pstra o valoare care se poate schimba

02.03.2006

Instanele obiectelor sunt obiecte individuale


realizate din ablonul clasei
 o clas poate reprezenta un numr nedefinit de
instane de obiect
 realizarea unei instane de obiect se numete
instanierea obiectului respectiv

clas: clasa obiectului


 instan: instana obiectului (a nu se confunda cu
variabilele instan)
43

culoare i poziie diferit


diverse tipuri de gem n interior

Astfel c, variabilele instan ale lor au valori


diferite


OOP1 - T.U. Cluj - M. Joldos

Instane diferite ale, d.e., clasei BorcanCuGem pot


avea:


Prescurtare:

02.03.2006

42

Instane de obiect

Instane de obiect


OOP1 - T.U. Cluj - M. Joldos

Not: instanele de obiect conin variabile instan dou


moduri de folosire diferite, dar nrudite, a cuvntului instan

Instanele individuale au identiti individuale







aceasta permite altor obiecte s trimit mesaje a unui obiect


dat
fiecare instan este unic, chiar dac are aceleai capabiliti
gndii-v la clasa studenilor de la acest curs

02.03.2006

OOP1 - T.U. Cluj - M. Joldos

44

Mesaje pentru comunicarea ntre


obiecte


Mesaje pentru comunicarea ntre


obiecte


Nici o instana nu este o insul ea trebuie s


comunice cu altele pentru a-i realiza sarcina


Fiecare mesaj necesit:





proprietile le permit s tie despre alte obiecte

Instanele trimit mesaje una alteia pentru a invoca


o capabilitate (adic, pentru a executa o sarcin)



metoda reprezint codul care implementeaz mesajul


spunem apeleaz metoda n loc de invoc
capabilitatea

02.03.2006

OOP1 - T.U. Cluj - M. Joldos

metod pentru a opera




vom trata tipurile returnate n detaliu, mai trziu

02.03.2006

Un automobil ncapsuleaz mult informaie




chiar literal, prin complexitatea construciei sale

Dar nu este nevoie s tii cum funcioneaz o


main pentru a o conduce

Asemntor, nu e nevoie s tim cum funcioneaz


un obiect pentru a-i trimite mesaje
Dar, este nevoie s tim ce mesaje nelege (adic,
care i sunt capabilitile)


clasa instanei determin ce mesaje i pot fi trimise

Volanul i schimbarea vitezelor constituie


interfaa
 motorul, transmisia, axul cardanic, roile, . . . ,
sunt implementarea (ascuns)

Implementare

Ax cardanic
02.03.2006

OOP1 - T.U. Cluj - M. Joldos

46

OOP1 - T.U. Cluj - M. Joldos

ncapsulare

ncapsulare


mai multe mai trziu

Receptorul poate (dar nu este nevoit) sa trimit un


rspuns


45

un emitor (expeditor): obiectul care iniiaz aciunea


un receptor: instana a crei metode este invocat
numele mesajului: numele metodei apelate
opional parametri: informaii suplimentare necesitat de

47

02.03.2006

Interfa

Transmisie
OOP1 - T.U. Cluj - M. Joldos

48

ncapsularea


Obiectele separ interfaa de implementare

nchiderea datelor ntr-un obiect




Vederile unei clase


 obiectul este cutie neagr; ascunde funcionarea i prile
interne

Datele nu pot fi accesate direct din afar

Ofer securitatea datelor

 interfaa protejeaz implementarea mpotriva utilizrii


greite
Detalii de
implementare
private

API
public

Capabilitate
public

Capabilitate
public
Capabilitate
public
Capabilitate
public

02.03.2006

OOP1 - T.U. Cluj - M. Joldos

49

02.03.2006

Vederile unei clase




permite instanelor s coopereze unele cu altele


fr a ti prea multe detalii
ca un contract: const dintr-o list de
capabiliti i documentaie pentru cum s fie
folosite

Implementarea: vedere privat




OOP1 - T.U. Cluj - M. Joldos




proprietile care ajut capabilitile s-si


ndeplineasc sarcinile

02.03.2006

Capabilitate
public
50

OOP1 - T.U. Cluj - M. Joldos

Motenirea

Interfaa: vedere public




Capabilitate
public

Proprieti
private

51

O clas (subclas) poate moteni atribute i


metode dintr-o alt clas (superclas)
Subclasele furnizeaz comportament
Bicicleta
specializat
Ofer reutilizarea codului
Evit duplicarea
datelor

02.03.2006

Bicicleta de munte

OOP1 - T.U. Cluj - M. Joldos

Cursier

Biciclet tandem
52

Polimorfism



Concepte prezentate

Abilitatea de a lua multe forme


Aceeai metod folosit ntr-o superclas
poate fi suprascrise n subclase pentru a da o

funcionalitate diferit

Paradigme n programare

structurat
orientat pe obiecte




Abstractizare









OOP1 - T.U. Cluj - M. Joldos

53

constructor
comenzi
interogri

proprieti: stare


capabiliti(comportamente):
aciuni

aflaSuprafata in subclasa Dreptunghi  a=x*y


02.03.2006

Obiect


D.e. Superclasa Poligon are o metod numit,


aflaSuprafata
aflaSuprafata n subclasa Triunghi  a=x*y/2

tip de dat abstract

Comunicarea ntre obiecte:


mesaje
ncapsulare
Clas

atribute
componente
asocieri




Motenire


ablon pentru crearea obiectelor


capabilitile obiectelor:
implementate ca metode
proprietile obiectelor: variabile
instan
interfa vedere public
implementare vedere privat
superclas, subclas

Polimorfism

instan a unei clase

02.03.2006

OOP1 - T.U. Cluj - M. Joldos

54

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