Transcript Java

Java
Programarea in limbajul Java
2004
Lecturer: Gavrila Cristian
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
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
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
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)
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
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
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
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).
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
Introducere : Ce este Java?
■ Java
este un limbaj de programare:
Orientat obiect
Portabil
Independent de arhitectura sistemului
Interpretat
Dinamic
Sigur
Robust
Performant
Distribuit
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)
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
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.
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
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.
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
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
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
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
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
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
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
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)
■
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
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.
UML : Diagrama de clase
• O clasa este
reprezentata ca un
dreptunghi cu trei
zone care contin:
– Numele clasei
– Atributele clase
– Metodele clasei
Animal
nume : String;
tip : String;
varsta : int;
getNume() : String;
setNume(nume : String) : void;
getTip() : String;
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
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.
Incapsularea
■
In Java 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
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
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
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
Relatii intre obiecte
■ Relatia
de agregare:
Un obiect “contine” alt obiect
Al doilea obiect este un atribut al primului
obiect
Masina
Motor
Relatii intre obiecte
■ Relatia
de mostenire:
Un obiect “este” alt
obiect
Clasa de baza se mai
numeste clasa parinte
Clasa fiu mosteneste
atributele si metodele
clasei parinte
Clasa fiu poate adauga
atribute si metode noi
(extinde clasa de baza)
Mamifere
Feline