Sunteți pe pagina 1din 17

Limbaje de programare

Partea a II a

Asistent univ. dr. Sînziana RÎNDAȘU


Programarea orientată-obiect
- Dezvoltată în anii 1960
- Utilizare extensivă începând cu anii 1990
- Utilizată în cele mai populare limbaje de programare: Java , C ++ , C # , Python , R ,
PHP , Visual Basic.NET , JavaScript , Ruby , Perl , Object Pascal , Objective-C ,
Dart , Swift, Scala , Kotlin , Common Lisp , MATLAB și Smalltalk

2
Obiectul

 entitate abstractă sau care aparține lumii reale, cu identitate proprie, caracterizată
prin stare și comportament

 Identitate = atribut prin care obiectele se disting unele de altele; fiecare


obiect are un identificator intern
 Stare = set de valori care corespund tuturor atributelor unui obiect, la un
moment dat; fiecare obiect are un număr de atribute (proprietăți):
 Comportament = acțiunile pe care obiectul poate să le efectueze; pentru
fiecare obiect, comportamentul este exprimat printr-un set de operații:

3
Exemple de obiecte
ObjPet1 ObjPet2 ObjVet1
Specie: Felină Specie: Canidae Nume: Jan POL
Rasă: British Shorthair Rasă: German Shephard Telefon: 0770885566
Nume: Muffin Nume: Pepper Specialitate: Medicină generală
Dată naștere: 01/06/2016 Dată naștere: 01/12/2019 Dată naștere: 15/04/1985
Stare de spirit: Calm Metode Metode
Metode Latră() Consultă()
Toarce() Fuge()
Ataca()

4
Exemple de obiecte – schimbarea stărilor
ObjStudent1 Promoveaz ObjStudent1
ă An()
Nume: Popescu Sc Nume: Popescu
hi
m
Prenume: Alexandru bă Prenume: Alexandru
Sp
NumarMatricol:11582 e ci NumarMatricol:11582
a liz
Specialitate: Cardiologie ar Specialitate: Cardiologie
e(
An studiu: 2 ) An studiu: 3
Metode ObjStudent1 Metode
PromoveazaAn() Nume: Popescu PromoveazaAn()
SchimbSpecialitate() Prenume: Alexandru SchimbSpecialitate()
NumarMatricol:11582
Specialitate: Radiologie
An studiu: 2
Metode
5
PromoveazaAn()
SchimbSpecialitate()
Abstractizarea
 Abstractizarea este procesul prin care se identifică și se rețin numai caracteristicile
esențiale ale realității modelate. Cel mai des, abstractizarea este întâlnită atunci când
obiectele cu aceleași atribute şi același comportament sunt grupate în tipuri abstracte
numite clase
 Clasa reprezintă un tip de date obţinut prin abstractizarea unor obiecte similare.
 O clasă este schiţa (modelul) unui obiect.
 denumire;
 set de atribute (date);
 set de metode (operaţii).
Nume_clasa
Atribute
Metode
6
Modele de clase
ObjVet1
Nume: Jan POL
Veterinar Telefon: 0770885566
În contextul Specialitate: Medicină generală
Nume prezentat
Dată naștere: 15/04/1985
Telefon ObjVet1 și
Specialitate ObjVet2 sunt Metode
Data_nastere instanțe ale Consultă()
clasei Veterinar
Consulta()
ObjVet2
Nume: Michelle Oakley
Telefon: 0770885551
Specialitate: Medicină de urgență
Dată naștere: 26/09/1988
Metode 7

Consultă()
Clase (cont .)

Clasele trebuie să ofere un set minimal de metode, în conformitate cu teoria


programării pe obiecte:
1. Constructori – crearea și inițializarea obiectelor
2. Destructori – stergerea sau eliminarea obiectelor;
3. Modificatori – utilizate pentru modificarea stării obiectelor;
4. Selectori – redau starea obiectelor.

Limbaje de programare - Sinziana RINDASU 8


Clase abstracte
Abstractizarea poate fi aplicată și claselor, obtinând astfel clase abstracte.
Clasele abstracte nu pot fi instanțiate direct, ci doar intermediul claselor
derivate.
Clasele care au instanțieri directe se numesc clase instanțiabile sau concrete.

