Вы находитесь на странице: 1из 126

1.

Fie urmtoarea clas Java:


class C
{
int a;
float x;
boolean b;
}

Stabilii care dintre urmtoarele instruciuni este corect:


a)
b)
c)
d)

C
C
C
C

ob
ob
ob
ob

=
=
=
=

new
new
new
new

C(1);
C(1,1.0);
C();
C(1,1.0,true);

2. Fie urmtorul program Java:


class C
{
public static int a=1;
}
public class test
{
public static void main(String[] args)
{
C ob=new C();
C.a++;
ob.a++;
System.out.println(C.a);
}
}

Dup executarea programului, va fi afiat valoarea:


a)
b)
c)
d)

3;
2;
1;
nicio valoare, deoarece programul este incorect sintactic i nu va putea fi executat.

3. Fie urmtorul program Java:


class C { public static int a=1; }
public class teste_grila
{
public static void main(String[] args)
{
C ob1=new C();
C ob2=new C();
ob1.a++;
System.out.println(ob2.a);
}
}

Dup executarea programului, va fi afiat valoarea:


a)
b)
c)
d)

0;
2;
1;
nicio valoare, deoarece programul este incorect sintactic i nu va putea fi executat.

4. Un program Test scris n limbajul Java poate fi compilat folosind comanda:


a)
b)
c)
d)

javac Test
java Test.java
javac Test.class
javac Test.java

5. Un program Test scris n limbajul Java i compilat, poate fi rulat folosind comanda:
a)
b)
c)
d)

javac Test.java
java Test
java Test.class
java Test.java

6. n Java o clas poate extinde:


a)
b)
c)
d)

cel mult o interfa


oricte clase
cel mult o clas
oricte interfee

7. n Java o interfa poate extinde:


a)
b)
c)
d)

cel mult o interfat


oricte interfee
cel mult o clas
oricte clase

8. n Java o clas poate implementa:


a)
b)
c)
d)

o clas
oricte clase
o interfa
oricte interfee

9. Fie urmtorul program Java:


class A
{
public A() { System.out.println("A"); }
}
class B extends A
{
public B() { System.out.println("B"); }

}
class C extends B
{
public C() { System.out.println("C"); }
}
public class test
{
public static void main(String[] args)
{
C ob=new C();
}
}

Dup executarea programului, se va afia:


a)
b)
c)
d)

ABC
A
CBA
C

10. Fie urmtorul program Java:


class A
{
public int x=1;
public A() { x++; }
}
class B extends A
{
public B() { x++; }
}
class C extends B
{
public int x=1;
public C() { x++; }
}
public class test
{
public static void main(String[] args)
{
B b=new B();
C c=new C();
System.out.println(b.x+" "+c.x);
}
}

Dup executarea programului, se va afia:


a)
b)
c)
d)

3
3
2
3

4
2
2
3

11. Fie urmtorul program Java:


class A
{
int x=0;
public A(int n) { x=n; }
}
class B extends A
{
int x=1;
public B(int n) { super(n); }
}
public class test
{
public static void main(String[] args)
{
A a=new A(5);
B b=new B(7);
System.out.println(a.x+" "+b.x);
}
}

Dup executarea programului, se va afia:


a)
b)
c)
d)

0
5
5
0

5
1
7
1

12. Fie urmtorul program Java:


interface Student { public void afisare(); }
class Student_1 implements Student
{
String nume;
int grupa;
public Student_1(String n, int g) { nume=n; grupa=g; }
public void afisare() { System.out.print(nume+" "+grupa+" "); }
}
class Student_2 extends Student_1 implements Student
{
String curs;
int nota;
public Student_2(String ns, int g, String c, int n)
{
super(ns,g);

curs=c;
nota=n;
}
public void afisare()
{
..................................
System.out.println(curs+" "+nota);
}
}
public class test
{
public static void main(String[] args)
{
Student_2 s=new Student_2("Popescu",314,"Java",10);
s.afisare();
}
}

Dup executarea programului, pentru a se afisa Popescu 314 Java 10, spaiile punctate
din metoda afisare a clasei Student_2 trebuie nlocuite cu:
a)
b)
c)
d)

afisare();
Student_1.afisare();
super.afisare();

nimic, deoarece se apeleaz automat metoda afisare a clasei Student_1.

13. Fie urmtorul program Java:


interface Student { public void afisare(); }
class Student_1 implements Student
{
String nume;
int grupa;
public Student_1(String n, int g) { nume=n; grupa=g; }
public void afisare() { System.out.print(nume+" "+grupa+" "); }
}
class Student_2 extends Student_1 implements Student
{
String curs;
int nota;
public Student_2(String ns, int g, String c, int n)
{
.......
curs=c;
nota=n;
}
public void afisare()
{
super.afisare();

System.out.println(curs+" "+nota);
}
}
public class test
{
public static void main(String[] args)
{
Student_2 s=new Student_2("Popescu",314,"Java",10);
s.afisare();
}
}

Dup executarea programului, pentru a se afia Popescu 314 Java 10, spaiile punctate
din constructorul Student_2 al clasei Student_2 trebuie:
a) s fie nlocuite cu instruciunea super(ns,g);
b) s fie nlocuite cu instruciunile nume=ns; grupa=g;
c) nu trebuie nlocuite cu nimic, deoarece se apeleaz automat constructorul Student_1 al
clasei Student_1;
d) nu pot fi nlocuite cu nimic, deoarece programul fiimd incorect pentru ca metoda
afisare a interfeei Student este implementat n dou clase diferite, Student_1 i
Student_2.

14. Fie urmtoarele declaraii n Java:


interface Patrat
{
public float aria();
public float perimetru();
}
class Patrat_1 implements Patrat
{
float L;
public Patrat_1(float x) { L = x; }
public float aria() { return L*L; }
}
class Patrat_2 extends Patrat_1 implements Patrat
{
public Patrat_2(float L) { this.L = L; }
public float perimetru() { return 4*L; }
}

Stabilii care dintre urmtoarele propoziii sunt adevrate:


a) definiia clasei Patrat_1 este incorect deoarece nu implementez metoda perimetru a
interfeei Patrat;
b) constructorul clasei Ptrat_2 este incorect deoarece nu are acces la pointerul this;
c) constructorul clasei Ptrat_2 este incorect deoarece nu are apeleaz constructorul
superclasei Patrat_1;
d) definiia clasei Patrat_2 este incorect deoarece nu implementez metoda aria a
interfeei Patrat.

15. Fie urmtorul program Java:


interface Patrat
{
float L = 0;
public float aria();
public float perimetru();
}
class Patrat_1 implements Patrat
{
float L = 5;
public Patrat_1(float x) { L = x; }
public float aria() { return L*L; }
public float perimetru() { return 4*L; }
}
public class teste_grila
{
public static void main(String[] args)
{
Patrat p = new Patrat_1(10);
System.out.println(p.aria() + p.perimetru());
}
}

Stabilii care dintre urmtoarele propoziii sunt adevrate:


a) programul este incorect deoarece n funcia main se instaniaz o interfa, ci nu o clas;
b) programul este corect i dup rulare va afia 140.0;
c) programul este incorect deoarece n clasa Patrat_1 se redefinete ca i data membru
constanta L din interfaa Patrat;
d) programul este corect i dup rulare va afia 100.0 40.0.
16. Fie urmtorul program Java:
interface Patrat
{
public float A();
public float P();
}
interface Dreptunghi
{
public float A();
public float P();
}
class Patrulater_1 implements Patrat,Dreptunghi
{
float L;
public Patrulater_1(float x) { L=x; }
public float A() { return L*L; }
public float P() { return 4*L; }

}
class Patrulater_2 implements Patrat, Dreptunghi
{
float L,l;
public Patrulater_2(float x, float y) { L=x; l=y; }
public float A() { return L*l; }
public float P() { return 2*(L+l); }
}
public class teste_grila
{
public static void main(String[] args)
{
Dreptunghi d = new Patrulater_1(10);
Patrat p = new Patrulater_2(10,20);
System.out.println(d.A()+" "+d.P()+" "+p.A()+" "+p.P());
}
}

Stabilii care dintre urmtoarele propoziii sunt adevrate:


a) programul este incorect deoarece apare un conflict de nume pentru ca n interfeele
Patrat i Dreptunghi sunt definite metode cu aceiasi signatura, iar clasele
Patrulater_1 i Patrulater_2 implementeaz fiecare ambele interfee;
b) programul este incorect deoarece n interfeele Patrat i Dreptunghi sunt definite
metodele A i P cu aceiasi signatura, iar clasele Patrulater_1 i Patrulater_2
implementeaz fiecare n mod diferit cele dou metode;
c) programul este corect i dup rulare va afia 100.0 40.0 200.0 60.0;
d) programul este incorect deoarece n funcia main i se atribuie instanei d a interfeei
Dreptunghi un obiect din clasa Patrulater_1 , iar instanei p a interfeei Patrat un
obiect de tip Patrulater_2 (care, de fapt, abstractizeaz noiunea de dreptunghi).
17. Considerm urmtorul program Java:
class C
{
int a,b;
public C(int x, int y) { a=x; b=y; f(); g(); }
void f()
{
while(a<b)
{
b=b-2*a;
a=a+b/10;
System.out.println(a+" "+b);
}
}
void g() { System.out.println(a+" "+b);

}
public class test
{
public static void main(String[] args)
{
C ob = new C(5,100);
}
}

Dup executarea programului, pe ecran se va afia:


a)
b)
c)
d)

20 -22
22 22
35 10
5 100

18. Considerm urmtorul program Java:


class C
{
int a,b;
public C(int x, int y) { a=x; b=y; }
void f()
{
if(a<b) { a++; b--; g(); }
}
void g()
{
if(b>=a) { a++; b--; f(); }
}
void afisare() { System.out.println(a+" "+b); }
}
public class teste_grila
{
public static void main(String[] args)
{
C ob = new C(2,10);
ob.f(); ob.g();
ob.afisare();
}
}

