Sunteți pe pagina 1din 35

Java

Programarea in limbajul Java


2004
Lecturer: Gavrila Cristian

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.

Incepand cu limbajele de asamblare, apoi cu


FORTRAN, COBOL, ALGOL, C, etc, majoritatea
limbajelor de programare privesc programul ca o
insiruire de instructiuni, eventual grupate in functii
si biblioteci, fortand programatorul sa gandeasca in
termenii calculatorului.

Apare necesitatea unor limbaje de programare mai


generale, a caror model de rezolvare a
problemelor sa nu fie legat de partea hardware
(arhitectura von Neumann). 9
Introducere : Limbaje de programare
■ Programarea orientata obiect

Impartirea problemei in componente –
obiecte care indeplinesc anumite functii

Asamblarea aplicatiei din diferite
componente

Obiectele comunica prin trimiterea de
mesaje

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.

Orice obiect este definit prin doua lucruri:


- date, atribute
- comportament, metode

(Def.) Obiect: componenta a unui sistem software


care are o stare definita prin
atribute si un comportament definit prin metode.

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.

A recunoaste un obiect inseamna a-l clasifica (a


descoperi din ce clasa face parte).

(Def.) Clasa de obiecte: defineste structura


(arhitectura, planul) obiectelor ce pot fi create din
acea clasa.

Obiectele sunt instante ale unor clase.

Nu exista obiecte fara 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

■ Metodele sunt in mod normal metode de


instanta (apartin unor obiecte)
■ Daca apare cuvantul cheie “static” in
declaratia metodei, atunci metoda este de
clasa (poate fi apelata fara a avea creat un
obiect de acea clasa)

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

Incapsularea ne permite sa privim


obiectul ca pe o “cutie neagra”.

Prin incapsulare putem restrictiona sau


putem permite accesul altor obiecte
asupra atributelor sau metodelor unui
obiect.

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

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