Contract
Abstractizare Document
Factură

Limbaje de programare - Sinziana RINDASU 9


Încapsularea

 Mecanism prin care atributele şi metodele sunt grupate la nivelul unei clase,
accesarea lor din exterior depinzând de nivelul de vizibilitate al acestora:
Public* – acces nelimitat
Private* – accesibile doar din interiorul clasei
Protected* – accesibile doar din clasele derivate, în contextul moștenirii

 Din exteriorul clasei de care aparțin, proprietățile obiectelor pot citite şi modificate în
anumite situații, gestionate prin intermediul unor metode publice (selectori & modificatori,
constructori & destructori) **

*cuvinte rezervate
** vom discuta despre aceste concepte la implementarea practică
10
Încapsularea

Veterinar Conturi_Bancare

Nume NrCont Public


Telefon Valuta
Specialitate Private DataDeschidere
Data_nastere Balanta Private

Consulta() Depuneri() Public


AflaSpecialitate() Retrageri()
AflaNume()
AflaTelefon() Public
AflaDataNastere()

11
Moștenirea
Procesul prin care atributele şi operațiile unei clase (clasă de bază, superclasă) sunt preluate
automat de o altă clasă (clasă derivată sau subclasă). Orice clasă derivată va fi de tipul (is a*)
clasei de bază. Prin moștenire se pot exprima relații deosebite între clase: clasificări, ierarhizări,
generalizări, specializări.

 Utilitate: reutilizarea codului (noi clase sunt create pe baza celor existente)
 Consecințe:
- Suprascrierea operațiilor – metodele definite de clasa de bază pot fi redefinite de clasele derivate
- Clasele abstracte – implică un arbore de moștenire în care o clasă abstractă, neinstanţiabilă,
furnizează semnăturile unor metode ce urmează a fi implementate de clase instanţabile, derivate din
aceasta

*cuvânt rezervat

12
Moștenirea
Angajați

Nume
Telefon
Data_nastere
Vârstă()

Personal_administrativ Veterinari

Departament Specialitate
NrLicenta

Consultații()

13
Polimorfismul
Capacitate a obiectelor de a reacționa diferit ca răspuns la același mesaj
recepționat
Tehnici de implementare :
Supraîncărcarea operaţiilor – aceeaşi operaţie este specificată în mai multe moduri
la nivelul aceleiaşi clase -> semnături + implementări diferite
Suprascrierea operaţiilor – operaţiile definite de o clasă de bază sunt suprascrise
de clasele derivate -> semnături identice, implementări diferite
Utilitate & consecinţă: flexibilitatea (ex: obiecte diferite procesează acelaşi mesaj
în mod diferit, în funcţie de tipul lor)

14
Polimorfismul
Angajați
1. În acest scenariu, pentru Nume
personalul administrativ se va Telefon
afișa data angajării, dar Data_nastere
pentru veterinari se va afișa
data la care s-a primit licența AflaDată()

suprascrie

Personal_administrativ Veterinari

Departament Specialitate
NrLicenta
DataLicenta
Consultă()
AflăData()
15
Persistența

 Durata de viață a unui obiect în raport cu aplicația ce l-a creat.


 Un obiect este considerat persistent dacă starea și comportamentul său sunt
conservate ître două execuții ale programului ce l-a generat/

16
Exerciții practice
1. Proiectați o clasă mijloace fixe – atributele for fi următoarele: denumire,
data achiziție, durată de amortizare. Metoda este de a returna numărul de
luni de amortizare rămase.
2. Considerăm că firma care are mijloacele fixe, are doar două categorii de
mijloace fixe – construcții și echipamente. Proiectați clasele necesare.
3. Proiectați clasele necesare pentru a reține datele unor angajați. Se vor reține
separat angajații care nu mai lucrează.
4. Administrațiile locale stochează date despre bunurile deținute de persoane.
Proiectați clasele necesare pentru a reține detalii despre terenuri, construcții
și automobile.
5. Proiectați un model care evidențiază polimorfismul
6. Proiectați un model care evidențiază încapsularea
7. Proiectați un model care evidențiază moștenirea

17

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