Dup executarea programului, pe ecran se va afia:


a)
b)
c)
d)

5
6
2
7

7
6
10
5

19. Considerm urmtorul program Java:


class C
{
static int x = 0;
static int f() { return (++x)*(x--); }
}
public class teste_grila
{
public static void main(String[] args)
{
System.out.println(C.f()+" "+C.f()+" "+C.f());
}
}

Dup executarea programului, pe ecran se va afia:


a)
b)
c)
d)

1
1
1
0

1
2
2
0

1
3
6
0

20. Considerm urmtorul program Java:


class C
{
static int x=0;
static void f()
{
x = (++x)*(x--);
System.out.print(x+" ");
}
}
public class teste_grila
{
public static void main(String[] args)
{
C.f();C.f();C.f();
}
}

Dup executarea programului, pe ecran se va afia:


a)
b)
c)
d)

0
1
1
2

0 0
4 25
-1 1
4 16

21. Un fir de execuie poate intra n starea "blocat" (blocked) astfel:


a)
b)
c)
d)

prin apelul metodei sleep();


automat de ctre sistemul de operare;
prin apelul metodei block();
prin apelul metodei wait().

22. Prin modalitatea sa de tratare a excepiilor, Java are urmtoarele avantaje fa de


mecanismul tradiional de tratare a erorilor:
a)
b)
c)
d)

exist o metod care se ocup de acest lucru;


separarea codului pentru tratarea unei erori de codul n care ea poate sa apar;
propagarea unei erori pna la un analizor de excepii corespunztor;
gruparea erorilor dupa tipul lor.

23. O subclas a unei clase abstracte poate fi instaniat numai dac:


a) se folosete cuvantul cheie abstract;
b) suprascrie fiecare metod declarat abstract n superclasa sa i furnizeaza implementri
pentru toate acestea;
c) se folosete motenirea multipl;
d) subclas abstract nu poate fi instaniat.
24. Care este rolul declaraiilor import?
a)
b)
c)
d)

Permite referirea claselor fr utilizarea de prefixe;


Permite importul imaginilor folosite;
Elimin necesitatea declarrii variabilelor;
Elimin apelurile directe ale funciilor fr clase.

25. Indicai pe care dintre sistemele de operare urmtoare pot fi rulate aplicaiile Java:
a)
b)
c)
d)

Windows
UNIX
Mac OS X
Linux

Programare orientata pe obiecte


ORGANIZARE

Introducere in Java

Tipuri de aplicatii
Java

Programare orientata pe obiecte

Structura unui fisier


sursa
Structura lexicala a
limbajului Java.
Tipuri de date
Controlul executiei

19 February 2011

Programare orientata pe obiecte


ORGANIZARE

Introducere in Java

Java este o tehnologie inovatoare lansata de compania Sun


Microsystems in 1995.

Introducere in Java

Tipuri de aplicatii
Java

Structura unui fisier


sursa

Structura lexicala a
limbajului Java.

Tipuri de date
Controlul executiei

Caracteristici principale:
limbaj compilat si interpretat
Programele Java sunt mai intai compilate in fisiere intermediare (byte
code) dupa care sunt interpretate in mediul de executie Java.
limbaj independent de platforma
Masina virtuala Java (JVM) este mediul de executie al limbajului
Java.
JVM este inglobata in platforma JDK (Java Develoment Kit)
Simplitate
Elimina suprancarcarea operatorilor, mostenirea multipla, renunta la
utilizarea variabilelor pointer;
Complet orientat obiect
Este modelat dupa C si C++.

19 February 2011

Programare orientata pe obiecte


ORGANIZARE
In tehnologia Java sunt cuprinse patru componente:

Introducere in Java
1. Masina virtuala, denumita JVM (Java Virtual Machine) care
interpreteaza fisierele cu extensia .class ce contine bytecode.

Tipuri de aplicatii
Java
Structura unui fisier
sursa
Structura lexicala a
limbajului Java.

2. Limbajul Java propriu-zis. Limbajul Java este orientat pe obiecte si


se aseamana din punct de vedere al sintaxei cu C++.
3. Un compilator care genereaza fisiere cu extensia .class.
Compilatorul Java traduce instructiunile scrise in limbajul Java (stocate
in fisiere cu extensia .java) in instructiuni generice bytecode(stocate in
fisiere cu extensia .class) care sunt intelese de masina virtuala.
4. Biblioteca de clase Java. Contine un set de componente utile care pot
fi reutilizate in diverse aplicatii informatice.

Tipuri de date
Controlul executiei

19 February 2011

Programare orientata pe obiecte


ORGANIZARE

Introducere in Java

Tipuri de aplicatii
Java
Structura unui fisier
sursa
Structura lexicala a
limbajului Java.
Tipuri de date
Controlul executiei

19 February 2011

Programare orientata pe obiecte


ORGANIZARE

Introducere in Java

Tipuri de aplicatii
Java
Structura unui fisier
sursa
Structura lexicala a
limbajului Java.
Tipuri de date

Tipuri de aplicatii Java

1). Aplicatii de sine statatoare (stand alone);


2). Aplicatii care se executa pe partea de client (appleturi);
3). Aplicatii care se executa pe partea de server (servleturi);
Aplicatii de sine statatoare:
- sunt programe care pot fi executate in afara contextului unui
browser Web.
- contine o clasa de baza declarata public iar denumirea acesteia
coincide cu numele fisierului;
- in cadrul clasei publice trebuie incapsulata functia principala
main () cu sintaxa :
public static void main (Strings args[])

Controlul executiei

19 February 2011

Programare orientata pe obiecte


ORGANIZARE

Introducere in Java

Tipuri de aplicatii
Java
Structura unui fisier
sursa
Structura lexicala a
limbajului Java.

Crearea oricarei aplicatii Java presupune efectuarea urmatorilor


pasi:
1. Scriererea codului sursa
- se pote utiliza orice editor obisnuit sau un mediu specializat
(NetBeans, Eclipse)

2. Salvarea fisierelor sursa


- se va face in fisiere care au obligatoriu extensia java. Este
recomandat ca fisierul care contine codul sursa al clasei primare sa
aiba acelasi nume cu cel al clasei.

Tipuri de date
Controlul executiei

19 February 2011

Programare orientata pe obiecte


ORGANIZARE

Introducere in Java

Tipuri de aplicatii
Java
Structura unui fisier
sursa
Structura lexicala a
limbajului Java.
Tipuri de date

3. Compilarea aplicatiei
- pentru compilare se utilizeaza compilatorul javac din distributia JDK.
Apelul compilatorului se face pentru fisierul ce contine clasa principala
a aplicatiei sau pentru orice fisier cu extensia java prin comanda:
javac nume.java
In cazul in care compilarea a reusit va fi generat fisierul nume.class.
4. Rularea aplicatiei
- se realizeaza cu interpretorul java, apelat pentru unitatea de compilare
corespunzatoare clasei principale cu comanda java nume
Rularea unei aplicatii care nu foloseste interfata grafica, se va face intr-o
fereastra sistem.

Controlul executiei

19 February 2011

Programare orientata pe obiecte


ORGANIZARE

Structura fisierelor sursa


- toate fisierele sursa trebuie sa se termine cu extensia .java;

Introducere in Java

Tipuri de aplicatii
Java
Structura unui fisier
sursa
Structura lexicala a
limbajului Java.
Tipuri de date

- un fisier sursa trebuie sa contina cel putin o definitie a unei


clase de baza publice .
- un fisier sursa poate contine un numar nelimitat de definitii de
clase;
Exista trei elemente care pot sa apara in fisierul sursa:
- declaratii de pachete;
- instructiuni de includere clase;
- definitii de clase.

Controlul executiei

19 February 2011

Programare orientata pe obiecte


ORGANIZARE

Introducere in Java

Tipuri de aplicatii
Java
Structura unui fisier
sursa
Structura lexicala a
limbajului Java.

Un pachet este o multime de clase pastrate in aceelasi


director.
Exista mai multe pachete de baza cum ar fi : java.io,
java.lang, java.applet, java.awt ;
Declararea unui pachet : package <nume_pachet>
Se poate importa fie un pachet fie doar o clasa dintr-un pachet
existent asfel:
import nume_pachet.*;
import nume_pachet.nume_clasa;

Tipuri de date
Controlul executiei

19 February 2011

Programare orientata pe obiecte


ORGANIZARE

Introducere in Java

Tipuri de aplicatii
Java
Structura unui fisier
sursa
Structura lexicala a
limbajului Java.

Structura lexicala a limbajului Java

Atomi lexicali : set de caractere, literali, separatori, operatori,


cuvinte rezervate.
Setul de caractere
- limajul Java utilizeaza setul de caractere Unicode care
foloseste pentru reperezentarea caracterelor 2 octeti (65536 de
semne);
- setul de caractere Unicode este divizat in subintervale numite
blocuri : Basi Latin, Greek, Ghotic etc. )
Literali
- sunt reprezentarea codului sursa a unui tip primitiv, String sau
nul.

Tipuri de date
Controlul executiei

19 February 2011

Programare orientata pe obiecte


ORGANIZARE

Introducere in Java

Tipuri de aplicatii
Java

Literari Intregi
Sunt acceptate 3 baze de numeratie : baza 10, 16, 8 si pot fi de doua
tipuri:
normali - se reprezinta pe 4 octeti (32 biti)
lungi - se reprezinta pe 8 octeti (64 biti)

Structura unui fisier


sursa
Structura lexicala a
limbajului Java.
Tipuri de date

Literari Flotanti : reprezentare pe 32 de biti sau pe 64 de biti (pentru tipul


double)
Literari Logici : sunt reprezentati prin valorile true , false.
Literari Caracter : reprezentarea se face fie folosind o litera, fie o secventa
escape scrisa ntre apostrofuri ( \n, \t, \b etc.)

