Sunteți pe pagina 1din 34

PROGRAMARE II 2011-2012

Programare orientat obiect [Limbajul i platforma Java]

Capitolul 1 Introducere n universul obiectelor


Ce sunt obiectele i cum se lucreaz cu ele?

Ce ne propunem s aflm ?
Ce sunt i la ce pot folosi obiectele?
Cum crem i manipulm obiectele?

C1. Introducere n lumea obiectual


1. Modelul obiectual (Ce sunt obiectele?)
Cum le recunoatem Cum pot fi caracterizate Ce fac obiectele

2 Definirea i crearea obiectelor (Lucru cu obiecte)


Definire obiecte(identitate, stare/atribute, relaii-legturi) Iniializare obiecte

3. Interaciuni cu obiecte
Invocare obiecte Operaii i parametrizare

Paradigma
OBIECTUAL / ORIENTAT OBIECT / ORIENTAT PE OBIECTE [abstractizare, perspectiv structural] OBIECT-MESAJ [interaciuni, perspectiv comportamental]

1.1 Modelul obiectual


este un model de abstractizare i formalizare a soluiilor software la probleme din diverse domenii (n particular i domeniul economic), avnd la baz conceptul de obiect. Domeniul concret, abstractizat n contextul software, l vom numi domeniul afacerii, iar formalizarea acestuia avnd la baz conceptele legate de obiect o vom numi modelul orientat obiect al afacerii.

Modelul obiectual - abstractizare


Un model OO = un model de abstractizare a unui
aspect, context, problem,

din
lumea real, lumea sau domeniul afacerilor, un mediu de comunicare vizual.

Ce sunt obiectele ?
Ce putem abstractiza folosind obiectele?
o entitate; un lucru; un concept; ceva care poate fi recunoscut, delimitabil sau de sine stttor; ORICE Everything is an object

Cum pot fi caracterizate obiectele ?


Obiectele au o anume reprezentare (imagine) n contextul din care fac parte (pot fi descrise) Obiectele au o anumit utilitate (au anumite resposabiliti) Obiectele pot fi sociabile (se pot cunoate i invoca), putndu-se forma comuniti de obiecte, adic obiectele ar putea fi capabile s se manifeste colectiv (obiectele se combin ntre ele formnd structuri de obiecte complexe) Identitatea este caracteristica (fundamental) care deosebete obiectele ntre ele (sau prin care un obiect este recunoscubil ntr-o comunitate de obiecte)
9

Ce fac obiectele? Cum se manifest?


Se pot asocia, pot forma structuri complexe (compun obiecte de nivel superior) Colaboreaz, pentru a-i ndeplini responsabilitile proprii sau colective Adic:
se cunosc (anumite obiecte au cunotin de existena altor obiecte); vorbesc (comunic ntre ele pentru a-i cere ajutorul).

10

Categorii de obiecte
Obiecte active i obiecte pasive Obiecte procesate i obiecte control Obiecte locale i la distan Obiecte entiti i obiecte servicii Obiecte grafice i obiecte ale afacerii Obiecte generice i obiecte derivate Obiecte simple i obiecte compuse Obiecte persistente i obiecte tranziente

11

Modelul obiectual nivelul conceptual


STARE sum de caracteristici (informative de reprezentare) i suma cunotinelor (referinelor) ctre alte obiecte COMPORTAMENT manifestare ca urmare a invocrii (de ctre alte obiecte vezi interaciuni) utilitii lor INTERACIUNI schimb de mesaje (cereri i rspunsuri) ntre obiectele asociate n scopul invocrii diversele comportamente

IDENTITATE - difereniere prin comparabilitate n special n contextul n care mai sunt obiecte (n special de acelai fel)

12

Modelul obiectual nivelul logic [formalizare]


Atribut proprietate (caracteristic) ce caracterizeaz dintr-un anumit punct de vedere starea unui obiect Operaie sarcin (comportamental) de care poate fi responsabil (tie s o duc la ndeplinire, tie s o realizeze, o asum) un obiect Mesaj comunicarea cererilor i schimbul de informaii (interaciunilor) ntre obiecte Legtur refereniabilitatea care reflect canalul de comunicare Navigabilitate direcie de comunicare

