+ All Categories
Home > Documents > Programare in Java

Programare in Java

Date post: 17-Oct-2015
Category:
Upload: renegade124
View: 70 times
Download: 5 times
Share this document with a friend
Description:
Programare in Java

of 126

Transcript
  • 1. Fie urmtoarea clas Java:

    class C {

    int a; float x; boolean b;

    }

    Stabilii care dintre urmtoarele instruciuni este corect: a) C ob = new C(1); b) C ob = new C(1,1.0); c) C ob = new C(); d) C ob = new 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) 3; b) 2; c) 1; d) 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) 0; b) 2; c) 1; d) 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) javac Test b) java Test.java c) javac Test.class d) javac Test.java 5. Un program Test scris n limbajul Java i compilat, poate fi rulat folosind comanda: a) javac Test.java b) java Test c) java Test.class d) java Test.java 6. n Java o clas poate extinde: a) cel mult o interfa b) oricte clase c) cel mult o clas d) oricte interfee 7. n Java o interfa poate extinde: a) cel mult o interfat b) oricte interfee c) cel mult o clas d) oricte clase 8. n Java o clas poate implementa: a) o clas b) oricte clase c) o interfa d) 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) A B C b) A c) C B A d) 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) 3 4 b) 3 2 c) 2 2 d) 3 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) 0 5 b) 5 1 c) 5 7 d) 0 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) afisare(); b) Student_1.afisare(); c) super.afisare(); d) 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

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

    Dup executarea programului, pe ecran se va afia: a) 20 -22 b) 22 22 c) 35 10 d) 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=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) 5 7 b) 6 6 c) 2 10 d) 7 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) 1 1 1 b) 1 2 3 c) 1 2 6 d) 0 0 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) 0 0 0 b) 1 4 25 c) 1 -1 1 d) 2 4 16 21. Un fir de execuie poate intra n starea "blocat" (blocked) astfel:

    a) prin apelul metodei sleep(); b) automat de ctre sistemul de operare; c) prin apelul metodei block(); d) 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) exist o metod care se ocup de acest lucru; b) separarea codului pentru tratarea unei erori de codul n care ea poate sa apar; c) propagarea unei erori pna la un analizor de excepii corespunztor; d) 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) Permite referirea claselor fr utilizarea de prefixe; b) Permite importul imaginilor folosite; c) Elimin necesitatea declarrii variabilelor; d) Elimin apelurile directe ale funciilor fr clase.

    25. Indicai pe care dintre sistemele de operare urmtoare pot fi rulate aplicaiile Java: a) Windows b) UNIX c) Mac OS X d) Linux

  • ORGANIZARE

    Programare orientata pe obiecte

    Tipuri de aplicatiiJava

    Structura unui fisiersursa

    Structura lexicala a limbajului Java.

    Introducere in Java

    Tipuri de date

    Controlul executiei

    19 February 2011 1

    Programare orientata pe obiecte

  • ORGANIZARE

    Programare orientata pe obiecte

    Tipuri de aplicatiiJava

    Structura unui fisiersursa

    Structura lexicala a limbajului Java.

    Introducere in Java

    Tipuri de date

    Controlul executiei

    19 February 2011 2

    Java este o tehnologie inovatoare lansata de compania SunMicrosystems in 1995.

    Caracteristici principale: limbaj compilat si interpretat

    Programele Java sunt mai intai compilate in fisiere intermediare (bytecode) dupa care sunt interpretate in mediul de executie Java.

    limbaj independent de platformaMasina virtuala Java (JVM) este mediul de executie al limbajuluiJava.JVM este inglobata in platforma JDK (Java Develoment Kit)

    SimplitateElimina suprancarcarea operatorilor, mostenirea multipla, renunta la utilizarea variabilelor pointer;

    Complet orientat obiect Este modelat dupa C si C++.

    Introducere in Java

  • ORGANIZARE

    Programare orientata pe obiecte

    Tipuri de aplicatiiJava

    Structura unui fisiersursa

    Structura lexicala a limbajului Java.

    Introducere in Java

    Tipuri de date

    Controlul executiei

    In tehnologia Java sunt cuprinse patru componente:

    1. Masina virtuala, denumita JVM (Java Virtual Machine) careinterpreteaza fisierele cu extensia .class ce contine bytecode.

    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 (stocatein fisiere cu extensia .java) in instructiuni generice bytecode(stocate infisiere cu extensia .class) care sunt intelese de masina virtuala.4. Biblioteca de clase Java. Contine un set de componente utile care potfi reutilizate in diverse aplicatii informatice.

    19 February 2011 3

  • ORGANIZARE

    Programare orientata pe obiecte

    Tipuri de aplicatiiJava

    Structura unui fisiersursa

    Structura lexicala a limbajului Java.

    Introducere in Java

    Tipuri de date

    Controlul executiei

    19 February 2011 4

  • ORGANIZARE

    Programare orientata pe obiecte

    Tipuri de aplicatiiJava

    Structura unui fisiersursa

    Structura lexicala a limbajului Java.

    Introducere in Java

    Tipuri de date

    Controlul executiei

    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 unuibrowser Web.- contine o clasa de baza declarata public iar denumirea acesteiacoincide cu numele fisierului;- in cadrul clasei publice trebuie incapsulata functia principalamain () cu sintaxa :

    public static void main (Strings args[])

    19 February 2011 5

  • ORGANIZARE

    Programare orientata pe obiecte

    Tipuri de aplicatiiJava

    Structura unui fisiersursa

    Structura lexicala a limbajului Java.

    Introducere in Java

    Tipuri de date

    Controlul executiei

    19 February 2011 6

    Crearea oricarei aplicatii Java presupune efectuarea urmatorilorpasi:

    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. Esterecomandat ca fisierul care contine codul sursa al clasei primare saaiba acelasi nume cu cel al clasei.

  • ORGANIZARE

    Programare orientata pe obiecte

    Tipuri de aplicatiiJava

    Structura unui fisiersursa

    Structura lexicala a limbajului Java.

    Introducere in Java

    Tipuri de date

    Controlul executiei

    19 February 2011 7

    3. Compilarea aplicatiei

    - pentru compilare se utilizeaza compilatorul javac din distributia JDK.Apelul compilatorului se face pentru fisierul ce contine clasa principalaa 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 compilarecorespunzatoare clasei principale cu comanda java numeRularea unei aplicatii care nu foloseste interfata grafica, se va face intr-o fereastra sistem.

  • ORGANIZARE

    Programare orientata pe obiecte

    Tipuri de aplicatiiJava

    Structura unui fisiersursa

    Structura lexicala a limbajului Java.

    Introducere in Java

    Tipuri de date

    Controlul executiei

    Structura fisierelor sursa

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

    - un fisier sursa trebuie sa contina cel putin o definitie a uneiclase de baza publice .

    - un fisier sursa poate contine un numar nelimitat de definitii declase;

    Exista trei elemente care pot sa apara in fisierul sursa:

    - declaratii de pachete;

    - instructiuni de includere clase;

    - definitii de clase.

    19 February 2011 8

  • ORGANIZARE

    Programare orientata pe obiecte

    Tipuri de aplicatiiJava

    Structura unui fisiersursa

    Structura lexicala a limbajului Java.

    Introducere in Java

    Tipuri de date

    Controlul executiei

    Un pachet este o multime de clase pastrate in aceelasidirector.Exista mai multe pachete de baza cum ar fi : java.io,java.lang, java.applet, java.awt ;

    Declararea unui pachet : package

    Se poate importa fie un pachet fie doar o clasa dintr-un pachetexistent asfel:

    import nume_pachet.*;import nume_pachet.nume_clasa;

    19 February 2011 9

  • ORGANIZARE

    Programare orientata pe obiecte

    Tipuri de aplicatiiJava

    Structura unui fisiersursa

    Structura lexicala a limbajului Java.

    Introducere in Java

    Tipuri de date

    Controlul executiei

    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 desemne);- setul de caractere Unicode este divizat in subintervale numiteblocuri : Basi Latin, Greek, Ghotic etc. )Literali- sunt reprezentarea codului sursa a unui tip primitiv, String saunul.

    19 February 2011 1

  • ORGANIZARE

    Programare orientata pe obiecte

    Tipuri de aplicatiiJava

    Structura unui fisiersursa

    Structura lexicala a limbajului Java.

    Introducere in Java

    Tipuri de date

    Controlul executiei

    19 February 2011 1

    Literari IntregiSunt acceptate 3 baze de numeratie : baza 10, 16, 8 si pot fi de douatipuri: normali - se reprezinta pe 4 octeti (32 biti)

    lungi - se reprezinta pe 8 octeti (64 biti)

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

    Literari Logici : sunt reprezentati prin valorile true , false.

    Literari Caracter : reprezentarea se face fie folosind o litera, fie o secventaescape scrisa ntre apostrofuri ( \n, \t, \b etc.)

  • ORGANIZARE

    Programare orientata pe obiecte

    Tipuri de aplicatiiJava

    Structura unui fisiersursa

    Structura lexicala a limbajului Java.

    Introducere in Java

    Tipuri de date

    Controlul executiei

    19 February 2011 1

    2. Operatoriatribuirea =

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

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

    operatori relationali: > (shift la dreapta fara semn)operatorul + pentru concatenarea sirurilor:

    sir 1 +sir2

  • ORGANIZARE

    Programare orientata pe obiecte

    Tipuri de aplicatiiJava

    Structura unui fisiersursa

    Structura lexicala a limbajului Java.

    Introducere in Java

    Tipuri de date

    Controlul executiei

    19 February 2011 1

    Tipuri de date si variabile

    1. Tipuri de dateIn Java tipurile de date se impart in doua categorii: tipuriprimitive 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 dememorie) .

  • ORGANIZARE

    Programare orientata pe obiecte

    Tipuri de aplicatiiJava

    Structura unui fisiersursa

    Structura lexicala a limbajului Java.

    Introducere in Java

    Tipuri de date

    Controlul executiei

    19 February 2011 1

    VariabileVariabilele pot fi de tip primitiv sau referinte la obiecte (tipreferinta).

    Declararea variabilelor: Tip numeVariabila;

    Initializarea variabilelor: Tip numeVariabila = valoare;

    Declararea constantelor: final Tip numeVariabila;

  • ORGANIZARE

    Programare orientata pe obiecte

    Tipuri de aplicatiiJava

    Structura unui fisiersursa

    Structura lexicala a limbajului Java.

    Introducere in Java

    Tipuri de date

    Controlul executiei

    19 February 2011 1

    In functie de locul in care sunt declarate, variabilele seimpart in urmatoatele categorii:a.Variabile membre, declarate in interiorul unei clase,b.Parametri metodelor, vizibili doar in metodarespectiva.c.Variabile locale, declarate intr-o metoda, vizibile doarin metoda respectiva.d.Variabile locale, declarate intr-un bloc de cod, vizibiledoar in blocul respectiv.

  • ORGANIZARE

    Programare orientata pe obiecte

    Tipuri de aplicatiiJava

    Structura unui fisiersursa

    Structura lexicala a limbajului Java.

    Introducere in Java

    Tipuri de date

    Controlul executiei

    19 February 2011 1

    Controlul executiei

    Instructiuni de decizie;Instructiuni de salt;Instructiuni pentru tratarea exceptiilor: try-catch-finally,

    throwAlte instructiuni: break, continue, return, label.

    1. Instructiuni de deciziea). if-else

  • ORGANIZARE

    Programare orientata pe obiecte

    Tipuri de aplicatiiJava

    Structura unui fisiersursa

    Structura lexicala a limbajului Java.

    Introducere in Java

    Tipuri de date

    Controlul executiei

    19 February 2011 1

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

    Variabilele care pot fi testate folosind instructiuneaswitch nu pot fi decat de tipuri primitive.2. Instructiuni de salt- for , while, do- while

  • ORGANIZARE

    Programare orientata pe obiecte

    Domeniul de vizibilitate al

    membrilor unei clase

    Definirea claselor

    Ciclul de viata al unui obiect

    4 March 2011 1

    Programare orientata pe obiecte

  • ORGANIZARE

    Programare orientata pe obiecte

    Domeniul de vizibilitate al

    membrilor unei clase

    Definirea claselor

    Ciclul de viata al unui obiect

    4 March 2011 2

    Definirea claselor

    - in Java este obligatorie definirea a cel putin unei clase (clasa debaza);

    - nu este obligatorie crearea unei instante a clasei de baza, caz incare se vor utiliza date si metode statice.

    Sintaxa unei clase:[modificator] class NumeClasa

    {// Corpul clasei}

  • ORGANIZARE

    Programare orientata pe obiecte

    Domeniul de vizibilitate al

    membrilor unei clase

    Definirea claselor

    Ciclul de viata al unui obiect

    Modificatorii pot fi:- public : poate fi folosita din orice alta clasa, indiferent depachetul in care se gaseste.

    - abstract : este incomplet definita ; nu poate fi instantiata, fiindfolosita doar pentru a crea un model comun pentru o serie desubclase.

    - final : nu se mai pot defini subclase.

    Obs : daca modificatorul lipseste, clasa este implicita si poate fifolosita doar de clasele din aflate in accelasi pachet.

    4 March 2011 3

  • ORGANIZARE

    Programare orientata pe obiecte

    Domeniul de vizibilitate al

    membrilor unei clase

    Definirea claselor

    Ciclul de viata al unui obiect

    4 March 2011 4

    Corpul unei clase

    Declararea si, eventual, initializarea variabilelor deinstanta si de clasa (variabile membre).

    Declararea si implementarea constructorilor;

    Declararea si implementarea metodelor de instanta si declasa (metode membre).

    Declararea unor clase imbricate (interne).Observatie : implementarea metodei unei clase trebuie sase faca obligatoriu in corpul clasei.

  • ORGANIZARE

    Programare orientata pe obiecte

    Domeniul de vizibilitate al

    membrilor unei clase

    Definirea claselor

    Ciclul de viata al unui obiect

    Declararea datelor membre

    Variabilele membre ale unei clase se declara de obicei inainteametodelor.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 fischimbata (declararea constantelor ).

    final double PI = 3.14 ;

    4 March 2011 5

  • ORGANIZARE

    Programare orientata pe obiecte

    Domeniul de vizibilitate al

    membrilor unei clase

    Definirea claselor

    Ciclul de viata al unui obiect

    4 March 2011 6

    Constructorii unei clase

    - sunt metode speciale care au aceelasi nume cu cel clasei, nureturneza nici o valoare si sunt folosite pentru initializareaobiectelor clasei;

    - o clasa poate avea mai multi constructori care trebuie sadifere prin lista argumentelor;

    - daca in clasa nu se declara nici un constructor, sistemul iicreaza automat un constructor implicit.

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

  • ORGANIZARE

    Programare orientata pe obiecte

    Domeniul de vizibilitate al

    membrilor unei clase

    Definirea claselor

    Ciclul de viata al unui obiect

    4 March 2011 7

    Declararea metodelor

    - Metodele sunt responsabile cu descrierea comportamentuluiunui obiect.- Metodele se pot gasi doar in cadrul claselor.

    O metoda se declara astfel:[modificatori] TipReturnat numeMetoda ( [argumente] ){// Corpul metodei}

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

  • ORGANIZARE

    Programare orientata pe obiecte

    Domeniul de vizibilitate al

    membrilor unei clase

    Definirea claselor

    Ciclul de viata al unui obiect

    static : metoda este de clasa si nu de instanta;

    abstract : metoda care nu are implementare si trebuieobligatoriu sa faca parte dintr-o clasa abstracta;

    final : metoda nu mai poate fi supradefinita in subclasele claseiin care a fost definita.

    In limbajul Java argumentele sunt transmise doar prin valoare- daca argumentul are tip primitiv de date, metoda nu ii poateschimba valoare decat local;- daca argumentul este de tip referinta, metoda nu poatemodifica valoarea referintei obiectului .

    4 March 2011 8

  • ORGANIZARE

    Programare orientata pe obiecte

    Domeniul de vizibilitate al

    membrilor unei clase

    Definirea claselor

    Ciclul de viata al unui obiect

    Ciclul de viata al unui obiect

    1. Crearea obiectelorCrearea obiectelor se realizeaza prin instantierea unei clase siimplica urmatoarele lucruri:

    DeclarareaPresupune specificarea tipului acelui obiect, cu alte cuvintespecificarea clasei acestuia

    NumeClasa numeObiect; Instantierea

    Se realizeaza prin intermediul operatorului new si are ca efectcrearea efectiva a obiectului cu alocarea spatiului de memoriecorespunzator.

    numeObiect = new NumeClasa();

    4 March 2011 9

  • ORGANIZARE

    Programare orientata pe obiecte

    Domeniul de vizibilitate al

    membrilor unei clase

    Definirea claselor

    Ciclul de viata al unui obiect

    2. Folosirea obiectelorObiectul creat poate fi folosit in urmatoarele sensuri: aflareaunor informatii despre obiect, schimbarea starii sale sauexecutarea unor actiuni.

    obiect.NumeVariabila sau obiect.NumeMetoda

    Observatie : programare orientata pe obiecte descurajeazafolosirea directa a variabilelor unui obiect , in schimb, pentrufiecare variabila se pot definii metode care sa permitaschimbarea/aflarea valorilor (set_variabila si get_variabila).

    obiect. x=3; // setare inconstientaobiect.set_x =3; //metode setter

    4 March 2011 1

  • ORGANIZARE

    Programare orientata pe obiecte

    Domeniul de vizibilitate al

    membrilor unei clase

    Definirea claselor

    Ciclul de viata al unui obiect

    3. Distrugerea obiectelor- in limajul Java programele nu mai au responsabilitateadistrugerii obiectelor.

    - in momentul rularii unui program , simultan cu interpretatorulJava , ruleaza un proces care se ocupa cu distrugerea obiectelornumit garbage collector (dispus pe platforma de lucru Java ).

    - un obiect este eliminat din memorie atunci cand nu mai existanici o referinta la acesta.

    4 March 2011 1

  • ORGANIZARE

    Programare orientata pe obiecte

    Domeniul de vizibilitate al

    membrilor unei clase

    Definirea claselor

    Ciclul de viata al unui obiect

    Domeniul de vizibilitate al variabilelor si metodelor membre

    Exista patru niveluri de acces : public, pretected, implicit siprivate.O variabila/metoda membra de clasa se poate accesa doardaca tipul de clasa este accesibil.a). daca membrul este declarat public se permite accesul de

    oriunde;b). daca membrul este declrat protected atunci accesul estepermis doar daca:

    - accesul este cerut din pachetul clasei in care estedeclarat;- accesul apare dintr-o subclasa a clasei.

    c). daca membrul este declarat private atunci accesul este permisdoar in cadrul clasei;d). daca membrul este implicit accesul este permis doar dinpachetul in care este declarat tipul.

    4 March 2011 1

  • ORGANIZARE

    Programare orientata pe obiecte

    Domeniul de vizibilitate al

    membrilor unei clase

    Definirea claselor

    Ciclul de viata al unui obiect

    4 March 2011 1

  • ORGANIZARE

    Programare orientata pe obiecte

    Modificatori de acees

    Variabile si metodede instanta si de

    clasa

    Extinderea claselor

    Polimorfism

    4 March 2011 1

    Programare orientata pe obiecte

  • ORGANIZARE

    Programare orientata pe obiecte

    Modificatori de acees

    Variabile si metodede instanta si de

    clasa

    Extinderea claselor

    Polimorfism

    4 March 2011 2

    Extinderea claselor

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

    - o clasa poate avea un numar nelimitat de subclase;

    - mumtimea claselor definite in Java poate fi vazuta ca unarbore;

    - radacina arborelui este clasa Object din pachetul java.lang

    Sintaxa extinderii:class clasa1 extends clasa2,

    unde clasa1 este subclasa si clasa2 este superclasa.

  • ORGANIZARE

    Programare orientata pe obiecte

    Modificatori de acees

    Variabile si metodede instanta si de

    clasa

    Extinderea claselor

    Polimorfism

    - relatia de derivare a claselor este tranzitiva.

    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.

    4 March 2011 3

  • ORGANIZARE

    Programare orientata pe obiecte

    Modificatori de acees

    Variabile si metodede instanta si de

    clasa

    Extinderea claselor

    Polimorfism

    Clasa Object

    - in limbajul Java, clasa Object este superclasa pentru toateclasele.Clasa Object defineste si implementeaza comportamentul

    comun al tuturor celorlalte clase Java prin metode specifice:

    returnarea clasei din care face parte un obiectul curentgetclass( )

    reprezentarea obiectiului curent intr-un String.toString( )

    4 March 2011 4

  • ORGANIZARE

    Programare orientata pe obiecte

    Modificatori de acees

    Variabile si metodede instanta si de

    clasa

    Extinderea claselor

    Polimorfism

    Constructorii subclaselor

    Instantierea unui obiect din clasa extinsa implica instantiereaunui obiect din clasa parinte.

    Fiecare constructor al subuclasei trebuie sa aiba un constructorcu aceeasi signatura in parinte sau sa apeleze explicit unconstructor al clasei extinse .

    Apelul explicit al unui constructor din superclasa se realizeazacu expresia:

    super([argumente])

    4 March 2011 5

  • ORGANIZARE

    Programare orientata pe obiecte

    Modificatori de acees

    Variabile si metodede instanta si de

    clasa

    Extinderea claselor

    Polimorfism

    4 March 2011 6

    Polimorfism

    supraincarcarea (overloading) : in cadrul unei clase pot existametode cu acelasi nume cu conditia ca signaturile lor sa fiediferite.

    supradefinirea (overriding): o subclasa poate rescrie o metoda aclasei parinte prin implementarea unei metode cu acelasi numesi aceeasi signatura ca ale superclasei.

    Observatii:- o metoda supradefinita poate sa ignore codul din superclasasau poate sa il extinda prin expresia super.- o metoda nu poate supradefini o metoda declarata final in clasaparinte.- in Java nu este posibila supraincarcarea operatorilor.

  • ORGANIZARE

    Programare orientata pe obiecte

    Modificatori de acees

    Variabile si metodede instanta si de

    clasa

    Extinderea claselor

    Polimorfism

    Mofificatorii de acees

    - o subclasa mosteneste de la parintele sau toate variabilele si metodele care nu sunt private.

    4 March 2011 7

  • ORGANIZARE

    Programare orientata pe obiecte

    Modificatori de acees

    Variabile si metodede instanta si de

    clasa

    Extinderea claselor

    Polimorfism

    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.

    class Exemplu { int x ; //variabila de instanta};

    - la fiecare creare a unui obiect al clasei Exemplu sistemul alocao 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 100System.out.println(o2.x); // Afiseaza 200 = 100;

    4 March 2011 8

  • ORGANIZARE

    Programare orientata pe obiecte

    Modificatori de acees

    Variabile si metodede instanta si de

    clasa

    Extinderea claselor

    Polimorfism

    - pentru variabilele de clasa (statice) sistemul aloca o singurazona de memorie la care au acces toate instantele claseirespective;- 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.numeVariabilaStaticaclass 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 9

  • ORGANIZARE

    Programare orientata pe obiecte

    Modificatori de acees

    Variabile si metodede instanta si de

    clasa

    Extinderea claselor

    Polimorfism

    Metode de instanta si de clasa

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

    Diferenta intre cele doua tipuri de metode este urmatoarea: metodele de instanta opereaza atat pe variabilele de instanta catsi pe cele statice ale clasei;

    metodele de clasa opereaza doar pe variabilele statice aleclasei.

    4 March 2011 1

  • ORGANIZARE

    Programare orientata pe obiecte

    Interfete Java

    Clase abstracte

    Metode abstracte

    11 March 2011 1

    Programare orientata pe obiecte

  • ORGANIZARE

    Programare orientata pe obiecte

    Interfete Java

    Clase abstracte

    Metode abstracte

    11 March 2011 2

    Clase si metode abstracte

    - este utilizata pentru a definii un concept abstract folosit ladezvoltarea ulterioara a altor clase ce pot fi instantiate;

    - o clasa abstracta nu poate fi instantiata;

    - o clasa abstracta pune la dispozitia subclaselor sale un modelcomplet pe care trebuie sa il implementeze.

    Declararea unui clase abstracte:[public] abstract class ClasaAbstracta{// Declaratii uzuale// Declaratii de metode abstracte}

  • ORGANIZARE

    Programare orientata pe obiecte

    Interfete Java

    Clase abstracte

    Metode abstracte

    - poate avea specificatorul public caz in care poate fi extinsa deorice clasa din afara pachetului;

    - poate contine date membre la care se adauga declaratii demetode neimplementate.

    - clasa care extinde o clasa abstracta trebuie sa implementezemetodele neimplementate din clasa abstracta.

    - daca o clasa nu implementeaza metodele neimplementate estedeasemenea abstracta si nu poate fi instantiata.

    11 March 2011 3

  • ORGANIZARE

    Programare orientata pe obiecte

    Interfete Java

    Clase abstracte

    Metode abstracte

    Metode abstracte

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

    In fata unei metode abstracte trebuie sa apara obligatoriucuvantul cheie abstract, altfel va fi furnizata o eroare decompilare.

    abstract class ClasaAbstracta {abstract void metodaAbstracta(); // Corectvoid metoda(); // Eroare}

    11 March 2011 4

  • ORGANIZARE

    Programare orientata pe obiecte

    Interfete Java

    Clase abstracte

    Metode abstracte

    OBSERVATII

    O clasa abstracta poate sa nu aiba nici o metoda abstracta. Orice clasa care are o metoda abstracta trebuie declarata cafiind abstracta.

    Platforma de lucru Java cuprinde numeroase exemple de ierarhiicare folosesc la nivelele superioare clase abstracte: Number: superclasa abstracta a tipurilor referinta numerice; Reader, Writer: superclasele abstracte ale fluxurilor deintrare/iesire pe caractere; InputStream, OutputStream: superclasele abstracte alefluxurilor deintrare/iesire pe octeti; AbstractList, AbstractSet, AbstractMap: superclaseabstracte pentru structuri de date de tip colectie.

    11 March 2011 5

  • ORGANIZARE

    Programare orientata pe obiecte

    Interfete Java

    Clase abstracte

    Metode abstracte

    11 March 2011 6

    Interfete

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

    O interfata Java este o colectie de metode fara implementare sideclaratii de constante.

    O clasa care implementeaza o interfata trebuie obligatoriu saspecifice implementari pentru toate metodele interfetei.

  • ORGANIZARE

    Programare orientata pe obiecte

    Interfete Java

    Clase abstracte

    Metode abstracte

    Definirea unei interfete

    Definirea unei interfete se face prin intermediul cuvantuluicheie interface:

    [public] interface NumeInterfata[extends SuperInterfata1, SuperInterfata2...]{ Corpul interfetei:}

    O interfata poate avea doar modificatorul public.

    O interfata poate extinde oricate interfete. Acestea se numescsuperinterfete si sunt separate prin virgula.

    11 March 2011 7

  • ORGANIZARE

    Programare orientata pe obiecte

    Interfete Java

    Clase abstracte

    Metode abstracte

    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 uneivariabile 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 initializareaprivate int x = 1;// Incorect, modificator nepermis

    }

    11 March 2011 8

  • ORGANIZARE

    Programare orientata pe obiecte

    Interfete Java

    Clase abstracte

    Metode abstracte

    metode fara implementare: acestea pot fi sau nu declarate cumodificatorul public, care este implicit;- nici un alt modificator nu este permis in declaratia unei metodea unei interfete.

    interface Exemplu {void metoda();// Echivalent cu:public void metoda();protected void metoda2(); // Incorect, modificator nepermis

    11 March 2011 9

  • ORGANIZARE

    Programare orientata pe obiecte

    Interfete Java

    Clase abstracte

    Metode abstracte

    Implementarea unei interfete

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

    class NumeClasa implements NumeInterfatasauclass NumeClasa implements Interfata1, Interfata2, ...

    O clasa poate implementa mai multe interfete.

    Modificarea unei interfete implica modificarea tuturor claselor care implementeaza acea interfata.

    11 March 2011 1

  • ORGANIZARE

    Programare orientata pe obiecte

    Interfete Java

    Clase abstracte

    Metode abstracte

    Mostenire multipla prin interfete

    - in limbajul Java nu este permisa mostenirea multipla a claselor;- 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 demetode de la superinterfetele sale.O clasa mosteneste doar constantele unei interfete siresponsabilitatea implementarii metodelor sale.

    11 March 2011 1

  • ORGANIZARE

    Programare orientata pe obiecte

    Interfete Java

    Clase abstracte

    Metode abstracte

    Utilitatea interfetelor

    Interfetele sunt utile pentru:

    definirea unor similaritati intre clase independente fara a fortaartificial o legatura intre ele;

    posibilitatea implementarii unor clase prin mai multe modalitatisi folosirea lor intr-o maniera unitara;

    definirea unor grupuri de constante;

    11 March 2011 1

  • ORGANIZARE

    Programare orientata pe obiecte

    Interfete Java

    Clase abstracte

    Metode abstracte

    Tablouri

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

    Declararea vectorului:Tip[] numeVector; Tip numeVector[];

    Exemple int[] intregi;String adrese[];

    11 March 2011 1

  • ORGANIZARE

    Programare orientata pe obiecte

    Interfete Java

    Clase abstracte

    Metode abstracte

    Instantierea unui tablou- Operatia de alocare a memoriei (instantierea vectorului) serealizeaza 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 octetic = new char[10];

    //aloca spatiu pentru 10 caractere: 20 octeti

    11 March 2011 1

  • ORGANIZARE

    Programare orientata pe obiecte

    Tablouri

    Siruri de caractere

    15 June 2011 1

    Programare orientata pe obiecte

  • ORGANIZARE

    Programare orientata pe obiecte

    Tablouri

    Siruri de caractere

    15 June 2011 2

    Tablouri

    - tabloul este un obiect creat dinamic care poate fi assignatvariabilelor 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[];

  • ORGANIZARE

    Programare orientata pe obiecte

    Tablouri

    Siruri de caractere

    - delararea unui tablou nu creaza obiectul tablou si nici nu alocaspatiu de memorie pentru componente;Instantierea unui tablou- Operatia de alocare a memoriei (instantierea vectorului) serealizeaza intotdeauna prin intermediul operatorului new

    numeVector = new Tip[nrElemente];- in urma instantierii vor fi alocati:nrElemente * dimensiune(Tip) octeti necesari pentrumemorarea 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 3

  • ORGANIZARE

    Programare orientata pe obiecte

    Tablouri

    Siruri de caractere

    Intializarea (optional)- dupa declararea unui vector, acesta poate fi initializat cu valoriintiale, caz in care nu mai este instantiat (alocarea memoriei serealizeaza 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 cunrColoane elemente.

    15 June 2011 4

  • ORGANIZARE

    Programare orientata pe obiecte

    Tablouri

    Siruri de caractere

    Operatii asupra unui tablou

    - dimeniunea unui tablou se poate calcula cu ajutorul variabileilength.

    int []a = new int[5];// a.length are valoarea 5int 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

  • ORGANIZARE

    Programare orientata pe obiecte

    Tablouri

    Siruri de caractere

    15 June 2011 6

    Clasa java.util.Arrays ofera diverse metode foarte utile pentruprelucrarea 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.

  • ORGANIZARE

    Programare orientata pe obiecte

    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 7

  • ORGANIZARE

    Programare orientata pe obiecte

    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 vaatribui adresa acestuia din memorie (tabela de literali literalpool);- operatorul == aplicat pentru doua String uri testeaza dacaacestea ponteaza catre aceeasi adresa de memorie;- utilizarea operatorului new pentru un String conduce la creareaunui spatiu de memorie ;- se poate crea un tablou de String-uri :

    String [ ] nume = new String [5];nume[0] = Pop

    15 June 2011 8

  • ORGANIZARE

    Programare orientata pe obiecte

    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 9

  • ORGANIZARE

    Programare orientata pe obiecte

    Tablouri

    Siruri de caractere

    Clasa StringBuffer

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

    StringBuffer( ); //un sir cu capacitatea de 16 caractereStringBuffer(int capacitate);StringBuffer(String sir)

    Exemplu : StringBuffer a = new StringBuffer(Un sir de tipbuffer);

    15 June 2011 1

  • ORGANIZARE

    Programare orientata pe obiecte

    Tablouri

    Siruri de caractere

    Metode publice din clasa StrindBuffer

    int capacty();

    StringBuffer delete(int start, int end);

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

    int length();

    String substring(int start);

    15 June 2011 1

  • ORGANIZARE

    Programare orientata pe obiecte

    Tablouri

    Siruri de caractere

    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:

    tip.parseTip(String sir);

    Exemplu: int.parseInt(sir);double.parseDouble(sir).

    15 June 2011 1

  • ORGANIZARE

    Programare orientata pe obiecte

    Exceptii si erori

    Tratarea exceptiilor

    Ierarhia claselor cedescriu exceptii

    15 June 2011 1

    Programare orientata pe obiecte

  • ORGANIZARE

    Programare orientata pe obiecte

    Exceptii si erori

    Tratarea exceptiilor

    Ierarhia claselor cedescriu exceptii

    15 June 2011 2

    Erori si Exceptii

    Erorile si exceptiile reprezinta situatii particulare si anormalecare pot sa apara in timpul executiei unei aplicatii Java deintrare/iesire, imposibilitate de conversie de la un tip la altul).

    9 Erorile sunt situatii grave care , daca apar, duc la intrerupereaexecutiei programului (VirtualMachineError).

    9 Exceptiile sunt situatii care pot aparea mai frecvent si, deregula, problemele aparute se pot remedia. De regula, aplicatiiletrateaza aceste situatii particulare.

    Cand se produce o eroare in timpul executiei se creaza un obiectde tip exceptie ce va contine:

    - informatii despre exceptia respectiva;

    - starea programului in momentul producerii acelei exceptii.

  • ORGANIZARE

    Programare orientata pe obiecte

    Exceptii si erori

    Tratarea exceptiilor

    Ierarhia claselor cedescriu exceptii

    Crearea unui obiect de tip exceptie se numeste aruncarea uneiexceptii (throwing an exception).

    Secventa de cod dintr-o metoda care trateaza o anumita exceptiese numeste analizor de exceptie (exception handler).

    Interceptarea si tratarea ei se numeste prinderea exceptiei(catch the exception).

    In Java tratarea erorilor nu mai este o optiune ci oconstrangere.

    15 June 2011 3

  • ORGANIZARE

    Programare orientata pe obiecte

    Exceptii si erori

    Tratarea exceptiilor

    Ierarhia claselor cedescriu exceptii

    Prinderea si tratarea exceptiilor

    Tratarea exceptiilor se realizeaza prin intermediul blocurilor deinstructiuni try, catch si finally.O secventa de cod care trateaza anumite exceptii trebuie sa arateastfel:

    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 4

  • ORGANIZARE

    Programare orientata pe obiecte

    Exceptii si erori

    Tratarea exceptiilor

    Ierarhia claselor cedescriu exceptii

    Aruncarea exceptiilor

    - o metoda poate sa arunce exceptii catre alte metode;- metodele apelante fie implementeaza tratarea lor , fie la randullor arunca mai departe exceptiile respective.Aruncarea exceptiilor se realizeaza prin specificarea indeclaratia metodei a clauzei throws

    [modificatori] TipReturnat metoda([argumente])throws TipExceptie1, TipExceptie2, ...{...}

    O metoda care nu trateaza o anumita exceptie trebuieobligatoriu sa o arunce.

    15 June 2011 5

  • ORGANIZARE

    Programare orientata pe obiecte

    Exceptii si erori

    Tratarea exceptiilor

    Ierarhia claselor cedescriu exceptii

    15 June 2011 6

    Avantajele tratarii exceptiilor

    Prin modalitatea sa de tratare a exceptiilor, Java are urmatoareleavantaje fata de mecanismul traditional de tratare a erorilor:

    9 Separarea codului pentru tratarea unei erori de codul in care eapoate sa apara.

    9 Propagarea unei erori pana la un analizor de exceptiicorespunzator.

    9 Gruparea erorilor dupa tipul lor.- in Java exista clase corespunzatoare tuturor exceptiilor carepot aparea la executia unui program.De exemplu, clasa IOException se ocupa cu exceptiile ce potaparea la operatii de intrare/iesire si diferentiaza la randul ei altetipuri de exceptii, cum ar fi FileNotFoundException,EOFException, etc.

  • ORGANIZARE

    Programare orientata pe obiecte

    Exceptii si erori

    Tratarea exceptiilor

    Ierarhia claselor cedescriu exceptii

    Ierarhia claselor ce descriu exceptii

    - superclasa tuturor exceptiilor si erorilor estejava.lang.Throwable ( doar instantele acesteai pot aparea inclauzele 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 7

  • ORGANIZARE

    Programare orientata pe obiecte

    Exceptii si erori

    Tratarea exceptiilor

    Ierarhia claselor cedescriu exceptii

    Metode publice definite in clasa Throwable:

    public getMessage() - afiseaza detaliul unei exceptii;

    public printStackTrace() - afiseaza informatii complete despreexceptie si localizarea ei;

    public toString() - metoda mostenita din clasa Object, carefurnizeaza reprezentarea sub forma de sir de caractere aexcepiei.

    15 June 2011 8

  • ORGANIZARE

    Programare orientata pe obiecte

    Exceptii si erori

    Tratarea exceptiilor

    Ierarhia claselor cedescriu exceptii

    Clasa Throwable are doua subclase directe : Error: cazuri speciale de exceptii generate de functionarea

    anormala a echipamentului hard; un program Java nu trebuie satrateze aparitia acestor erori

    Exception: sunt exceptiile standard (soft) care trebuie tratate decatre programele Java.

    15 June 2011 9

  • ORGANIZARE

    Programare orientata pe obiecte

    Exceptii si erori

    Tratarea exceptiilor

    Ierarhia claselor cedescriu exceptii

    Exceptii la executie

    Exceptiile care provin strict din vina programatorului si nugenerate de o anumita situatie externa, cum ar fi lipsa unui fisier.

    Aceste exceptii au o superclasa comuna RuntimeException siin 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 1

  • ORGANIZARE

    Programare orientata pe obiecte

    Exceptii si erori

    Tratarea exceptiilor

    Ierarhia claselor cedescriu exceptii

    Crearea propriilor exceptii

    - exceptie proprie trebuie sa se incadreze in ierarhia exceptiilorJava;

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

    15 June 2011 1

  • ORGANIZARE

    Programare orientata pe obiecte

    Intrari si Iesiri

    Fluxuri primitive

    Fluxuri de procesare

    Fluxuri de tip fisier

    15 June 2011 1

    Programare orientata pe obiecte

  • ORGANIZARE

    Programare orientata pe obiecte

    Intrari si Iesiri

    Fluxuri primitive

    Fluxuri de procesare

    Fluxuri de tip fisier

    15 June 2011 2

    Intrari si iesiri

    Un flux este un canal de comunicatie serial unidirectional intredoua procese pe 8 biti sau 16 biti.

    Indiferent de tipul informatiilor, citirea/scrierea de pe/catre unmediu extern respecta urmatorul algoritm:

    deschide canal comunicatiewhile (mai sunt informatii) {citeste/scrie informatie;}inchide canal comunicatie;

    Clasele si intefetele standard pentru lucrul cu fluxuri se gasesc in pachetul java.io.

  • ORGANIZARE

    Programare orientata pe obiecte

    Intrari si Iesiri

    Fluxuri primitive

    Fluxuri de procesare

    Fluxuri de tip fisier

    Clasificarea fluxurilor

    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 3

  • ORGANIZARE

    Programare orientata pe obiecte

    Intrari si Iesiri

    Fluxuri primitive

    Fluxuri de procesare

    Fluxuri de tip fisier

    Fluxuri primitive- sunt responsabile cu citirea/scrierea efectiva a datelor, punandla dispozitie implementari ale metodelor de baza read/write.In functie de tipul sursei datelor, ele pot fi impartite astfel:

    FisierFileReader, FileWriterFileInputStream, FileOutputStream

    MemorieCharArrayReader, CharArrayWriterByteArrayInputStream, ByteArrayOutputStream- sunt folosite pentru scrierea/citirea informatiilor in/dinmemorie si sunt create pe un vector existent deja.

    15 June 2011 4

  • ORGANIZARE

    Programare orientata pe obiecte

    Intrari si Iesiri

    Fluxuri primitive

    Fluxuri de procesare

    Fluxuri de tip fisier

    Fluxuri de procesare- sunt responsabile cu preluarea datelor de la un flux primitiv siprocesarea acestora.

    BufferizareBufferedReader, BufferedWriterBufferedInputStream, BufferedOutputStream- sunt folosite pentru a introduce un buffer in procesul decitire/scriere a informatiilor.

    FiltrareFilterReader, FilterWriterFilterInputStream, FilterOutputStream-filtreaza automat datele citite sau scrise.

    15 June 2011 5

  • ORGANIZARE

    Programare orientata pe obiecte

    Intrari si Iesiri

    Fluxuri primitive

    Fluxuri de procesare

    Fluxuri de tip fisier

    15 June 2011 6

    Conversie octeti-caractereInputStreamReader, OutputStreamWriter

    Conversie tipuri de dateDataInputStream, DataOutputStreamFolosite la scrierea/citirea datelor de tip primitiv intr-un format binar.

    ConcatenareSequenceInputStreamConcateneaza mai multe fluxuri de intrare intr-unul singur .

    Un flux de procesare nu poate fi folosit decat impreuna cu unflux primitiv.

  • ORGANIZARE

    Programare orientata pe obiecte

    Intrari si Iesiri

    Fluxuri primitive

    Fluxuri de procesare

    Fluxuri de tip fisier

    Crearea unui flux- orice flux este un obiect al clasei ce implementeaza fluxulrespectiv.Crearea unui flux primitiv de date :FluxPrimitiv numeFlux = new FluxPrimitiv(dispozitivExtern);

    //crearea unui flux de intrare pe caractereFileReader in = new FileReader("fisier.txt");//crearea unui flux de intrare pe octetiFileInputStream in = new FileInputStream("fisier.dat");

    15 June 2011 7

  • ORGANIZARE

    Programare orientata pe obiecte

    Intrari si Iesiri

    Fluxuri primitive

    Fluxuri de procesare

    Fluxuri de tip fisier

    Fluxurile de procesare nu pot exista de sine statatoare ci sesuprapun pe un flux primitiv de citire/scriere a datelor.

    Constructorii claselor pentru fluxurile de procesare nu primescca argument un dispozitiv extern de memorare a datelor ci oreferinta la un flux primitiv.

    //crearea unui flux de intrare printr-un bufferBufferedReader in = new BufferedReader(new FileReader("fisier.txt"));

    15 June 2011 8

  • ORGANIZARE

    Programare orientata pe obiecte

    Intrari si Iesiri

    Fluxuri primitive

    Fluxuri de procesare

    Fluxuri de tip fisier

    Fluxuri pentru lucrul cu fisiere

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

    15 June 2011 9

  • ORGANIZARE

    Programare orientata pe obiecte

    Intrari si Iesiri

    Fluxuri primitive

    Fluxuri de procesare

    Fluxuri de tip fisier

    Observatii:- orice crearea a unui flux se realizeaza intr-un bloc try catch sau metoda in care este creat fluxul trebuie sa arunceexceptiile : FileNotFoundException, IOException.

    - un fisier se inchide cu ajutorul metodei close.

    15 June 2011 1

  • ORGANIZARE

    Programare orientata pe obiecte

    Intrari si Iesiri

    Fluxuri primitive

    Fluxuri de procesare

    Fluxuri de tip fisier

    Citirea si scrierea cu buffer-sunt folosite pentru a introduce un buffer (zona de memorie) in procesul de citire/scriere a informatiilorClasele pentru citirea/scrierea cu zona tampon sunt:

    BufferedReader, BufferedWriter - caractereBufferedInputStream, 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)

    15 June 2011 1

  • ORGANIZARE

    Programare orientata pe obiecte

    Intrari si Iesiri

    Fluxuri primitive

    Fluxuri de procesare

    Fluxuri de tip fisier

    - 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).

    BufferedWriter out = new BufferedWriter(new FileWriter("out.dat"), 1024)for(int i=0; i

  • ORGANIZARE

    Programare orientata pe obiecte

    Intrari si Iesiri

    Fluxuri primitive

    Fluxuri de procesare

    Fluxuri de tip fisier

    Metoda readLine- este specifica fluxurilor de citire cu buffer si permite citirealinie cu linie a datelor de intrare.

    BufferedReader br = new BufferedReader(new FileReader("in"))String linie;while ((linie = br.readLine()) != null) {

    //proceseaza linie}br.close();}

    15 June 2011 1

  • ORGANIZARE

    Programare orientata pe obiecte

    Intrari si Iesiri

    Fluxuri primitive

    Fluxuri de procesare

    Fluxuri de tip fisier

    Clasele DataInputStream si DataOutputStream

    - fluxurile mai sunt privite la nivel de octet, ci ca succesiuni de dateprimitive sau iruri de caractere.- clasele care ofera un astfel de suport implementeaza interfeteleDataInput, 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 /writeIntegerreadDouble/ writeDouble

    15 June 2011 1

  • ORGANIZARE

    Programare orientata pe obiecte

    Intrari si Iesiri

    Fluxuri primitive

    Fluxuri de procesare

    Fluxuri de tip fisier

    Analiza lexicala pe fluxuri (clasa StreamTokenizer)- proceseaza un flux de intrare de orice tip si il imparte inatomi 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 numericsval valoarea unui cuvant

    15 June 2011 1

  • ORGANIZARE

    Programare orientata pe obiecte

    Intrari si Iesiri

    Fluxuri primitive

    Fluxuri de procesare

    Fluxuri de tip fisier

    Clasa File- pune la dispozitie metode pentru manipularea fisierelor sidirectoarelor : metode pentru testarea existentei unuifisier/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-untext a tipurilor primitive i a irurilor, folosind expresii regulate.

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

    15 June 2011 1

  • ORGANIZARE

    Programare orientata pe obiecte

    Colectii de date

    Interferte de descriucolectii de date

    Implementare colectiide date

    Algoritm

    15 June 2011 1

    Programare orientata pe obiecte

  • ORGANIZARE

    Programare orientata pe obiecte

    Colectii de date

    Interferte de descriucolectii de date

    Implementare colectiide date

    Algoritm

    15 June 2011 2

    Colectii de date

    O colectie este un obiect care grupeaza mai multe elemente intr-o 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).

  • ORGANIZARE

    Programare orientata pe obiecte

    Colectii de date

    Interferte de descriucolectii de date

    Implementare colectiide date

    Algoritm

    Interfete ce descriu colectii de date

    Interfata Collection - modeleaza o colectie de date la nivelul celmai general.Unele implementari ale colectiilor de date pot permite duplicariale elementelor.public interface Collection {// Metode cu caracter generalint size();boolean isEmpty();void clear();// Operatii la nivel de elementboolean add(Object element);boolean remove(Object element);

    15 June 2011 3

  • ORGANIZARE

    Programare orientata pe obiecte

    Colectii de date

    Interferte de descriucolectii de date

    Implementare colectiide date

    Algoritm

    Interfata Set - modeleaza notiunea de multime in sensmatematic.Mosteneste metodele din interfata Collection, fara a avea altemetode specifice.Clasele standard care ofera implementari concrete ale acesteiinterfete sunt HashSet si TreeSet.

    Interfata List - descrie liste de elemente indexate.Listele pot contine duplicate si permit un control precis asuprapozitiei unui element prin intermediul unui index.Clase standard care implementeaza aceasta interfata sunt:ArrayList, LinkedList, Vector.Mosteneste metodele din interfata Collection adaugand metodepentru acces pozitional, cautare si iterare avansata.

    15 June 2011 4

  • ORGANIZARE

    Programare orientata pe obiecte

    Colectii de date

    Interferte de descriucolectii de date

    Implementare colectiide date

    Algoritm

    public interface List extends Collection {// Acces pozitionalObject get(int index);Object set(int index, Object element);void add(int index, Object element);Object remove(int index);// Cautareint indexOf(Object o);int lastIndexOf(Object o);// IterareListIterator listIterator();ListIterator listIterator(int index);// Extragere sublistaList subList(int from, int to);}

    15 June 2011 5

  • ORGANIZARE

    Programare orientata pe obiecte

    Colectii de date

    Interferte de descriucolectii de date

    Implementare colectiide date

    Algoritm

    15 June 2011 6

    Interfata Map : descrie structuri de date ce asociaza fiecaruielement o cheie unica, dupa care poate fi regasit.Ierarhia interfetelor derivate din Map este independenta deierarhia derivata din Collection.public interface Map {// Operatii la nivel de elementObject put(Object key, Object value);Object get(Object key);Object remove(Object key);// Vizualizari ale colectieipublic Set keySet();}Clase care implementeaza interfata Map sunt HashMap,TreeMap si Hashtable.

  • ORGANIZARE

    Programare orientata pe obiecte

    Colectii de date

    Interferte de descriucolectii de date

    Implementare colectiide date

    Algoritm

    Implementari ale colectiilor

    Clasele de baza care implementeaza interfete ce descriu colectiiau numele de forma : < Implementare >< Interfata > = structura interna folosit a pentrureprezentarea.

    15 June 2011 7

    Interfata ClasaSet HashSetSortedSet TreeSetList ArrayList, LinkedList

    VectorMap HashMap

    HashtableSortedMap TreeMap

  • ORGANIZARE

    Programare orientata pe obiecte

    Colectii de date

    Interferte de descriucolectii de date

    Implementare colectiide date

    Algoritm

    Algoritmi polimorficiAlgoritmii polimorfici sunt metode definite din clasa Collectionscare 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 intr-lista ordonata;

    min , max; swap - interschimba elementele de la doua pozitii specificateale unei liste;

    15 June 2011 8

  • ORGANIZARE

    Programare orientata pe obiecte

    Colectii de date

    Interferte de descriucolectii de date

    Implementare colectiide date

    Algoritm

    Iteratori

    Iteratorii sunt obiecte care permit parcurgerea secventiala aunei colectii de date.

    Iteratorii sunt descrisi de interfetele Enumeration, Iterator,ListIterator.Metode uzuale:boolean hasMoreElements( ) // daca mai sunt elemente deenumeratE nextElement( )boolean hasNext() //daca mai sunt elemente de parcurs

    15 June 2011 9

  • ORGANIZARE

    Programare orientata pe obiecte

    Serializarea datelor primitive

    Serializarea obiectelor

    15 June 2011 1

    Programare orientata pe obiecte

  • ORGANIZARE

    Programare orientata pe obiecte

    Serializarea datelor primitive

    Serializarea obiectelor

    15 June 2011 2

    Serializarea obiectelor

    Serializarea este o metoda ce permite transformarea unui obiectintr-o secventa de octeti stfel incat sa poata fi trimis printr-unflux de iesire.

    Procesul invers, de citire a unui obiect serializat pentru a-i refacestarea originala, se numeste deserializare.

  • ORGANIZARE

    Programare orientata pe obiecte

    Serializarea datelor primitive

    Serializarea obiectelor

    15 June 2011 3

    Utilitatea serializarii:

    persistenta obiectelor : pot fi memorate pentru a fi folosite idup ncheierea aplicaiei care le-a creat;

    transmiterea datelor in retea - aplicatiile ce ruleaza in retea potcomunica intre ele folosind fluxuri pe care sunt trimise, respectivreceptionate obiecte serializate;

    RMI (Remote Method Invocation) - este o modalitate prin caremetodele unor obiecte de pe o alta masina pot fi apelate ca sicum acestea ar exista local pe masina pe care ruleaza aplicatia.

  • ORGANIZARE

    Programare orientata pe obiecte

    Serializarea datelor primitive

    Serializarea obiectelor

    15 June 2011 4

    Serializarea datelor primitive

    Serializarea tipurilor primitive poate fi realizata fie prinintermediul fluxurilor:

    9 DataOutputStream/DataInputStream care implementeazainterfeta DataInput, care implementeaza interfeta DataOutput.

    9 ObjectOutputStream/ObjectInputStream.

    Interfetele ce declara metode de tipul readTipPrimitiv, respectivwriteTipPrimitiv pentru scrierea/citirea datelor primitive si asirurilor de caractere.

  • ORGANIZARE

    Programare orientata pe obiecte

    Serializarea datelor primitive

    Serializarea obiectelor

    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 obiectuluiMetodele pentru serializarea obiectelor sunt: writeObject, pentru scriere si readObject, pentru restaurare.

    15 June 2011 5

  • ORGANIZARE

    Programare orientata pe obiecte

    Applet-uri

    Ciclul de viata al unui applet

    Grafica Java

    15 June 2011 1

    Programare orientata pe obiecte

  • ORGANIZARE

    Programare orientata pe obiecte

    Applet-uri

    Ciclul de viata al unui applet

    Grafica Java

    15 June 2011 2

    Applet-uri

    Definitie Un applet reprezinta un program Java de dimensiunireduse ce gestioneaza o suprafata de afisare (container) carepoate fi inclusa intr-o pagina Web.

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

    clasa principlala trebuie specificata in documentul HTML cedescrie 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.

  • ORGANIZARE

    Programare orientata pe obiecte

    Applet-uri

    Ciclul de viata al unui applet

    Grafica Java

    Crearea unui applet simplu

    1. Scrierea codului : pentru a putea fi executata de browser,clasa principala a appletului trebuie sa fie publica.

    2. Salvarea fisierelor sursa : denumire_fisier.java.

    3. Compilarea :compilatorul javac apelat pentru fisierul ce contine appletul.

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

    15 June 2011 3

  • ORGANIZARE

    Programare orientata pe obiecte

    Applet-uri

    Ciclul de viata al unui applet

    Grafica Java

    Ciclul de viata al unui applet

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

    Initializarea : Este apelata metoda init ce permite initializareadiverselor variabile, citirea unor parametri de intrare, etc.Pornirea : Este apelata metoda start

    Executia propriu-zisa : Consta in interactiunea dintre utilizator sicomponentele afisate pe suprafata appletului;

    Oprirea temporara: Daca utilizatorul paraseste pagina Web in careruleaza appletul este apelata metoda stop a acestuia;

    Oprirea definitiva : La inchiderea tuturor instantelor browseruluifolosit pentru vizualizare, appletul va fi eliminat din memorie si va fiapelata metoda destroy a acestuia.

    15 June 2011 4

  • ORGANIZARE

    Programare orientata pe obiecte

    Applet-uri

    Ciclul de viata al unui applet

    Grafica Java

    Structura generala a unui applet

    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 5

  • ORGANIZARE

    Programare orientata pe obiecte

    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 laecranul grafic Java.Ecranul grafic Java se bazeaza pe pixeli si pe un sistem ortogonal deaxe.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 6

  • ORGANIZARE

    Programare orientata pe obiecte

    Applet-uri

    Ciclul de viata al unui applet

    Grafica Java

    Componente grafice AWT

    Toate componentele AWT sunt definte de clase proprii ce segasesc in pachetul java.awt. Button - butoane cu eticheta formata dintr-un text pe o singuralinie; 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 editareatextului: TextField (pe o singura linie) si TextArea (pe maimulte linii).

    15 June 2011 7

  • ORGANIZARE

    Programare orientata pe obiecte

    Applet-uri

    Ciclul de viata al unui applet

    Grafica Java

    Componentele AWT au peste 100 de metode comune, mostenite din clasa Component.PozitiegetLocation, getX, getY, getLocationOnScreen

    DimensiunigetSize, getHeight, getWidth

    Culoare (text si fundal)getForeground, getBackground

    15 June 2011 8


Recommended