Documente Academic
Documente Profesional
Documente Cultură
1
Cuprins
I. Notiuni de programare orientata obiect
II. Organizarea claselor in pachete. Clase
fundamentale
III. Mostenirea claselor
IV. Clase abstracte si interfete
V. Polimorfismul
VI. Lucrul cu fisiere
VII.Tratarea exceptiilor
VIII.Colectii de obiecte
IX. Interfete grafice folosind AWT. Applet-uri
X. Fire de executie
2
Introducere : Cuprins
1. Limbaje de programare orientate obiect
2. Obiecte si clase de obiecte
3. Reprezentarea claselor de obiecte
4. Incapsularea
5. Relatii intre obiecte
3
Introducere : Limbaje de programare
■ Hardware – echipamentele fizice necesare
calculatorului pentru a executa un set de
instructiuni
Procesorul
Memoria
Componente si subansamble electronice
■ Software – instructiunile care controleaza
partea hardware
Sisteme de operare – controleaza direct partea
hardware, ofera diverse servicii aplicatiilor
Aplicatii – editoare de text, browsere internet,
jocuri
4
Introducere : Limbaje de programare
■ Programele contin instructiuni detaliate pentru a
controla partea hardware
■ Programele sunt scrise intr-un limbaj de
programare
■ Exista o multime de limbaje de programare
■ Alegerea unui limbaj de programare depinde de
Cunostintele programatorului
Uneltele disponibile pentru acel limbaj
Caracteristicile hardware
Tipul de problema pe care dorim sa o rezolvam
■ Singurul limbaj inteles de calculator este cod
masina (secventa de 0 si 1)
5
Introducere : Limbaje de programare
Clasificarea limbajelor de programare
■ Limbaje de nivel scazut
Asamblare
■ Limbaje de nivel inalt
Limbaje imperative
➔
C, Pascal, FORTRAN, COBOL
Limbaje obientate obiect
➔
C++, Java, C#, Smalltalk
■ Limbaje de nivel foarte inalt
Limbaje functionale
➔
LISP
Limbaje declarative
➔
Prolog
6
Introducere : Limbaje de programare
■ Orice program trebuie “tradus” in cod masina
■ Asamblare – translatarea unui program din limbaj
de asamblare in cod masina
■ Compilare – translatarea unui program dintr-un
limbaj de nivel inalt in cod masina
■ Interpretare – translatarea unui program dintr-un
limbaj de nivel inalt in cod masina instructiune cu
instructiune, pe masura executiei
■ Linkeditare – legarea unui program cod masina
de alte programe pe care le foloseste
7
Introducere : Limbaje de programare
■ Alfabet – multimea tuturor simbolurilor folosite
intr-un limbaj
a, b, c, ..., 1, 2, 3, “, ;, .
■ Lexic – regulile de formare a cuvintelor unui limbaj
Cuvinte cheie – for, if, class
Identificatori – nume de variabile, functii, clase
■ Vocabular – multimea tuturor cuvintelor unui
limbaj
■ Sintaxa – regulile de formare a propozitiilor unui
limbaj
if (conditie) then instructiuni1 else instructiuni2;
■ Limbaj – multimea tuturor propozitiilor ce pot fi
formate
■ Semantica – semnificatia propozitiilor limbajului
8
Introducere : Limbaje de programare
Limbajele de programarea au fost puternic
influentate de partea hardware a calculatorului.
10
Introducere : Ce este Java?
■ Java este un limbaj de programare:
Orientat obiect
Portabil
Independent de arhitectura sistemului
Interpretat
Dinamic
Sigur
Robust
Performant
Distribuit
11
Introducere : Ce este Java?
■ Versiuni Java:
1.0, 1.1, 1.2, 1.3, 1.4, 1.4.2
Versiunile incepand de la 1.2 se mai
numesc Java 2
■ Distributii Java:
Java 2 Standard Edition (J2SE)
➔
Java 2 Source Development Kit (J2SDK)
➔
Java 2 Runtime Environment (J2RE)
Java 2 Enterprise Edition (J2EE)
Java 2 Micro Edition (J2ME)
12
Introducere: Cuprins
1. Limbaje de programare orientate obiect
2. Obiecte si clase de obiecte
3. Reprezentarea claselor de obiecte
4. Incapsularea
5. Relatii intre obiecte
13
Obiecte
(Def.) Obiect: orice entitate fizica sau abstracta care
are anumite trasaturi si asupra carora se pot
indrepta actiuni.
14
Obiecte
■ Pentru a descoperi continutul unui obiect
este util sa punem doua intrebari:
Ce stie obiectul (ce cunoaste) – descoperim
datele, atributele obiectului
Ce stie sa faca obiectul – descoperim
comportamentul, metodele obiectului
15
Clasele de obiecte
Obiectele pot fi grupate in clase.
16
Date
■ Localizarea datelor:
Stiva – aici se tin variabilele locale definite in interiorul
unei metode; stiva este rapida dar presupune
cunoasterea exacta la compilare a dimensiunii
memoriei alocate si a timpului de viata al datelor
Heap – aici se tin toate obiectele; nu este atat de
rapida ca stiva dar este mult mai flexibila
Zona statica – aici se tin toate datele care vor fi
comune tuturor obiectelor folosind cuvantul cheie
static; datele tinute aici vor avea o adresa fixa
cunoscuta de toate obiectele
Zona constantelor – aici se tin date care nu isi mai
pot schimba valoarea dupa initializare; se foloseste
cuvantul cheie final
17
Date
■ Date de obiect (date de instanta)
Sunt datele (atributele) normale
La crearea unui nou obiect, se aloca memorie pentru
toate atributele de obiect
Fiecare obiect are o copie a tuturor atributelor clasei
din care a fost creat
Datele de obiect apartin unui obiect si sunt tinute in
heap impreuna cu obiectele
Datele de obiect au aceasi durata de viata cu a
obiectelor de care apartin
Un obiect exista in memorie cata vreme exista cel
putin o referinta la el
Cand nu mai exista nici o referinta la un obiect, acel
obiect devine pregatit pentru stergere, dar nu va fi
sters imediat
18
Date
■ Datele de clasa (date statice)
Sunt atributele ce au cuvantul cheie static
Sunt date care apartin clasei nu obiectelor
Exista o singura copie a atributelor statice (de clasa)
care este folosita de toate obiectele create din acea
clasa
Daca un obiect modifica un atribut de clasa, toate
obiectele create din acea clasa vor vedea noua
valoare a atributului
Datele statice (de clasa) exista inainte de a fi creat
orice obiect, ele se creaza la incarcarea claselor (la
pornirea masinii virtuale Java)
Datele de clasa sunt tinute in zona statica de memorie
19
Date
■ Datele de metoda
Sunt variabile declarate in interiorul unor metoda
Sunt tinute pe stiva
Sunt sterse la iesirea din metoda sau din blocul cel
mai aproiat
Daca se creaza un obiect in interiorul unei metode,
obiectul este tinut in heap, dar referinta la obiect este o
variabila locala de metoda si este tinuta pe stiva, deci
va fi stearsa le terminarea metodei
■ Datele constante
Odata ce au fost initializate nu li se mai poate schimba
valoarea
Au cuvantul cheie “final” in declaratie
Sun tinute in zona constantelor
20
Metode
■ Metode constructor
Sunt metode speciale apelate atunci cand se creaza
un obiect
Metodele de tip constructor au exact acelasi nume cu
cel al clasei de obiecte si nu au tip de returnare (nici
macar void)
Orice clasa are cel putin un constructor
Daca nu declaram nici un constructor, compilatorul va
genera un constructor default (numit null constructor)
Daca declaram cel putin un constructor, compilatorul
nu va mai genera null constructor
Constructorii sunt folositi pentru initializarea datelor de
obiect
Pentru o clasa ce nu are nici un constructor public, nu
se pot crea obiecte din afara clasei
21
Metode
■ Metode getter
Sunt metode de tipul
public int getNota()
Unde nota este un atribut de tip intreg
In mod normal atributele sunt private, iar pentru
a avea acces in mod controlat la atributele unui
obiect se folosesc metode getter
In mod normal pentru toate atributele private
care dorim sa poate fi citite din afara obiectului,
cream metode getter
22
Metode
■ Metode setter
Sunt metode de tipul
public void setNota(int nota)
Unde nota este un atribut de tip intreg
In mod normal atributele sunt private, iar pentru
a modifica in mod controlat atributele unui
obiect se folosesc metode setter
In mod normal pentru toate atributele private
care dorim sa poate fi cscrise din afara
obiectului, cream metode setter
23
Metode
■ Metode generale
Sunt toate celelalte tipuri de metode
Orice metoda primeste unele argumente si
returneaza un rezultat
24
Introducere: Cuprins
1. Limbaje de programare orientate obiect
2. Obiecte si clase de obiecte
3. Reprezentarea claselor de obiecte
4. Incapsularea
5. Relatii intre obiecte
25
UML
In faza de proiectare a unei aplicatii
orientate obiecte, avem nevoie de niste
conventii pentru desenarea claselor.
UML – Unified Modeling Language: este
limbajul vizual folosit pentru modelarea
sistemelor informatice
Descrie sistemele sub forma unor diagrame.
Pentru programarea orientata obiect, cea mai
importanta diagrama este diagrama de
clase.
26
UML : Diagrama de clase
• O clasa este
reprezentata ca un
Animal
dreptunghi cu trei
nume : String;
zone care contin:
tip : String;
– Numele clasei
varsta : int;
– Atributele clase
getNume() : String;
– Metodele clasei
setNume(nume : String) : void;
getTip() : String;
27
Introducere: Cuprins
1. Limbaje de programare orientate obiect
2. Obiecte si clase de obiecte
3. Reprezentarea claselor de obiecte
4. Incapsularea
5. Relatii intre obiecte
28
Incapsularea
29
Incapsularea
■ InJava incapsularea se realizaza prin
urmatoarele cuvinte cheie care se pot aplica
atributelor sau metodelor:
public – in UML “+” : orice alt obiect are acces
private – in UML “-” : nici un alt obiect nu are
acces
protected – in UML “#” : doar obiectele derivate
au acces
“ “ (default, package) – in UML “ “ : doar
obiectele din acelasi pachet (director) au acces
30
Introducere: Cuprins
1. Limbaje de programare orientate obiect
2. Obiecte si clase de obiecte
3. Reprezentarea claselor de obiecte
4. Incapsularea
5. Relatii intre obiecte
31
Relatii intre obiecte
■ Relatia de dependenta:
Un obiect foloseste alt obiect (depinde de
alt obiect)
Este cea mai generala relatie intre obiecte
Celalalt obiect nu apare ca atribut al
primului ci e folosit doar in metode
Administrator Cusca
32
Relatii intre obiecte
■ Relatia de asociere:
Un obiect “stie despre” alt obiect
Nu exista relatie de incluziune intre
obiecte
Celalat obiect apare ca atribut al primului
obiect
Roluri si multiplicitate
Tara Presedinte
33
Relatii intre obiecte
■ Relatia de agregare:
Un obiect “contine” alt obiect
Al doilea obiect este un atribut al primului
obiect
Masina Motor
34
Relatii intre obiecte
■ Relatia de mostenire:
Un obiect “este” alt
Mamifere
obiect
Clasa de baza se mai
numeste clasa parinte
Clasa fiu mosteneste
Feline
atributele si metodele
clasei parinte
Clasa fiu poate adauga
atribute si metode noi
(extinde clasa de baza)
35