13

Modelul obiectual nivelul concret [implementare]


Cmp sau variabil de instan pentru gestionarea valorilor concrete ale atributelor Metod modul de realizare concret a unei sarcini ca urmare a invocrii unei operaii
Invocare transmiterea concret a unui mesaj folosind referinele obiectelor Referin adrese direcionare pentru canalele concrete de comunicare

14

15

1.2 Definirea i crearea obiectelor


Reprezentarea formal obiectelor: clase de obiecte i variabile de instan Instanierea i iniializarea obiectelor: iniializare atribute i constructori

16

CLASE n accepiunea conceptual


Seturi de obiecte (tipuri) avnd aceleai caracteristici - expun aceeai semantic exprimate prin:
proprieti i operaii

17

CLASE n accepiunea implementrii


Definiii formale presupunnd: declaraii de membri de tip cmp (atribut sau variabil) : proprietate [calificat prin nume] care descrie un domeniu [range] de valori ce pot fi reinute [stocate] de ctre instanele respectivei proprieti operaie: definiia [implementarea] unui serviciu care poate fi cerut oricrui obiect dintr-o clas Blocuri {} de implementare a operaiilor: metode metode de iniializare explicit a obiectelor: constructori

18

Crearea obiectelor
Crearea obiectelor se refer la materializarea lor concret (ntr-un contex computaional de regul stocarea lor ntr-o structur de memorie specific). Crearea obiectelor: se realizeaz prin instanierea claselor: invocarea claselor prin cuvntul cheie new presupune iniializarea acestora: iniializarea variabilelor care descriu starea obiectelor, iniializare care se face: implicit: prin valori implicite asociate variabilelor de instan n momentul instanierii claselor; explicit: prin valori asociate explicit variabilelor de instan dup instaniere claselor (de regul prin intermediul constructurilor);
19

Iniializarea implicit
Iniializarea implicit se face difereniat funcie de:
membri (variabile) de tipuri primitive sau non-primitive membrii primitivi sunt iniializai : cu 0 pentru primitive numerice, cu spaiu pentru primitive char, cu false pentru primitive boolean membri referine sunt iniializai n sensul rezervrii locaiilor de memorie, dar nu au o valoare concret (starea lor, marcat prin lipsa unei valori, este desemnat prin null)

20

Iniializarea implicit
Iniializarea implicit se face difereniat i pentru:
membri statici (sau variabilele de clas) au valori comune pentru toate obiectele obinute prin instaniere aceleai clase i sunt se deosebesc de ceilali prin specificatorul static; sunt iniializai implicit la invocarea clasei, chiar fr instanierea vreunui obiect concret (pot fi invocai i prin numele clasei) membri non-statici (sau variabilele de instan) pot avea valori distincte pentru fiecare obiect posibil de obinut prin instanierea unei clase i se deosebesc de ceilali prin inexistena specificatorul static; nu au sens n absena instanierii unui obiect concret (nu pot fi accesai dect prin referina unui obiect)
21

Iniializarea explicit
n cazul membrilor (variabilelor) referine:
se refer la instanierea obiectelor n procesul de iniializare a variabilelor de instan se face folosind declaraia new

ref = new ClassName(...); Se realizeaz dup instanierea obiectelor


n contextul n care s-a realizat instanierea n contextul clasei din care sunt instanai folosind metode speciale numite constructori:

22

Tablouri
Declararea unui array NumeClas [] numeTablou; Pentru aflarea dimensiunii (numrului de elemente) tablourile prezint proprietatea instrinsec length Etapele operaiei de iniializare
iniializarea tabloului n sine - n aceast etap va fi specificat numrul de elemente care vor forma tabloul iniializarea elementelor care formeaz tabloul

23