Controlul executiei

19 February 2011

Programare orientata pe obiecte


ORGANIZARE
2. Operatori
Introducere in Java

atribuirea =

Tipuri de aplicatii
Java

operatori matematici: +, -, *, /, %, ++, -- .


operatori logici: &&(and), ||(or), !(not)

Structura unui fisier


sursa
operatori relationali: <, <=, >, <=, ==, !=
Structura lexicala a
limbajului Java.
Tipuri de date
Controlul executiei

operatori pe biti: &(and), |(or), ^ (xor), ~ (not)


operatori de translatie: <<, >>, >>> (shift la dreapta fara semn)
operatorul + pentru concatenarea sirurilor:
sir 1 +sir2

19 February 2011

Programare orientata pe obiecte


ORGANIZARE

Tipuri de date si variabile


1. Tipuri de date

Introducere in Java

Tipuri de aplicatii
Java
Structura unui fisier
sursa
Structura lexicala a
limbajului Java.
Tipuri de date
Controlul executiei

In Java tipurile de date se impart in doua categorii: tipuri


primitive si tipuri referinta.
Tipuri primitive
aritmetice
intregi: byte (1 octet), short (2), int (4), long (8)
reale: float (4 octeti), double (8)
caracter: char (2 octeti)
logic: boolean (true si false)
Tipuri de referinta
vectorii;
clasele;
interfetele;
Valoarea unei variabile de acest tip este o referinta (adresa de
memorie) .
19 February 2011

Programare orientata pe obiecte


ORGANIZARE

Introducere in Java

Variabile
Variabilele pot fi de tip primitiv sau referinte la obiecte (tip
referinta).

Tipuri de aplicatii
Java

Declararea variabilelor: Tip

Structura unui fisier


sursa

numeVariabila;

Initializarea variabilelor: Tip numeVariabila = valoare;


Declararea constantelor: final Tip numeVariabila;

Structura lexicala a
limbajului Java.
Tipuri de date
Controlul executiei

19 February 2011

Programare orientata pe obiecte


ORGANIZARE

Introducere in Java

Tipuri de aplicatii
Java
Structura unui fisier
sursa
Structura lexicala a
limbajului Java.

In functie de locul in care sunt declarate, variabilele se


impart in urmatoatele categorii:
a.Variabile membre, declarate in interiorul unei clase,
b.Parametri metodelor, vizibili doar in metoda
respectiva.
c.Variabile locale, declarate intr-o metoda, vizibile doar
in metoda respectiva.
d.Variabile locale, declarate intr-un bloc de cod, vizibile
doar in blocul respectiv.

Tipuri de date
Controlul executiei

19 February 2011

Programare orientata pe obiecte


ORGANIZARE

Introducere in Java

Tipuri de aplicatii
Java
Structura unui fisier
sursa

Controlul executiei
Instructiuni de decizie;
Instructiuni de salt;
Instructiuni pentru tratarea exceptiilor: try-catch-finally,
throw
Alte instructiuni: break, continue, return, label.
1.

Instructiuni de decizie
a). if-else

Structura lexicala a
limbajului Java.
Tipuri de date
Controlul executiei

19 February 2011

Programare orientata pe obiecte


ORGANIZARE

Introducere in Java

Tipuri de aplicatii
Java
Structura unui fisier
sursa
Structura lexicala a
limbajului Java.
Tipuri de date

b). switch-case
switch (variabila) {
case valoare1:break;
case valoare2:...break;

default:...
}
Variabilele care pot fi testate folosind instructiunea
switch nu pot fi decat de tipuri primitive.
2. Instructiuni de salt
- for , while, do- while

Controlul executiei

19 February 2011

Programare orientata pe obiecte


ORGANIZARE

Definirea claselor

Programare orientata pe obiecte

Ciclul de viata al
unui obiect

Domeniul de
vizibilitate al
membrilor unei clase

4 March 2011

Programare orientata pe obiecte


ORGANIZARE

Definirea claselor

in Java este obligatorie definirea a cel putin unei clase (clasa de


baza);

nu este obligatorie crearea unei instante a clasei de baza, caz in


care se vor utiliza date si metode statice.

Definirea claselor

Ciclul de viata al
unui obiect

Domeniul de
vizibilitate al
membrilor unei clase

Sintaxa unei clase:


[modificator] class NumeClasa
{// Corpul clasei}

4 March 2011

Programare orientata pe obiecte


ORGANIZARE

Definirea claselor

Ciclul de viata al
unui obiect

Modificatorii pot fi:


- public : poate fi folosita din orice alta clasa, indiferent de
pachetul in care se gaseste.
- abstract : este incomplet definita ; nu poate fi instantiata, fiind
folosita doar pentru a crea un model comun pentru o serie de
subclase.
- final : nu se mai pot defini subclase.

Domeniul de
vizibilitate al
membrilor unei clase

Obs : daca modificatorul lipseste, clasa este implicita si poate fi


folosita doar de clasele din aflate in accelasi pachet.

4 March 2011

Programare orientata pe obiecte


ORGANIZARE

Definirea claselor

Corpul unei clase

Declararea si, eventual, initializarea variabilelor de


instanta si de clasa (variabile membre).
Declararea si implementarea constructorilor;

Ciclul de viata al
unui obiect

Domeniul de
vizibilitate al
membrilor unei clase

Declararea si implementarea metodelor de instanta si de


clasa (metode membre).
Declararea unor clase imbricate (interne).
Observatie : implementarea metodei unei clase trebuie sa
se faca obligatoriu in corpul clasei.

4 March 2011

Programare orientata pe obiecte


ORGANIZARE

Definirea claselor

Ciclul de viata al
unui obiect

Domeniul de
vizibilitate al
membrilor unei clase

Declararea datelor membre

Variabilele membre ale unei clase se declara de obicei inaintea


metodelor.
O variabila se declara astfel:
[modificatori] Tip numeVariabila [ = valoareInitiala ];
unde un modificator poate fi :
un modificator de acces : public, protected, private
unul din cuvintele rezervate: static, final;
Static : variabila este de clasa si nu de instanta;
static tip variabilaClasa;
Final : indica faptul ca valoarea variabilei nu mai poate fi
schimbata (declararea constantelor ).
final double PI = 3.14 ;

4 March 2011

Programare orientata pe obiecte


ORGANIZARE

Definirea claselor

Ciclul de viata al
unui obiect

Constructorii unei clase

- sunt metode speciale care au aceelasi nume cu cel clasei, nu


returneza nici o valoare si sunt folosite pentru initializarea
obiectelor clasei;
- o clasa poate avea mai multi constructori care trebuie sa
difere prin lista argumentelor;
- daca in clasa nu se declara nici un constructor, sistemul ii
creaza automat un constructor implicit.

Domeniul de
vizibilitate al
membrilor unei clase

Tipuri de constructori:
- fara argumente;
- cu argumente;

4 March 2011

Programare orientata pe obiecte


ORGANIZARE

Declararea metodelor

Definirea claselor

- Metodele sunt responsabile cu descrierea comportamentului


unui obiect.
- Metodele se pot gasi doar in cadrul claselor.

Ciclul de viata al
unui obiect

O metoda se declara astfel:


[modificatori] TipReturnat numeMetoda ( [argumente] )
{// Corpul metodei}

Domeniul de
vizibilitate al
membrilor unei clase

unde un modificator poate fi :


un specificator de acces : public, protected, private .
unul din cuvintele rezervate: static, abstract, final.

4 March 2011

Programare orientata pe obiecte


ORGANIZARE
static : metoda este de clasa si nu de instanta;
Definirea claselor

Ciclul de viata al
unui obiect

Domeniul de
vizibilitate al
membrilor unei clase

abstract : metoda care nu are implementare si trebuie


obligatoriu sa faca parte dintr-o clasa abstracta;
final : metoda nu mai poate fi supradefinita in subclasele clasei
in care a fost definita.
In limbajul Java argumentele sunt transmise doar prin valoare
- daca argumentul are tip primitiv de date, metoda nu ii poate
schimba valoare decat local;
- daca argumentul este de tip referinta, metoda nu poate
modifica valoarea referintei obiectului .

4 March 2011

Programare orientata pe obiecte


ORGANIZARE

Definirea claselor

Ciclul de viata al
unui obiect

Domeniul de
vizibilitate al
membrilor unei clase

Ciclul de viata al unui obiect


1. Crearea obiectelor
Crearea obiectelor se realizeaza prin instantierea unei clase si
implica urmatoarele lucruri:
Declararea
Presupune specificarea tipului acelui obiect, cu alte cuvinte
specificarea clasei acestuia
NumeClasa numeObiect;
Instantierea
Se realizeaza prin intermediul operatorului new si are ca efect
crearea efectiva a obiectului cu alocarea spatiului de memorie
corespunzator.
numeObiect = new NumeClasa();

4 March 2011

Programare orientata pe obiecte


ORGANIZARE

Definirea claselor

Ciclul de viata al
unui obiect

Domeniul de
vizibilitate al
membrilor unei clase

2. Folosirea obiectelor
Obiectul creat poate fi folosit in urmatoarele sensuri: aflarea
unor informatii despre obiect, schimbarea starii sale sau
executarea unor actiuni.
obiect.NumeVariabila sau obiect.NumeMetoda
Observatie : programare orientata pe obiecte descurajeaza
folosirea directa a variabilelor unui obiect , in schimb, pentru
fiecare variabila se pot definii metode care sa permita
schimbarea/aflarea valorilor (set_variabila si get_variabila).
obiect. x=3; // setare inconstienta
obiect.set_x =3; //metode setter

4 March 2011

Programare orientata pe obiecte


ORGANIZARE

Definirea claselor

Ciclul de viata al
unui obiect

3. Distrugerea obiectelor
- in limajul Java programele nu mai au responsabilitatea
distrugerii obiectelor.
- in momentul rularii unui program , simultan cu interpretatorul
Java , ruleaza un proces care se ocupa cu distrugerea obiectelor
numit garbage collector (dispus pe platforma de lucru Java ).
- un obiect este eliminat din memorie atunci cand nu mai exista
nici o referinta la acesta.

Domeniul de
vizibilitate al
membrilor unei clase

4 March 2011

Programare orientata pe obiecte


ORGANIZARE

Definirea claselor

Ciclul de viata al
unui obiect

Domeniul de
vizibilitate al
membrilor unei clase

Domeniul de vizibilitate al variabilelor si metodelor membre


Exista patru niveluri de acces : public, pretected, implicit si
private.
O variabila/metoda membra de clasa se poate accesa doar
daca tipul de clasa este accesibil.
a). daca membrul este declarat public se permite accesul de
oriunde;
b). daca membrul este declrat protected atunci accesul este
permis doar daca:
- accesul este cerut din pachetul clasei in care este
declarat;
- accesul apare dintr-o subclasa a clasei.
c). daca membrul este declarat private atunci accesul este permis
doar in cadrul clasei;
d). daca membrul este implicit accesul este permis doar din
pachetul in care este declarat tipul.

