curs 3 ppoo - cristianciurea · 2019. 10. 11. · curs 3 ppoo conf. univ. dr. cristian ciurea...
TRANSCRIPT
![Page 1: Curs 3 PPOO - cristianciurea · 2019. 10. 11. · Curs 3 PPOO Conf. univ. dr. Cristian CIUREA Departamentul de Informatică și Cibernetică Economică cristian.ciurea@ie.ase.ro 1](https://reader036.vdocuments.site/reader036/viewer/2022062403/60b054b20e653b7f12533ef8/html5/thumbnails/1.jpg)
Curs 3 PPOOConf. univ. dr. Cristian CIUREA
Departamentul de Informatică și Cibernetică Economică
1
![Page 2: Curs 3 PPOO - cristianciurea · 2019. 10. 11. · Curs 3 PPOO Conf. univ. dr. Cristian CIUREA Departamentul de Informatică și Cibernetică Economică cristian.ciurea@ie.ase.ro 1](https://reader036.vdocuments.site/reader036/viewer/2022062403/60b054b20e653b7f12533ef8/html5/thumbnails/2.jpg)
Java fundamentals
Clase
Shallow Copy vs. Deep Copy
Moștenire (derivare)
Polimorfism
Clase abstracte
Interfețe
2
![Page 3: Curs 3 PPOO - cristianciurea · 2019. 10. 11. · Curs 3 PPOO Conf. univ. dr. Cristian CIUREA Departamentul de Informatică și Cibernetică Economică cristian.ciurea@ie.ase.ro 1](https://reader036.vdocuments.site/reader036/viewer/2022062403/60b054b20e653b7f12533ef8/html5/thumbnails/3.jpg)
ClaseConcepte de bază ale POO:
Ce este o clasă? Ce este un obiect?
Fiecare obiect conține date (atribute/ câmpuri/ variabile instanță)
definite în cadrul clasei;
O clasă definește o serie de funcții (metode/ operații) care aplicate
unui obiect definesc interfața acestuia;
Datele obiectelor sunt ascunse și pot fi accesate doar prin funcții
definite în interiorul clasei => încapsulare;
Starea unui obiect este definită prin atributele sale;
Comportamentul unui obiect este definit prin metodele sale;
Conceptul de transmitere a unui mesaj unui obiect este echivalent
cu apelul unei metode.
3
![Page 4: Curs 3 PPOO - cristianciurea · 2019. 10. 11. · Curs 3 PPOO Conf. univ. dr. Cristian CIUREA Departamentul de Informatică și Cibernetică Economică cristian.ciurea@ie.ase.ro 1](https://reader036.vdocuments.site/reader036/viewer/2022062403/60b054b20e653b7f12533ef8/html5/thumbnails/4.jpg)
Clase
Sintaxa pentru definirea unei clase:
4
![Page 5: Curs 3 PPOO - cristianciurea · 2019. 10. 11. · Curs 3 PPOO Conf. univ. dr. Cristian CIUREA Departamentul de Informatică și Cibernetică Economică cristian.ciurea@ie.ase.ro 1](https://reader036.vdocuments.site/reader036/viewer/2022062403/60b054b20e653b7f12533ef8/html5/thumbnails/5.jpg)
Clase
Modificatorii de acces:
public
private
protected
default
Atributele:
final
abstract
5
![Page 6: Curs 3 PPOO - cristianciurea · 2019. 10. 11. · Curs 3 PPOO Conf. univ. dr. Cristian CIUREA Departamentul de Informatică și Cibernetică Economică cristian.ciurea@ie.ase.ro 1](https://reader036.vdocuments.site/reader036/viewer/2022062403/60b054b20e653b7f12533ef8/html5/thumbnails/6.jpg)
Clase
6
![Page 7: Curs 3 PPOO - cristianciurea · 2019. 10. 11. · Curs 3 PPOO Conf. univ. dr. Cristian CIUREA Departamentul de Informatică și Cibernetică Economică cristian.ciurea@ie.ase.ro 1](https://reader036.vdocuments.site/reader036/viewer/2022062403/60b054b20e653b7f12533ef8/html5/thumbnails/7.jpg)
Clase
Cuvinte cheie:
extends: permite derivarea clasei dintr-o altă clasă de
bază;
implements: permite derivarea clasei din una sau mai
multe interfețe.
7
![Page 8: Curs 3 PPOO - cristianciurea · 2019. 10. 11. · Curs 3 PPOO Conf. univ. dr. Cristian CIUREA Departamentul de Informatică și Cibernetică Economică cristian.ciurea@ie.ase.ro 1](https://reader036.vdocuments.site/reader036/viewer/2022062403/60b054b20e653b7f12533ef8/html5/thumbnails/8.jpg)
Clase
Atributele clasei:
variabile instanță sau atribute ale obiectelor;
variabile statice (un fel de variabile globale).
Metodele clasei:
funcții constructor;
funcții accesor (get() și set());
alte metode de prelucrate.
8
![Page 9: Curs 3 PPOO - cristianciurea · 2019. 10. 11. · Curs 3 PPOO Conf. univ. dr. Cristian CIUREA Departamentul de Informatică și Cibernetică Economică cristian.ciurea@ie.ase.ro 1](https://reader036.vdocuments.site/reader036/viewer/2022062403/60b054b20e653b7f12533ef8/html5/thumbnails/9.jpg)
Clase
Într-un fișier Java (.java) pot fi definite mai multe clase;
Într-un fișier Java (.java) poate fi definită o singură clasă
publică;
Fișierul sursă Java conținând clasa publică poartă denumirea
clasei publice;
Prin compilarea unui fișier sursă Java ce include mai multe
clase se obțin fișiere bytecode (.class) pentru fiecare clasă.
9
![Page 10: Curs 3 PPOO - cristianciurea · 2019. 10. 11. · Curs 3 PPOO Conf. univ. dr. Cristian CIUREA Departamentul de Informatică și Cibernetică Economică cristian.ciurea@ie.ase.ro 1](https://reader036.vdocuments.site/reader036/viewer/2022062403/60b054b20e653b7f12533ef8/html5/thumbnails/10.jpg)
Clase
Crearea obiectelor se face prin apelul operatorului new care
apelează constructorul clasei
Accesarea metodelor și atributelor unui obiect se realizează
cu ajutorul operatorului punct (.)
10
![Page 11: Curs 3 PPOO - cristianciurea · 2019. 10. 11. · Curs 3 PPOO Conf. univ. dr. Cristian CIUREA Departamentul de Informatică și Cibernetică Economică cristian.ciurea@ie.ase.ro 1](https://reader036.vdocuments.site/reader036/viewer/2022062403/60b054b20e653b7f12533ef8/html5/thumbnails/11.jpg)
Clase
11
![Page 12: Curs 3 PPOO - cristianciurea · 2019. 10. 11. · Curs 3 PPOO Conf. univ. dr. Cristian CIUREA Departamentul de Informatică și Cibernetică Economică cristian.ciurea@ie.ase.ro 1](https://reader036.vdocuments.site/reader036/viewer/2022062403/60b054b20e653b7f12533ef8/html5/thumbnails/12.jpg)
Clase
Atributele constante:
definite cu final;
nu se poate modifica valoarea acestora odată ce au fost
inițializate;
12
![Page 13: Curs 3 PPOO - cristianciurea · 2019. 10. 11. · Curs 3 PPOO Conf. univ. dr. Cristian CIUREA Departamentul de Informatică și Cibernetică Economică cristian.ciurea@ie.ase.ro 1](https://reader036.vdocuments.site/reader036/viewer/2022062403/60b054b20e653b7f12533ef8/html5/thumbnails/13.jpg)
Clase
Atributele constante:
sunt inițializate în constructor sau la definire (dar nu în
ambele situații);
sunt echivalente variabilelor constante din C++.
13
![Page 14: Curs 3 PPOO - cristianciurea · 2019. 10. 11. · Curs 3 PPOO Conf. univ. dr. Cristian CIUREA Departamentul de Informatică și Cibernetică Economică cristian.ciurea@ie.ase.ro 1](https://reader036.vdocuments.site/reader036/viewer/2022062403/60b054b20e653b7f12533ef8/html5/thumbnails/14.jpg)
Clase
Atributele statice:
sunt definite prin cuvântul static;
reprezintă atribute ce nu aparțin unui obiect;
pot fi definite și final;
inițializarea se face la definire sau într-un bloc de
inițializare;
sunt considerate variabile definite la nivelul clasei (un fel
de variabile globale);
sunt accesate prin numele clasei.
14
![Page 15: Curs 3 PPOO - cristianciurea · 2019. 10. 11. · Curs 3 PPOO Conf. univ. dr. Cristian CIUREA Departamentul de Informatică și Cibernetică Economică cristian.ciurea@ie.ase.ro 1](https://reader036.vdocuments.site/reader036/viewer/2022062403/60b054b20e653b7f12533ef8/html5/thumbnails/15.jpg)
Clase
15
![Page 16: Curs 3 PPOO - cristianciurea · 2019. 10. 11. · Curs 3 PPOO Conf. univ. dr. Cristian CIUREA Departamentul de Informatică și Cibernetică Economică cristian.ciurea@ie.ase.ro 1](https://reader036.vdocuments.site/reader036/viewer/2022062403/60b054b20e653b7f12533ef8/html5/thumbnails/16.jpg)
Clase
Funcții statice:
Sunt funcții care nu aparțin unui obiect;
Sunt “funcții globale” care aparțin unei clase de obiecte;
Au acces doar la ceilalți membri statici ai clasei;
Sunt apelate prin numele clasei;
Nu pot avea referința this.
16
![Page 17: Curs 3 PPOO - cristianciurea · 2019. 10. 11. · Curs 3 PPOO Conf. univ. dr. Cristian CIUREA Departamentul de Informatică și Cibernetică Economică cristian.ciurea@ie.ase.ro 1](https://reader036.vdocuments.site/reader036/viewer/2022062403/60b054b20e653b7f12533ef8/html5/thumbnails/17.jpg)
Clase
Funcții membre:
Constructori (se poate implementa inclusiv constructor de
copiere);
Nu există destructor (doar funcțai finalize());
Funcții de acces (get și set);
Nu se pot supraîncărca operatori ca în C++.
17
![Page 18: Curs 3 PPOO - cristianciurea · 2019. 10. 11. · Curs 3 PPOO Conf. univ. dr. Cristian CIUREA Departamentul de Informatică și Cibernetică Economică cristian.ciurea@ie.ase.ro 1](https://reader036.vdocuments.site/reader036/viewer/2022062403/60b054b20e653b7f12533ef8/html5/thumbnails/18.jpg)
Clase
18
![Page 19: Curs 3 PPOO - cristianciurea · 2019. 10. 11. · Curs 3 PPOO Conf. univ. dr. Cristian CIUREA Departamentul de Informatică și Cibernetică Economică cristian.ciurea@ie.ase.ro 1](https://reader036.vdocuments.site/reader036/viewer/2022062403/60b054b20e653b7f12533ef8/html5/thumbnails/19.jpg)
Clase
19
![Page 20: Curs 3 PPOO - cristianciurea · 2019. 10. 11. · Curs 3 PPOO Conf. univ. dr. Cristian CIUREA Departamentul de Informatică și Cibernetică Economică cristian.ciurea@ie.ase.ro 1](https://reader036.vdocuments.site/reader036/viewer/2022062403/60b054b20e653b7f12533ef8/html5/thumbnails/20.jpg)
Clase
Operatorul =
Copiază bit cu bit valoarea sursei în zona de memorie
destinație (cele două zone sunt identice ca tip și structură);
În cazul obiectelor unei clase, copiază valoarea referinței
obiectului sursă în referința obiectului destinație.
20
![Page 21: Curs 3 PPOO - cristianciurea · 2019. 10. 11. · Curs 3 PPOO Conf. univ. dr. Cristian CIUREA Departamentul de Informatică și Cibernetică Economică cristian.ciurea@ie.ase.ro 1](https://reader036.vdocuments.site/reader036/viewer/2022062403/60b054b20e653b7f12533ef8/html5/thumbnails/21.jpg)
Clase
Proprietățile (getteri și setteri):
Oferă acces (citire/scriere) la atributele private ale clasei;
Presupun validarea datelor de intrare;
Sunt definite în zona publică a clasei;
Definite prin două metode prefixate cu get pentru citire și
set pentru scriere.
21
![Page 22: Curs 3 PPOO - cristianciurea · 2019. 10. 11. · Curs 3 PPOO Conf. univ. dr. Cristian CIUREA Departamentul de Informatică și Cibernetică Economică cristian.ciurea@ie.ase.ro 1](https://reader036.vdocuments.site/reader036/viewer/2022062403/60b054b20e653b7f12533ef8/html5/thumbnails/22.jpg)
Clase
22
![Page 23: Curs 3 PPOO - cristianciurea · 2019. 10. 11. · Curs 3 PPOO Conf. univ. dr. Cristian CIUREA Departamentul de Informatică și Cibernetică Economică cristian.ciurea@ie.ase.ro 1](https://reader036.vdocuments.site/reader036/viewer/2022062403/60b054b20e653b7f12533ef8/html5/thumbnails/23.jpg)
Shallow copy vs. Deep copy
Shallow copy:
Copiază valorile a două referințe între ele;
Realizat implicit prin operatorul egal “=“;
Deep copy:
Copiază valorile obiectelor (nu referințele);
Realizat prin metode speciale cum ar fi constructorul de
copiere, metoda clone().
23
![Page 24: Curs 3 PPOO - cristianciurea · 2019. 10. 11. · Curs 3 PPOO Conf. univ. dr. Cristian CIUREA Departamentul de Informatică și Cibernetică Economică cristian.ciurea@ie.ase.ro 1](https://reader036.vdocuments.site/reader036/viewer/2022062403/60b054b20e653b7f12533ef8/html5/thumbnails/24.jpg)
Shallow copy vs. Deep copy
24
![Page 25: Curs 3 PPOO - cristianciurea · 2019. 10. 11. · Curs 3 PPOO Conf. univ. dr. Cristian CIUREA Departamentul de Informatică și Cibernetică Economică cristian.ciurea@ie.ase.ro 1](https://reader036.vdocuments.site/reader036/viewer/2022062403/60b054b20e653b7f12533ef8/html5/thumbnails/25.jpg)
Moștenire (derivare)
Este implementată atunci când există o relație de tipul “is a”
între o subclasă și o clasă de bază;
Se poate moșteni o singură clasă de bază;
Apelul constructorului clasei de bază se face cu super.
25
![Page 26: Curs 3 PPOO - cristianciurea · 2019. 10. 11. · Curs 3 PPOO Conf. univ. dr. Cristian CIUREA Departamentul de Informatică și Cibernetică Economică cristian.ciurea@ie.ase.ro 1](https://reader036.vdocuments.site/reader036/viewer/2022062403/60b054b20e653b7f12533ef8/html5/thumbnails/26.jpg)
Moștenire (derivare)
26
![Page 27: Curs 3 PPOO - cristianciurea · 2019. 10. 11. · Curs 3 PPOO Conf. univ. dr. Cristian CIUREA Departamentul de Informatică și Cibernetică Economică cristian.ciurea@ie.ase.ro 1](https://reader036.vdocuments.site/reader036/viewer/2022062403/60b054b20e653b7f12533ef8/html5/thumbnails/27.jpg)
Moștenire (derivare)
27
![Page 28: Curs 3 PPOO - cristianciurea · 2019. 10. 11. · Curs 3 PPOO Conf. univ. dr. Cristian CIUREA Departamentul de Informatică și Cibernetică Economică cristian.ciurea@ie.ase.ro 1](https://reader036.vdocuments.site/reader036/viewer/2022062403/60b054b20e653b7f12533ef8/html5/thumbnails/28.jpg)
Moștenire (derivare)
28
![Page 29: Curs 3 PPOO - cristianciurea · 2019. 10. 11. · Curs 3 PPOO Conf. univ. dr. Cristian CIUREA Departamentul de Informatică și Cibernetică Economică cristian.ciurea@ie.ase.ro 1](https://reader036.vdocuments.site/reader036/viewer/2022062403/60b054b20e653b7f12533ef8/html5/thumbnails/29.jpg)
Polimorfism
29
![Page 30: Curs 3 PPOO - cristianciurea · 2019. 10. 11. · Curs 3 PPOO Conf. univ. dr. Cristian CIUREA Departamentul de Informatică și Cibernetică Economică cristian.ciurea@ie.ase.ro 1](https://reader036.vdocuments.site/reader036/viewer/2022062403/60b054b20e653b7f12533ef8/html5/thumbnails/30.jpg)
Clase abstracte
Metode virtuale pure (abstracte):
Funcții virtuale care nu au implementare în clasa părinte;
Clasa părinte trebuie să fie abstractă;
Clasa derivată trebuie să le implementeze dacă nu este
abstractă.
30
![Page 31: Curs 3 PPOO - cristianciurea · 2019. 10. 11. · Curs 3 PPOO Conf. univ. dr. Cristian CIUREA Departamentul de Informatică și Cibernetică Economică cristian.ciurea@ie.ase.ro 1](https://reader036.vdocuments.site/reader036/viewer/2022062403/60b054b20e653b7f12533ef8/html5/thumbnails/31.jpg)
Clase abstracte
31
![Page 32: Curs 3 PPOO - cristianciurea · 2019. 10. 11. · Curs 3 PPOO Conf. univ. dr. Cristian CIUREA Departamentul de Informatică și Cibernetică Economică cristian.ciurea@ie.ase.ro 1](https://reader036.vdocuments.site/reader036/viewer/2022062403/60b054b20e653b7f12533ef8/html5/thumbnails/32.jpg)
Clase abstracte
Clasele abstracte:
Conțin cel puțin o metodă abstractă (virtuală pură), dar
nu este obligatoriu;
Pot conține atribute și alte metode;
Sunt o interfață pentru alte clase care trebuie să
implementeze un set de metode comune.
32
![Page 33: Curs 3 PPOO - cristianciurea · 2019. 10. 11. · Curs 3 PPOO Conf. univ. dr. Cristian CIUREA Departamentul de Informatică și Cibernetică Economică cristian.ciurea@ie.ase.ro 1](https://reader036.vdocuments.site/reader036/viewer/2022062403/60b054b20e653b7f12533ef8/html5/thumbnails/33.jpg)
Clase abstracte
33
![Page 34: Curs 3 PPOO - cristianciurea · 2019. 10. 11. · Curs 3 PPOO Conf. univ. dr. Cristian CIUREA Departamentul de Informatică și Cibernetică Economică cristian.ciurea@ie.ase.ro 1](https://reader036.vdocuments.site/reader036/viewer/2022062403/60b054b20e653b7f12533ef8/html5/thumbnails/34.jpg)
Interfețe
Interfețele sunt clase abstracte care conțin doar funcții
abstracte;
Sunt o interfață pentru alte clase care trebuie să
implementeze un set de metode comune;
Sunt definite prin cuvântul cheie interface.
34
![Page 35: Curs 3 PPOO - cristianciurea · 2019. 10. 11. · Curs 3 PPOO Conf. univ. dr. Cristian CIUREA Departamentul de Informatică și Cibernetică Economică cristian.ciurea@ie.ase.ro 1](https://reader036.vdocuments.site/reader036/viewer/2022062403/60b054b20e653b7f12533ef8/html5/thumbnails/35.jpg)
Interfețe
35
![Page 36: Curs 3 PPOO - cristianciurea · 2019. 10. 11. · Curs 3 PPOO Conf. univ. dr. Cristian CIUREA Departamentul de Informatică și Cibernetică Economică cristian.ciurea@ie.ase.ro 1](https://reader036.vdocuments.site/reader036/viewer/2022062403/60b054b20e653b7f12533ef8/html5/thumbnails/36.jpg)
Interfețe
36
![Page 37: Curs 3 PPOO - cristianciurea · 2019. 10. 11. · Curs 3 PPOO Conf. univ. dr. Cristian CIUREA Departamentul de Informatică și Cibernetică Economică cristian.ciurea@ie.ase.ro 1](https://reader036.vdocuments.site/reader036/viewer/2022062403/60b054b20e653b7f12533ef8/html5/thumbnails/37.jpg)
Bibliografie
[1] Jonathan Knudsen, Patrick Niemeyer – Learning Java, 3rd
Edition, O’Reilly.
[2] http://www.itcsolutions.eu
[3] http://www.acs.ase.ro
[4] http://docs.oracle.com/javase/tutorial/ /index.html
37