Tablouri de primitive
prima variant: iniializarea separat a tabloului i a elementelor int [] a1 = new int[3]; a1 [0] = 1, a2[1] = 2, a3[2] = 3;
a dou variant: iniializarea n aceeai instruciune a tabloului i elementelor int [] a1 = {1, 2, 3};

24

Tablouri de obiecte (de referine-obiecte)


prima variant iniializare distinct Cont [] conturi = new Cont[3]; conturi [0] = new Cont("401", Furnizori"); conturi [1] = new Cont("411", Clienti"); conturi [2] = new Cont(5121", Cont banca"); a dou variant comprimarea iniializrii Cont [] conturi = {new Cont("401", Furnizori"), new Cont("411", Clienti"), new Cont(5121", Cont banca")};

25

Colecii de obiecte tipizate


List ArrayList<generice> Numrul de elemente din list: size() Verificare iniializare list: isEmpty() Access elemente individuale: get(indexNN) set(indexNN, element) remove(indexNN) indexOf(element) toArray() Structur de control pentru parcurgere elemente for(Tip numeVarIterati : numeList)
26

1.3 Interaciunea cu/ntre obiecte


Invocarea obiectelor: rolul structurilor de memorie care gestioneazeaz referine de obiecte (variabile sau tablouri) i accesarea atributelor Metode, parametri i variabile interne (alte tipuri de variabile fa de variabilele de instan)

27

Apelul sau invocarea obiectelor n execuia aplicaiilor


n general execuia unei aplicaii reprezint un set de apeluri de funcii i proceduri Execuia unei aplicaii cu obiecte poate fi vzut ca un set de interaciuni ntre un grup/comunitate de obiecte Interaciune = apel (sincron sau asicron) al operaiilor asociate obiectelor

28

Execuia aplicaiilor cu obiecte


Invocarea operaiilor se realizeaz prin adresarea ctre obiectele de care aparin
sintaxa cu punct obiect.operaie (list argumente) reprezint formalizarea mesajelor de invocare

Invocarea aceleai operaii ctre obiecte distincte poate conduce la rezultate distincte: execuia operaiei se face n contextul de stare distinct, propriu fiecrui obiect

29

Execuia aplicaiilor cu obiecte


Pre-condiii pentru invocarea operaiilor Mai nti trebuie s existe obiectele: obiectele trebuie instaniate Obiectele trebuie s fie adresabile (s poat fi accesate referinele lor n contextul din care vor fi invocate) Obiectele trebuie s prezinte operaii invocabile (vizibile) [Exemple NullPointerException, Member not found ]

30

Declaraiile operaiilor
Nume i tip returnat Specificatori de vizibilitate Parametrizare

<spec.vizibilitate> <tip> <numeOp>(<parametri>) :: <parametri> :: list <tip><numePrm>


void n locul tipului returnat <=> operaie fr tip returnat

31

Metode: implementarea operaiilor


Structuri specifice:
Structuri de date variabile interne acces la variabilele de instan parametri Structuri de control specifice programrii structurate

32

Constructorii: metode speciale ?


Constructorul reprezint o metod asociat oricrei clase i care este apelat n momentul crerii instanelor. Numele constructorului desemneaz o metod cu numele clasei, i nu prezint nici un tip returnat (nici mcar void).

33

Bibliografie
Ctlin Strmbei, Dezvoltarea aplicaiilor orientate obiect pe platforma Java, Ed.UAIC, 2010 Cap.1 Introducere n universul obiectelor Ivor Hortons, Beginning Java 2 JDK5 Edition, Wiley Publishing, Inc., Indianapolis, Indiana, 2005 Cap1. Introducing Java: Object Oriented Programming in Java, Java Program Structure Danny Poo, Derek Kiong, Swarnalatha Ashok, ObjectOriented Programming and Java, Second Edition, Springer, 2008 Cap 1. Introduction Cap 3. A quick tour of Java Doug Dann, Mastering the Fundamentals of the Java Programming Language, 2003
Cap 1. Fields and Methods: 1.2 Fields, 1.3 Field Initialization
34

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