4 March 2011

Programare orientata pe obiecte


ORGANIZARE

Definirea claselor

Ciclul de viata al
unui obiect

Domeniul de
vizibilitate al
membrilor unei clase

4 March 2011

Programare orientata pe obiecte


ORGANIZARE

Extinderea claselor
Polimorfism

Programare orientata pe obiecte

Modificatori de acees

Variabile si metode
de instanta si de
clasa

4 March 2011

Programare orientata pe obiecte


ORGANIZARE

Extinderea claselor
- Java permite doar mostenirea simpla, ceea ce ineamna ca o
clasa poate avea un singur parinte (superclasa).

Extinderea claselor
- o clasa poate avea un numar nelimitat de subclase;
Polimorfism

Modificatori de acees

Variabile si metode
de instanta si de
clasa

- mumtimea claselor definite in Java poate fi vazuta ca un


arbore;
- radacina arborelui este clasa Object din pachetul java.lang
Sintaxa extinderii:
class clasa1 extends clasa2,
unde clasa1 este subclasa si clasa2 este superclasa.

4 March 2011

Programare orientata pe obiecte


ORGANIZARE

- relatia de derivare a claselor este tranzitiva.


Extinderea claselor
Polimorfism

Modificatori de acees

class C1{int x;}


class C2 extends C1{int y;}
C1 este clasa derivata din clasa Object si este supercalasa pentru
clasa C2.
Clasa C2 este subclasa directa a clasei C1 si subclasa indirecta a
clasei Object.

Variabile si metode
de instanta si de
clasa

4 March 2011

Programare orientata pe obiecte


ORGANIZARE

Extinderea claselor

Clasa Object
- in limbajul Java, clasa Object este superclasa pentru toate
clasele.
Clasa Object defineste si implementeaza comportamentul
comun al tuturor celorlalte clase Java prin metode specifice:

Polimorfism

Modificatori de acees

returnarea clasei din care face parte un obiectul curent


getclass( )
reprezentarea obiectiului curent intr-un String.
toString( )

Variabile si metode
de instanta si de
clasa

4 March 2011

Programare orientata pe obiecte


ORGANIZARE

Extinderea claselor
Polimorfism

Modificatori de acees

Constructorii subclaselor

Instantierea unui obiect din clasa extinsa implica instantierea


unui obiect din clasa parinte.
Fiecare constructor al subuclasei trebuie sa aiba un constructor
cu aceeasi signatura in parinte sau sa apeleze explicit un
constructor al clasei extinse .
Apelul explicit al unui constructor din superclasa se realizeaza
cu expresia:
super([argumente])

Variabile si metode
de instanta si de
clasa

4 March 2011

Programare orientata pe obiecte


ORGANIZARE

Polimorfism

Extinderea claselor
Polimorfism

Modificatori de acees

Variabile si metode
de instanta si de
clasa

supraincarcarea (overloading) : in cadrul unei clase pot exista


metode cu acelasi nume cu conditia ca signaturile lor sa fie
diferite.
supradefinirea (overriding): o subclasa poate rescrie o metoda a
clasei parinte prin implementarea unei metode cu acelasi nume
si aceeasi signatura ca ale superclasei.
Observatii:
- o metoda supradefinita poate sa ignore codul din superclasa
sau poate sa il extinda prin expresia super.
- o metoda nu poate supradefini o metoda declarata final in clasa
parinte.
- in Java nu este posibila supraincarcarea operatorilor.

4 March 2011

Programare orientata pe obiecte


ORGANIZARE

Extinderea claselor

Mofificatorii de acees

- o subclasa mosteneste de la parintele sau toate variabilele si


metodele care nu sunt private.

Polimorfism

Modificatori de acees

Variabile si metode
de instanta si de
clasa

4 March 2011

Programare orientata pe obiecte


ORGANIZARE

Extinderea claselor

Variabile de instanta si de clasa

O clasa Java poate contine doua tipuri de variabile si metode :


de instanta: specifice fiecare instante create dintr-o clasa .
de clasa: declarate cu modificatorul static, specifice clasei.

Polimorfism
class Exemplu {
Modificatori de acees

Variabile si metode
de instanta si de
clasa

int x ; //variabila de instanta};

- la fiecare creare a unui obiect al clasei Exemplu sistemul aloca


o zona de memorie separata pentru memorarea valorii lui x.
Exemplu o1 = new Exemplu();
o1.x=100;
Exemplu o2 = new Exemplu();
o2.x = 200;
System.out.println(o1.x); // Afiseaza 100
System.out.println(o2.x); // Afiseaza 200 = 100;
4 March 2011

Programare orientata pe obiecte


ORGANIZARE

Extinderea claselor
Polimorfism

Modificatori de acees

Variabile si metode
de instanta si de
clasa

- pentru variabilele de clasa (statice) sistemul aloca o singura


zona de memorie la care au acces toate instantele clasei
respective;
- daca un obiect modifica valoarea unei variabile statice ea se va
modifica si pentru toate celelalte obiecte;
- variabilele statice pot fi referite si sub forma:
NumeClasa.numeVariabilaStatica
class Exemplu {
static long n =2; // Variabila de clasa}
Exemplu o1 = new Exemplu();
Exemplu o2 = new Exemplu();
o1.n = 100;
System.out.println(o2.n); // Afiseaza 100

4 March 2011

Programare orientata pe obiecte


ORGANIZARE

Metode de instanta si de clasa


- metodele declarate fara modificatorul static sunt metode de
instanta iar cele declarate cu static sunt metode de clasa.

Extinderea claselor
Polimorfism

Diferenta intre cele doua tipuri de metode este urmatoarea:


metodele de instanta opereaza atat pe variabilele de instanta cat
si pe cele statice ale clasei;

Modificatori de acees

metodele de clasa opereaza doar pe variabilele statice ale


clasei.

Variabile si metode
de instanta si de
clasa

4 March 2011

Programare orientata pe obiecte


ORGANIZARE

Clase abstracte

Programare orientata pe obiecte

Metode abstracte

Interfete Java

11 March 2011

Programare orientata pe obiecte


ORGANIZARE

Clase abstracte

Clase si metode abstracte

- este utilizata pentru a definii un concept abstract folosit la


dezvoltarea ulterioara a altor clase ce pot fi instantiate;
- o clasa abstracta nu poate fi instantiata;

Metode abstracte

Interfete Java

- o clasa abstracta pune la dispozitia subclaselor sale un model


complet pe care trebuie sa il implementeze.
Declararea unui clase abstracte:
[public] abstract class ClasaAbstracta
{// Declaratii uzuale
// Declaratii de metode abstracte
}

11 March 2011

Programare orientata pe obiecte


ORGANIZARE

Clase abstracte

Metode abstracte

- poate avea specificatorul public caz in care poate fi extinsa de


orice clasa din afara pachetului;
- poate contine date membre la care se adauga declaratii de
metode neimplementate.
- clasa care extinde o clasa abstracta trebuie sa implementeze
metodele neimplementate din clasa abstracta.

Interfete Java
- daca o clasa nu implementeaza metodele neimplementate este
deasemenea abstracta si nu poate fi instantiata.

11 March 2011

Programare orientata pe obiecte


ORGANIZARE

Metode abstracte
Metodele fara nici o implementare se numesc metode abstracte
si pot fi incluse doar in clase abstracte.

Clase abstracte
In fata unei metode abstracte trebuie sa apara obligatoriu
cuvantul cheie abstract, altfel va fi furnizata o eroare de
compilare.
Metode abstracte

Interfete Java

abstract class ClasaAbstracta {


abstract void metodaAbstracta(); // Corect
void metoda(); // Eroare}

11 March 2011

Programare orientata pe obiecte


ORGANIZARE

Clase abstracte

Metode abstracte

Interfete Java

OBSERVATII

O clasa abstracta poate sa nu aiba nici o metoda abstracta.


Orice clasa care are o metoda abstracta trebuie declarata ca
fiind abstracta.
Platforma de lucru Java cuprinde numeroase exemple de ierarhii
care folosesc la nivelele superioare clase abstracte:
Number: superclasa abstracta a tipurilor referinta numerice;
Reader, Writer: superclasele abstracte ale fluxurilor de
intrare/iesire pe caractere;
InputStream, OutputStream: superclasele abstracte ale
fluxurilor deintrare/iesire pe octeti;
AbstractList, AbstractSet, AbstractMap: superclase
abstracte pentru structuri de date de tip colectie.

11 March 2011

Programare orientata pe obiecte


ORGANIZARE

Clase abstracte

Metode abstracte

Interfete Java

Interfete

Interfetele permit, alaturi de clase, definirea unor noi tipuri de


date.
O interfata Java este o colectie de metode fara implementare si
declaratii de constante.

O clasa care implementeaza o interfata trebuie obligatoriu sa


specifice implementari pentru toate metodele interfetei.

11 March 2011

Programare orientata pe obiecte


ORGANIZARE

Clase abstracte

Metode abstracte

Definirea unei interfete

Definirea unei interfete se face prin intermediul cuvantului


cheie interface:
[public] interface NumeInterfata
[extends SuperInterfata1, SuperInterfata2...]
{ Corpul interfetei:}
O interfata poate avea doar modificatorul public.

Interfete Java

O interfata poate extinde oricate interfete. Acestea se numesc


superinterfete si sunt separate prin virgula.

11 March 2011

Programare orientata pe obiecte


ORGANIZARE

Clase abstracte

Metode abstracte

Interfete Java

Corpul unei interfete poate contine:


constante: acestea pot fi sau nu declarate cu modificatorii
public, static si final care sunt impliciti;
-nici un alt modificator nu este permis in declaratia unei
variabile dintr-o interfata.
Constantele unei interfete trebuie obligatoriu initializate.
interface Exemplu {
int MAX = 100;
// Echivalent cu:
public static final int MAX = 100;
int MAX; // Incorect, lipseste initializarea
private int x = 1;// Incorect, modificator nepermis
}

11 March 2011

Programare orientata pe obiecte


ORGANIZARE

Clase abstracte

Metode abstracte

Interfete Java

metode fara implementare: acestea pot fi sau nu declarate cu


modificatorul public, care este implicit;
- nici un alt modificator nu este permis in declaratia unei metode
a unei interfete.
interface Exemplu {
void metoda();
// Echivalent cu:
public void metoda();
protected void metoda2(); // Incorect, modificator nepermis

11 March 2011

Programare orientata pe obiecte


ORGANIZARE

Implementarea unei interfete


Implementarea uneia sau mai multor interfete de catre o clasa se
face prin intermediul cuvantului cheie implements:

Clase abstracte

Metode abstracte

class NumeClasa implements NumeInterfata


sau
class NumeClasa implements Interfata1, Interfata2, ...
O clasa poate implementa mai multe interfete.

Interfete Java

Modificarea unei interfete implica modificarea tuturor claselor


care implementeaza acea interfata.

11 March 2011

Programare orientata pe obiecte


ORGANIZARE

Mostenire multipla prin interfete


- in limbajul Java nu este permisa mostenirea multipla a claselor;

Clase abstracte

Metode abstracte

Interfete Java

- o clasa poate avea oricate subclase dar numai o superclasa;


- o clasa poate extinte mai multe interfete.
class NumeClasa implements Interfata1, Interfata2, ...
Interface NumeInterfata extends Interfata1, Interfata2, ...
O interfata mosteneste atat constantele cat si declaratiile de
metode de la superinterfetele sale.
O clasa mosteneste doar constantele unei interfete si
responsabilitatea implementarii metodelor sale.

11 March 2011

Programare orientata pe obiecte


ORGANIZARE

Utilitatea interfetelor
Interfetele sunt utile pentru:

Clase abstracte

definirea unor similaritati intre clase independente fara a forta


artificial o legatura intre ele;

Metode abstracte

posibilitatea implementarii unor clase prin mai multe modalitati


si folosirea lor intr-o maniera unitara;
definirea unor grupuri de constante;

Interfete Java

11 March 2011

Programare orientata pe obiecte


ORGANIZARE

Clase abstracte

Metode abstracte

Interfete Java

Tablouri
- tabloul este un obiect creat dinamic care poate fi assignat
variabilelor de tip Object;
- toate elementele unui tablou au aceelasi tip;

Declararea vectorului:
Tip[] numeVector;
Tip numeVector[];
Exemple int[] intregi;
String adrese[];

11 March 2011

Programare orientata pe obiecte


ORGANIZARE

Clase abstracte

Metode abstracte

Interfete Java

Instantierea unui tablou


- Operatia de alocare a memoriei (instantierea vectorului) se
realizeaza intotdeauna prin intermediul operatorului new
numeVector = new Tip[nrElemente];
- in urma instantierii vor fi alocati:
nrElemente * dimensiune(Tip) octeti necesari memorarii
elementelor din vector;
v = new int[10];
//aloca spatiu pentru 10 intregi: 40 octeti
c = new char[10];
//aloca spatiu pentru 10 caractere: 20 octeti

11 March 2011

Programare orientata pe obiecte


ORGANIZARE

Tablouri

Programare orientata pe obiecte

Siruri de caractere

15 June 2011

Programare orientata pe obiecte


ORGANIZARE

Tablouri

Siruri de caractere

Tablouri

- tabloul este un obiect creat dinamic care poate fi assignat


variabilelor de tip Object;
- toate elementele unui tablou au aceelasi tip;
Declararea vectorului
Se realizeaza prin expresii de forma:
Tip[] numeVector;
Tip numeVector[];
Exemplu:
int[] intregi;
String adrese[];

15 June 2011

Programare orientata pe obiecte


ORGANIZARE

Tablouri

Siruri de caractere

- delararea unui tablou nu creaza obiectul tablou si nici nu aloca


spatiu de memorie pentru componente;
Instantierea unui tablou
- Operatia de alocare a memoriei (instantierea vectorului) se
realizeaza intotdeauna prin intermediul operatorului new
numeVector = new Tip[nrElemente];
- in urma instantierii vor fi alocati:
nrElemente * dimensiune(Tip) octeti necesari pentru
memorarea elementelor din vector;
v = new int[10];
//aloca spatiu pentru 10 intregi: 40 octeti
c = new char[10];
//aloca spatiu pentru 10 caractere: 20 octeti

15 June 2011

Programare orientata pe obiecte


ORGANIZARE

Tablouri

Siruri de caractere

Intializarea (optional)
- dupa declararea unui vector, acesta poate fi initializat cu valori
intiale, caz in care nu mai este instantiat (alocarea memoriei se
realizeaza automat).
String culori[] = {"Rosu", "Galben", "Verde"};
int []factorial = {1, 1, 2, 6, 24, 120};
Tabluri mutidimensionali
- tablourile multidimensionale sunt vectori de vectori;
Tip matrice[][] = new Tip[nrLinii][nrColoane];
- matrice[i] este linia i din matrice si reprezinta un vector cu
nrColoane elemente.

15 June 2011

Programare orientata pe obiecte


ORGANIZARE

Tablouri

Siruri de caractere

Operatii asupra unui tablou

- dimeniunea unui tablou se poate calcula cu ajutorul variabilei


length.
int []a = new int[5];
// a.length are valoarea 5
int m[][] = new int[5][10];
// m[0].length are valoarea 10
- copierea unui vector se poate realiza fie element cu element,
fie cu ajutorul metodei System.arraycopy
int a[] = {1, 2, 3, 4};
int b[] = new int[4];
for(int i=0; i<a.length; i++)
b[i] = a[i];
Echivalent cu : System.arraycopy(a, 0, b, 0, a.length);

15 June 2011

Programare orientata pe obiecte


ORGANIZARE

Tablouri

Siruri de caractere

Clasa java.util.Arrays ofera diverse metode foarte utile pentru


prelucrarea unui vector cum ar fi:
sort - sorteaza ascendent un vector, folosind un algoritm de tip
Quick-Sort performant, de complexitate O(n log(n)).
int v[]={3, 1, 4, 2};
java.util.Arrays.sort(v);
// Sorteaza vectorul v
// Acesta va deveni {1, 2, 3, 4}
binarySearch - cautarea binara a unei anumite valori intr-un
vector sortat;
equals - testarea egalitatii valorilor a doi vectori.

15 June 2011

Programare orientata pe obiecte


ORGANIZARE

Tablouri

Siruri de caractere

Siruri de caractere

In Java, un sir de caractere poate fi reprezentat astfel:


- printr-un vector format din elemente de tip char;
-un obiect de tip String;
-un obiect de tip StringBuffer
Exemple echivalente de declarare a unui sir:
String s = "abc";
String s = new String("abc");
char data[] = {a, b, c};

15 June 2011

Programare orientata pe obiecte


ORGANIZARE

Tablouri

Siruri de caractere

Observatii

String sir=Primul sir;


sir= Al doilea sir
- daca se atribuie unei variabile de tip String o alta valoare,
vechea referinta se pierde;
- daca un sir se intializeaza cu un literal String, atunci i se va
atribui adresa acestuia din memorie (tabela de literali literal
pool);
- operatorul == aplicat pentru doua String uri testeaza daca
acestea ponteaza catre aceeasi adresa de memorie;
- utilizarea operatorului new pentru un String conduce la crearea
unui spatiu de memorie ;
- se poate crea un tablou de String-uri :
String [ ] nume = new String [5];
nume[0] = Pop

15 June 2011

Programare orientata pe obiecte


ORGANIZARE

Tablouri

Siruri de caractere

Operatii asupra unui String

- Concatenarea sirurilor de caractere se face prin intermediul


operatorului +
String s1 = "abc" + "xyz";
String s2 = "123";
String s3 = s1 + s2;
Metode publice din clasa String :
- boolean equals(object obiect);
- string replace(char caractervechi, char caracternou) ;
- String toLowerCase();
- int length;
- String substring(int indexstart, int indexsfarsit)
- char charAt(int index)

15 June 2011

Programare orientata pe obiecte


ORGANIZARE

Tablouri

Clasa StringBuffer
- prelucreaza siruri de caractere de lungime variabila;
- o instanta a clasei StringBuffer reprezinta un String care
poate fi modificat dinamic;
- un obiect de tip StringBuffer contine un bloc de memorie
numit buffer care poate sa contina un sir, dar nu este obligatoriu
sa fie ocupat in totalitate;
- crearea unui obiect de tip StringBuffer se realizeaza apleland
unul din costructorii:

Siruri de caractere
StringBuffer( ); //un sir cu capacitatea de 16 caractere
StringBuffer(int capacitate);
StringBuffer(String sir)
Exemplu : StringBuffer a = new StringBuffer(Un sir de tip
buffer);

15 June 2011

Programare orientata pe obiecte


ORGANIZARE

Metode publice din clasa StrindBuffer


int capacty();

Tablouri

StringBuffer delete(int start, int end);


StringBuffer replace(int start, int end, String sir);
int length();

Siruri de caractere
String substring(int start);

15 June 2011

Programare orientata pe obiecte


ORGANIZARE

Tablouri

Conversie de date
- conversia unui tip de date byte, short, int, float, double, char,
boolean la un sir de caractere se realizeaza cu metoda statica
toString() .
- conversia unui sir de caractere String la un tip de data primitiva
se realizeaza cu metoda:

Siruri de caractere

tip.parseTip(String sir);
Exemplu: int.parseInt(sir);
double.parseDouble(sir).

15 June 2011

Programare orientata pe obiecte


ORGANIZARE

Exceptii si erori

Programare orientata pe obiecte

Tratarea exceptiilor

Ierarhia claselor ce
descriu exceptii

15 June 2011

Programare orientata pe obiecte


Erori si Exceptii
ORGANIZARE

Exceptii si erori

Erorile si exceptiile reprezinta situatii particulare si anormale


care pot sa apara in timpul executiei unei aplicatii Java de
intrare/iesire, imposibilitate de conversie de la un tip la altul).
9 Erorile sunt situatii grave care , daca apar, duc la intreruperea
executiei programului (VirtualMachineError).
9 Exceptiile sunt situatii care pot aparea mai frecvent si, de
regula, problemele aparute se pot remedia. De regula, aplicatiile
trateaza aceste situatii particulare.

Tratarea exceptiilor
Cand se produce o eroare in timpul executiei se creaza un obiect
de tip exceptie ce va contine:
Ierarhia claselor ce
descriu exceptii

- informatii despre exceptia respectiva;


- starea programului in momentul producerii acelei exceptii.

15 June 2011

Programare orientata pe obiecte


ORGANIZARE

Crearea unui obiect de tip exceptie se numeste aruncarea unei


exceptii (throwing an exception).
Exceptii si erori
Secventa de cod dintr-o metoda care trateaza o anumita exceptie
se numeste analizor de exceptie (exception handler).

Tratarea exceptiilor

Ierarhia claselor ce
descriu exceptii

Interceptarea si tratarea ei se numeste prinderea exceptiei


(catch the exception).
In Java tratarea erorilor nu mai este o optiune ci o
constrangere.

15 June 2011

Programare orientata pe obiecte


ORGANIZARE

Exceptii si erori

Tratarea exceptiilor

Ierarhia claselor ce
descriu exceptii

Prinderea si tratarea exceptiilor


Tratarea exceptiilor se realizeaza prin intermediul blocurilor de
instructiuni try, catch si finally.
O secventa de cod care trateaza anumite exceptii trebuie sa arate
astfel:
try {
// Instructiuni care pot genera exceptii }
catch (TipExceptie1 variabila) {
// Tratarea exceptiilor de tipul 1}
catch (TipExceptie2 variabila) {
// Tratarea exceptiilor de tipul 2}
...

finally {
// Cod care se executa indiferent daca apar sau nu
exceptii }

15 June 2011

Programare orientata pe obiecte


ORGANIZARE

Exceptii si erori

Tratarea exceptiilor

Ierarhia claselor ce
descriu exceptii

Aruncarea exceptiilor

- o metoda poate sa arunce exceptii catre alte metode;


- metodele apelante fie implementeaza tratarea lor , fie la randul
lor arunca mai departe exceptiile respective.
Aruncarea exceptiilor se realizeaza prin specificarea in
declaratia metodei a clauzei throws
[modificatori] TipReturnat metoda([argumente])
throws TipExceptie1, TipExceptie2, ...
{...}
O metoda care nu trateaza o anumita exceptie trebuie
obligatoriu sa o arunce.

15 June 2011

Programare orientata pe obiecte


ORGANIZARE

Avantajele tratarii exceptiilor

Exceptii si erori

Prin modalitatea sa de tratare a exceptiilor, Java are urmatoarele


avantaje fata de mecanismul traditional de tratare a erorilor:
9 Separarea codului pentru tratarea unei erori de codul in care ea
poate sa apara.
9 Propagarea unei erori pana la un analizor de exceptii
corespunzator.

Tratarea exceptiilor

Ierarhia claselor ce
descriu exceptii

9 Gruparea erorilor dupa tipul lor.


- in Java exista clase corespunzatoare tuturor exceptiilor care
pot aparea la executia unui program.
De exemplu, clasa IOException se ocupa cu exceptiile ce pot
aparea la operatii de intrare/iesire si diferentiaza la randul ei alte
tipuri de exceptii, cum ar fi FileNotFoundException,
EOFException, etc.

15 June 2011

Programare orientata pe obiecte


ORGANIZARE

Exceptii si erori

Tratarea exceptiilor

Ierarhia claselor ce
descriu exceptii

Ierarhia claselor ce descriu exceptii


superclasa
tuturor
exceptiilor
si
erorilor
este
java.lang.Throwable ( doar instantele acesteai pot aparea in
clauzele throw, catch etc. )
Clasa Throwable are patru constructori:
public Throwable(String message)
public Throwable(String message)
public Throwable(String message, Throwable cause)
public Throwable(Throwable cause).
message = un mesaj care descrie succcint problema survenita;
cause = situatia de exceptie

15 June 2011

Programare orientata pe obiecte


ORGANIZARE
Metode publice definite in clasa Throwable:
public getMessage() - afiseaza detaliul unei exceptii;
Exceptii si erori
public printStackTrace() - afiseaza informatii complete despre
exceptie si localizarea ei;
Tratarea exceptiilor

public toString() - metoda mostenita din clasa Object, care


furnizeaza reprezentarea sub forma de sir de caractere a
excepiei.

Ierarhia claselor ce
descriu exceptii

15 June 2011

Programare orientata pe obiecte


ORGANIZARE

Exceptii si erori

Clasa Throwable are doua subclase directe :


Error: cazuri speciale de exceptii generate de functionarea
anormala a echipamentului hard; un program Java nu trebuie sa
trateze aparitia acestor erori
Exception: sunt exceptiile standard (soft) care trebuie tratate de
catre programele Java.

Tratarea exceptiilor

Ierarhia claselor ce
descriu exceptii

15 June 2011

Programare orientata pe obiecte


ORGANIZARE

Exceptii la executie
Exceptiile care provin strict din vina programatorului si nu
generate de o anumita situatie externa, cum ar fi lipsa unui fisier.

Exceptii si erori

Tratarea exceptiilor

Ierarhia claselor ce
descriu exceptii

Aceste exceptii au o superclasa comuna RuntimeException si


in acesata categorie sunt incluse exceptiile provocate de:
operatii aritmetice ilegale (impartirea intregilor la zero);
ArithmeticException
accesarea membrilor unui obiect ce are valoarea null;
NullPointerException
accesarea eronata a elementelor unui vector.
ArrayIndexOutOfBoundsException

15 June 2011

Programare orientata pe obiecte


ORGANIZARE

Crearea propriilor exceptii


- exceptie proprie trebuie sa se incadreze in ierarhia exceptiilor
Java;

Exceptii si erori

Tratarea exceptiilor

public class ExceptieProprie extends Exception {


public ExceptieProprie(String mesaj) {
super(mesaj);
// Apeleaza constructorul superclasei Exception
}
}

Ierarhia claselor ce
descriu exceptii

15 June 2011

Programare orientata pe obiecte


ORGANIZARE

Intrari si Iesiri

Programare orientata pe obiecte

Fluxuri primitive

Fluxuri de procesare

Fluxuri de tip fisier

15 June 2011

Programare orientata pe obiecte


ORGANIZARE

Intrari si iesiri

Un flux este un canal de comunicatie serial unidirectional intre


doua procese pe 8 biti sau 16 biti.
Intrari si Iesiri
Indiferent de tipul informatiilor, citirea/scrierea de pe/catre un
mediu extern respecta urmatorul algoritm:
Fluxuri primitive

Fluxuri de procesare

Fluxuri de tip fisier

deschide canal comunicatie


while (mai sunt informatii) {
citeste/scrie informatie;}
inchide canal comunicatie;
Clasele si intefetele standard pentru lucrul cu fluxuri se gasesc in
pachetul java.io.

15 June 2011

Programare orientata pe obiecte


ORGANIZARE
Clasificarea fluxurilor

Intrari si Iesiri

Fluxuri primitive

Fluxuri de procesare

Fluxuri de tip fisier

Dupa directia canalului de comunicatie deschis fluxurile se


impart in:
fluxuri de intrare (pentru citirea datelor)
fluxuri de iesire (pentru scrierea datelor)
Dupa tipul de date pe care opereaza:
fluxuri de octeti (comunicarea seriala se realizeaza pe 8 biti)
fluxuri de caractere (comunicarea seriala se realizeaza pe 16
biti).
Dupa actiunea lor:
fluxuri primare de citire/scriere a datelor ;
fluxuri pentru procesarea datelor.

15 June 2011

Programare orientata pe obiecte


ORGANIZARE
Fluxuri primitive

Intrari si Iesiri

Fluxuri primitive

Fluxuri de procesare

Fluxuri de tip fisier

- sunt responsabile cu citirea/scrierea efectiva a datelor, punand


la dispozitie implementari ale metodelor de baza read/write.
In functie de tipul sursei datelor, ele pot fi impartite astfel:
Fisier
FileReader, FileWriter
FileInputStream, FileOutputStream
Memorie
CharArrayReader, CharArrayWriter
ByteArrayInputStream, ByteArrayOutputStream
- sunt folosite pentru scrierea/citirea informatiilor in/din
memorie si sunt create pe un vector existent deja.

15 June 2011

Programare orientata pe obiecte


ORGANIZARE
Fluxuri de procesare

Intrari si Iesiri

Fluxuri primitive

Fluxuri de procesare

Fluxuri de tip fisier

- sunt responsabile cu preluarea datelor de la un flux primitiv si


procesarea acestora.
Bufferizare
BufferedReader, BufferedWriter
BufferedInputStream, BufferedOutputStream
- sunt folosite pentru a introduce un buffer in procesul de
citire/scriere a informatiilor.
Filtrare
FilterReader, FilterWriter
FilterInputStream, FilterOutputStream
-filtreaza automat datele citite sau scrise.

15 June 2011

Programare orientata pe obiecte


ORGANIZARE

Intrari si Iesiri

Fluxuri primitive

Fluxuri de procesare

Conversie octeti-caractere
InputStreamReader, OutputStreamWriter
Conversie tipuri de date
DataInputStream, DataOutputStream
Folosite la scrierea/citirea datelor de tip primitiv intr-un format
binar.
Concatenare
SequenceInputStream
Concateneaza mai multe fluxuri de intrare intr-unul singur .
Un flux de procesare nu poate fi folosit decat impreuna cu un
flux primitiv.

Fluxuri de tip fisier

15 June 2011

Programare orientata pe obiecte


ORGANIZARE

Intrari si Iesiri

Fluxuri primitive

Fluxuri de procesare

Crearea unui flux


- orice flux este un obiect al clasei ce implementeaza fluxul
respectiv.
Crearea unui flux primitiv de date :
FluxPrimitiv numeFlux = new FluxPrimitiv(dispozitivExtern);
//crearea unui flux de intrare pe caractere
FileReader in = new FileReader("fisier.txt");
//crearea unui flux de intrare pe octeti
FileInputStream in = new FileInputStream("fisier.dat");

Fluxuri de tip fisier

15 June 2011

Programare orientata pe obiecte


ORGANIZARE
Fluxurile de procesare nu pot exista de sine statatoare ci se
suprapun pe un flux primitiv de citire/scriere a datelor.
Intrari si Iesiri

Fluxuri primitive

Constructorii claselor pentru fluxurile de procesare nu primesc


ca argument un dispozitiv extern de memorare a datelor ci o
referinta la un flux primitiv.
//crearea unui flux de intrare printr-un buffer
BufferedReader in = new BufferedReader(
new FileReader("fisier.txt"));

Fluxuri de procesare

Fluxuri de tip fisier

15 June 2011

Programare orientata pe obiecte


ORGANIZARE

Intrari si Iesiri

Fluxuri primitive

Fluxuri de procesare

Fluxuri pentru lucrul cu fisiere


- operatia lor de baza este citirea, respectiv scrierea unui
caracter sau octet dintr-un sau intr-un fisier specificat.
Clasele care implementeaza aceste fluxuri sunt :
FileReader, FileWriter - caractere
FileInputStream, FileOutputStream octeti
Constructorii clasei FileReader sunt:
public FileReader(String fileName)
public FileReader(File file)
Constructorii clasei FileWriter:
public FileWriter(String fileName)
public FileWriter(File file)

Fluxuri de tip fisier

15 June 2011

Programare orientata pe obiecte


ORGANIZARE

Intrari si Iesiri

Observatii:
- orice crearea a unui flux se realizeaza intr-un bloc try
catch sau metoda in care este creat fluxul trebuie sa arunce
exceptiile : FileNotFoundException, IOException.
- un fisier se inchide cu ajutorul metodei close.

Fluxuri primitive

Fluxuri de procesare

Fluxuri de tip fisier

15 June 2011

Programare orientata pe obiecte


ORGANIZARE
Citirea si scrierea cu buffer

Intrari si Iesiri

Fluxuri primitive

Fluxuri de procesare

-sunt folosite pentru a introduce un buffer (zona de memorie) in


procesul de citire/scriere a informatiilor
Clasele pentru citirea/scrierea cu zona tampon sunt:
BufferedReader, BufferedWriter - caractere
BufferedInputStream, BufferedOutputStream octeti
Constructorii cei mai folositi ai acestor clase sunt urmatorii:
BufferedReader(Reader in)
BufferedReader(Reader in, int dim_buffer)
BufferedWriter(Writer out)
BufferedWriter(Writer out, int dim_buffer)
BufferedInputStream(InputStream in)

Fluxuri de tip fisier

15 June 2011

Programare orientata pe obiecte


ORGANIZARE
- dimensiunea implicita a buffer-ului este de 512 octeti .
- metodele uzuale ale acestor clase sunt: read , write, flush
(goloste explicit zona tampon, chiar daca aceasta nu este plina).
Intrari si Iesiri

Fluxuri primitive

Fluxuri de procesare

BufferedWriter out = new BufferedWriter(


new FileWriter("out.dat"), 1024)
for(int i=0; i<1000; i++)
out.write(i);
//bufferul nu este plin, in fisier nu s-a scris nimic
out.flush();
//bufferul este golit, datele se scriu in fisier

Fluxuri de tip fisier

15 June 2011

Programare orientata pe obiecte


ORGANIZARE
Metoda readLine
- este specifica fluxurilor de citire cu buffer si permite citirea
linie cu linie a datelor de intrare.
Intrari si Iesiri

Fluxuri primitive

Fluxuri de procesare

BufferedReader br = new BufferedReader(new


FileReader("in"))
String linie;
while ((linie = br.readLine()) != null)
{
//proceseaza linie}
br.close();
}

Fluxuri de tip fisier

15 June 2011

Programare orientata pe obiecte


ORGANIZARE
Clasele DataInputStream si DataOutputStream

Intrari si Iesiri

Fluxuri primitive

Fluxuri de procesare

- fluxurile mai sunt privite la nivel de octet, ci ca succesiuni de date


primitive sau iruri de caractere.
- clasele care ofera un astfel de suport implementeaza interfetele
DataInput, respectiv DataOutput.
- aceste vor furniza metode pentru citirea si scrierea datelor la nivel de
tip primitiv si nu la nivel de octet.
Metode uzuale:
readBoolean /writeBoolean;
readInterger /writeInteger
readDouble/ writeDouble

Fluxuri de tip fisier

15 June 2011

Programare orientata pe obiecte


ORGANIZARE
Analiza lexicala pe fluxuri (clasa StreamTokenizer)

Intrari si Iesiri

Fluxuri primitive

Fluxuri de procesare

Fluxuri de tip fisier

- proceseaza un flux de intrare de orice tip si il imparte in


atomi lexicali.
Constructorii clasei sunt:
- public StreamTokenizer(Reader r)
- public StreamTokenizer(InputStream is)
Identificarea tipului si valorii unui atom lexical se face prin
intermediul variabilelor:
TT EOF - atom ce marcheaza sfarsitul fluxului
TT EOL - atom ce marcheaza sfarsitul unei linii
TT NUMBER - atom de tip numar
TT WORD- atom de tip cuvant
nval- valoarea unui atom numeric
sval valoarea unui cuvant

15 June 2011

Programare orientata pe obiecte


ORGANIZARE
Clasa File

Intrari si Iesiri

Fluxuri primitive

- pune la dispozitie metode pentru manipularea fisierelor si


directoarelor : metode pentru testarea existentei unui
fisier/director, stergerea, redenumirea unui fisier/director,
listarea fisierelor dintr-un director.
File f=new File(fiser)
FileInputStream in = new FileInputStream(f);

Clasa Scanner
- disponibila in pachetul java.util i permite regsirea ntr-un
Fluxuri de procesare

text a tipurilor primitive i a irurilor, folosind expresii regulate.


Scanner sc = new Scanner(new File("fisier"));

Fluxuri de tip fisier

15 June 2011

Programare orientata pe obiecte


ORGANIZARE

Colectii de date

Programare orientata pe obiecte

Interferte de descriu
colectii de date

Implementare colectii
de date
Algoritm

15 June 2011

Programare orientata pe obiecte


ORGANIZARE

Colectii de date

Interferte de descriu
colectii de date

Implementare colectii
de date

Colectii de date

O colectie este un obiect care grupeaza mai multe elemente intro singura unitate.
Tipul de date al elementelor dintr-o colectie este Object
(include obiecte de orice tip).
In Java colectiile de date sunt organizate in ierarhii astefel:
Interfete: tipuri abstracte de date ce descriu colectiile si permit
utilizarea lor independent de detaliile implementarilor.
Implementari: implementari concrete ale interfetelor ce descriu
colectii.
Algoritmi: metode care efectueaza diverse operatii utile
(cautarea , sortarea).

Algoritm

15 June 2011

Programare orientata pe obiecte


ORGANIZARE

Colectii de date

Interferte de descriu
colectii de date

Implementare colectii
de date
Algoritm

Interfete ce descriu colectii de date

Interfata Collection - modeleaza o colectie de date la nivelul cel


mai general.
Unele implementari ale colectiilor de date pot permite duplicari
ale elementelor.
public interface Collection {
// Metode cu caracter general
int size();
boolean isEmpty();
void clear();
// Operatii la nivel de element
boolean add(Object element);
boolean remove(Object element);

15 June 2011

Programare orientata pe obiecte


ORGANIZARE

Colectii de date

Interferte de descriu
colectii de date

Implementare colectii
de date
Algoritm

Interfata Set - modeleaza notiunea de multime in sens


matematic.
Mosteneste metodele din interfata Collection, fara a avea alte
metode specifice.
Clasele standard care ofera implementari concrete ale acestei
interfete sunt HashSet si TreeSet.
Interfata List - descrie liste de elemente indexate.
Listele pot contine duplicate si permit un control precis asupra
pozitiei unui element prin intermediul unui index.
Clase standard care implementeaza aceasta interfata sunt:
ArrayList, LinkedList, Vector.
Mosteneste metodele din interfata Collection adaugand metode
pentru acces pozitional, cautare si iterare avansata.

15 June 2011

Programare orientata pe obiecte


ORGANIZARE

Colectii de date

Interferte de descriu
colectii de date

Implementare colectii
de date
Algoritm

public interface List extends Collection {


// Acces pozitional
Object get(int index);
Object set(int index, Object element);
void add(int index, Object element);
Object remove(int index);
// Cautare
int indexOf(Object o);
int lastIndexOf(Object o);
// Iterare
ListIterator listIterator();
ListIterator listIterator(int index);
// Extragere sublista
List subList(int from, int to);
}
15 June 2011

Programare orientata pe obiecte


ORGANIZARE

Colectii de date

Interferte de descriu
colectii de date

Implementare colectii
de date
Algoritm

Interfata Map : descrie structuri de date ce asociaza fiecarui


element o cheie unica, dupa care poate fi regasit.
Ierarhia interfetelor derivate din Map este independenta de
ierarhia derivata din Collection.
public interface Map {
// Operatii la nivel de element
Object put(Object key, Object value);
Object get(Object key);
Object remove(Object key);
// Vizualizari ale colectiei
public Set keySet();
}
Clase care implementeaza interfata Map sunt HashMap,
TreeMap si Hashtable.

15 June 2011

Programare orientata pe obiecte


ORGANIZARE

Colectii de date

Interferte de descriu
colectii de date

Implementare colectii
de date
Algoritm

Implementari ale colectiilor


Clasele de baza care implementeaza interfete ce descriu colectii
au numele de forma : < Implementare >< Interfata >
<implementare> = structura interna folosit a pentru
reprezentarea.

Interfata

Clasa

Set

HashSet

SortedSet

TreeSet

List

ArrayList, LinkedList
Vector

Map

HashMap
Hashtable

SortedMap

TreeMap

15 June 2011

Programare orientata pe obiecte


ORGANIZARE

Algoritmi polimorfici

Colectii de date

Interferte de descriu
colectii de date

Implementare colectii
de date

Algoritmii polimorfici sunt metode definite din clasa Collections


care permit efectuarea unor operatii utile cum ar fi cautarea,
sortarea, etc.
Metodele mai des folosite din clasa Collections sunt:
sort - sorteaza ascendent o lista;
shuffle - amesteca elementele unei liste - opusul lui sort;
binarySearch - efectueaza cautarea binara a unui element intrlista ordonata;
min , max;
swap - interschimba elementele de la doua pozitii specificate
ale unei liste;

Algoritm

15 June 2011

Programare orientata pe obiecte


ORGANIZARE

Iteratori
Iteratorii sunt obiecte care permit parcurgerea secventiala a
unei colectii de date.

Colectii de date

Interferte de descriu
colectii de date

Iteratorii sunt descrisi de interfetele Enumeration, Iterator,


ListIterator.
Metode uzuale:
boolean hasMoreElements( ) // daca mai sunt elemente de
enumerat
E nextElement( )
boolean hasNext() //daca mai sunt elemente de parcurs

Implementare colectii
de date
Algoritm

15 June 2011

Programare orientata pe obiecte


ORGANIZARE

Serializarea datelor
primitive

Programare orientata pe obiecte

Serializarea
obiectelor

15 June 2011

Programare orientata pe obiecte


ORGANIZARE

Serializarea datelor
primitive

Serializarea
obiectelor

Serializarea obiectelor

Serializarea este o metoda ce permite transformarea unui obiect


intr-o secventa de octeti stfel incat sa poata fi trimis printr-un
flux de iesire.

Procesul invers, de citire a unui obiect serializat pentru a-i reface


starea originala, se numeste deserializare.

15 June 2011

Programare orientata pe obiecte


ORGANIZARE
Utilitatea serializarii:
Serializarea datelor
primitive

persistenta obiectelor : pot fi memorate pentru a fi folosite i


dup ncheierea aplicaiei care le-a creat;

Serializarea
obiectelor

transmiterea datelor in retea - aplicatiile ce ruleaza in retea pot


comunica intre ele folosind fluxuri pe care sunt trimise, respectiv
receptionate obiecte serializate;
RMI (Remote Method Invocation) - este o modalitate prin care
metodele unor obiecte de pe o alta masina pot fi apelate ca si
cum acestea ar exista local pe masina pe care ruleaza aplicatia.

15 June 2011

Programare orientata pe obiecte


ORGANIZARE

Serializarea datelor primitive


Serializarea datelor
primitive

Serializarea
obiectelor

Serializarea tipurilor primitive poate fi realizata fie prin


intermediul fluxurilor:
9 DataOutputStream/DataInputStream
care
implementeaza
interfeta DataInput, care implementeaza interfeta DataOutput.
9 ObjectOutputStream/ObjectInputStream.
Interfetele ce declara metode de tipul readTipPrimitiv, respectiv
writeTipPrimitiv pentru scrierea/citirea datelor primitive si a
sirurilor de caractere.

15 June 2011

Programare orientata pe obiecte


ORGANIZARE
Serializarea obiectelor
Serializarea datelor
primitive

Serializarea
obiectelor

Serializarea obiectelor se realizeaza prin intermediul fluxurilor:


9 ObjectOutputStream (pentru salvare) ;
9 ObjectInputStream (pentru restaurare).
Mecanismul implicit de serializare a unui obiect va salva:
- numele clasei obiectului;
- signatura clasei ;
- valorile tuturor campurile serializabile ale obiectului
Metodele pentru serializarea obiectelor sunt:
writeObject, pentru scriere si
readObject, pentru restaurare.

15 June 2011

Programare orientata pe obiecte


ORGANIZARE

Applet-uri

Programare orientata pe obiecte

Ciclul de viata al
unui applet

Grafica Java

15 June 2011

Programare orientata pe obiecte


ORGANIZARE

Applet-uri

Definitie Un applet reprezinta un program Java de dimensiuni


reduse ce gestioneaza o suprafata de afisare (container) care
poate fi inclusa intr-o pagina Web.

Applet-uri

Ciclul de viata al
unui applet

Grafica Java

contine cel putin o clasa, numita principala, care extinde clasa


Applet.
clasa principlala trebuie specificata in documentul HTML ce
descrie pagina Web in care dorim sa includem appletul.
este executat de de browserul in care este incarcata pagina Web.
pachetul care ofera suport pentru crearea de appleturi este
java.applet, cea mai importanta clasa fiind Applet.

15 June 2011

Programare orientata pe obiecte


Crearea unui applet simplu

ORGANIZARE

1. Scrierea codului : pentru a putea fi executata de browser,


clasa principala a appletului trebuie sa fie publica.
Applet-uri
2. Salvarea fisierelor sursa : denumire_fisier.java.
Ciclul de viata al
unui applet

Grafica Java

3. Compilarea :compilatorul javac apelat pentru fisierul ce


contine appletul.
javac FirstApplet.java
4. Rularea appletului : Applet-urile nu ruleaza independent. Ele
pot fi rulate doar prin intermediul unui browser.

15 June 2011

Programare orientata pe obiecte


ORGANIZARE

Ciclul de viata al unui applet


Incarcarea in memorie : Este creata o instanta a clasei principale a
appletului si incarcata in memorie.

Applet-uri

Initializarea : Este apelata metoda init ce permite initializarea


diverselor variabile, citirea unor parametri de intrare, etc.
Pornirea : Este apelata metoda start

Ciclul de viata al
unui applet

Executia propriu-zisa : Consta in interactiunea dintre utilizator si


componentele afisate pe suprafata appletului;

Grafica Java

Oprirea temporara: Daca utilizatorul paraseste pagina Web in care


ruleaza appletul este apelata metoda stop a acestuia;
Oprirea definitiva : La inchiderea tuturor instantelor browserului
folosit pentru vizualizare, appletul va fi eliminat din memorie si va fi
apelata metoda destroy a acestuia.

15 June 2011

Programare orientata pe obiecte


ORGANIZARE
Structura generala a unui applet

Applet-uri

Ciclul de viata al
unui applet

Grafica Java

import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;
public class StructuraApplet extends Applet {
public void init() { }
public void start() { }
public void stop() {}
public void destroy() {}
}

15 June 2011

Programare orientata pe obiecte


ORGANIZARE

Applet-uri

Ciclul de viata al
unui applet

Grafica Java

Grafica Java

Pachetul Awt (Abstract Window Toolkit) contine toate clasele pentru


crearea interfetelor cu utilizatorul si pentru desenarea graficelor sau a
imaginilor.
Clasa abstracta Graphics face parte din pachetul java.awt si se refera la
ecranul grafic Java.
Ecranul grafic Java se bazeaza pe pixeli si pe un sistem ortogonal de
axe.
Cele mai uzuale metode :
public void drawString(String sir, int x, int y);
public void drawLine(int x1, int y1, int x2, int y2)
public drawRect(int x, int y, int lungime, int latime)

15 June 2011

Programare orientata pe obiecte


ORGANIZARE

Applet-uri

Ciclul de viata al
unui applet

Grafica Java

Componente grafice AWT


Toate componentele AWT sunt definte de clase proprii ce se
gasesc in pachetul java.awt.
Button - butoane cu eticheta formata dintr-un text pe o singura
linie;
Checkbox - componenta ce poate avea doua stari;
Choice - liste in care doar elementul selectat este vizibil ;
Container - superclasa tuturor suprafetelor de afisare
Label - etichete simple ce pot contine o singura linie de text
List - liste cu selectie simpla sau multipla;
Scrollbar - bare de defilare orizontale sau verticale;
TextComponent - superclasa componentelor pentru editarea
textului: TextField (pe o singura linie) si TextArea (pe mai
multe linii).

15 June 2011

Programare orientata pe obiecte


ORGANIZARE

Applet-uri

Ciclul de viata al
unui applet

Grafica Java

Componentele AWT au peste 100 de metode comune, mostenite


din clasa Component.
Pozitie
getLocation, getX, getY, getLocationOnScreen
Dimensiuni
getSize, getHeight, getWidth
Culoare (text si fundal)
getForeground, getBackground

15 June 2011

Вам также может понравиться