Programare in Java

November 14, 2016 | Author: ReNeGaDe124 | Category: N/A
Share Embed Donate


Short Description

Programare in Java...

Description

1. Fie următoarea clasă Java: class C { int a; float x; boolean b; }

StabiliŃi care dintre următoarele instrucŃiuni 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 următorul 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 afişată valoarea: a) b) c) d)

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

3. Fie următorul 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 afişată 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Ńă oricâte clase cel mult o clasă oricâte interfeŃe

7. În Java o interfaŃă poate extinde: a) b) c) d)

cel mult o interfată oricâte interfeŃe cel mult o clasă oricâte clase

8. În Java o clasă poate implementa: a) b) c) d)

o clasă oricâte clase o interfaŃă oricâte interfeŃe

9. Fie următorul 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 afişa: a) b) c) d)

ABC A CBA C

10. Fie următorul 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 afişa: a) b) c) d)

3 3 2 3

4 2 2 3

11. Fie următorul 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 afişa: a) b) c) d)

0 5 5 0

5 1 7 1

12. Fie următorul 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, spaŃiile 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 următorul 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 afişa Popescu 314 Java 10, spaŃiile punctate din constructorul Student_2 al clasei Student_2 trebuie: a) să fie înlocuite cu instrucŃiunea super(ns,g); b) să fie înlocuite cu instrucŃiunile 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 interfeŃei Student este implementată în două clase diferite, Student_1 şi Student_2.

14. Fie următoarele declaraŃii î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; } }

StabiliŃi care dintre următoarele propoziŃii sunt adevărate: a) definiŃia clasei Patrat_1 este incorectă deoarece nu implementeză metoda perimetru a interfeŃei Patrat; b) constructorul clasei Pătrat_2 este incorect deoarece nu are acces la pointerul this; c) constructorul clasei Pătrat_2 este incorect deoarece nu are apelează constructorul superclasei Patrat_1; d) definiŃia clasei Patrat_2 este incorectă deoarece nu implementeză metoda aria a interfeŃei Patrat.

15. Fie următorul 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()); } }

StabiliŃi care dintre următoarele propoziŃii sunt adevărate: a) programul este incorect deoarece în funcŃia main se instanŃiază o interfaŃă, ci nu o clasă; b) programul este corect şi după rulare va afişa 140.0; c) programul este incorect deoarece în clasa Patrat_1 se redefineşte ca şi data membru constanta L din interfaŃa Patrat; d) programul este corect şi după rulare va afişa 100.0 40.0. 16. Fie următorul 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()); } }

StabiliŃi care dintre următoarele propoziŃii sunt adevărate: a) programul este incorect deoarece apare un conflict de nume pentru ca în interfeŃele Patrat şi Dreptunghi sunt definite metode cu aceiasi signatura, iar clasele Patrulater_1 şi Patrulater_2 implementează fiecare ambele interfeŃe; b) programul este incorect deoarece în interfeŃele 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 afişa 100.0 40.0 200.0 60.0; d) programul este incorect deoarece în funcŃia main i se atribuie instanŃei d a interfeŃei Dreptunghi un obiect din clasa Patrulater_1 , iar instanŃei p a interfeŃei Patrat un obiect de tip Patrulater_2 (care, de fapt, abstractizează noŃiunea de dreptunghi). 17. Considerăm următorul program Java: class C { int a,b; public C(int x, int y) { a=x; b=y; f(); g(); } void f() { while(a (shift la dreapta fara semn) operatorul + pentru concatenarea sirurilor: “sir 1” +”sir2”

19 February 2011

1

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

1

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

1

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

1

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

1

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

1

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

1

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

2

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

3

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

4

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

5

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

6

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

7

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

8

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

9

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

1

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

1

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

1

Programare orientata pe obiecte ORGANIZARE

Definirea claselor

Ciclul de viata al unui obiect

Domeniul de vizibilitate al membrilor unei clase

4 March 2011

1

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

1

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

2

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

3

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

4

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

5

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

6

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

7

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

8

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

9

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

1

Programare orientata pe obiecte ORGANIZARE

Clase abstracte

Programare orientata pe obiecte

Metode abstracte

Interfete Java

11 March 2011

1

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

2

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

3

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

4

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

5

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

6

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

7

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

8

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

9

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

1

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

1

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

1

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

1

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

1

Programare orientata pe obiecte ORGANIZARE

Tablouri

Programare orientata pe obiecte

Siruri de caractere

15 June 2011

1

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

2

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

3

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

4

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 = structura interna folosit a pentru reprezentarea.

Interfata

Clasa

Set

HashSet

SortedSet

TreeSet

List

ArrayList, LinkedList Vector

Map

HashMap Hashtable

SortedMap

TreeMap

15 June 2011

7

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

8

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

9

Programare orientata pe obiecte ORGANIZARE

Serializarea datelor primitive

Programare orientata pe obiecte

Serializarea obiectelor

15 June 2011

1

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

2

Programare orientata pe obiecte ORGANIZARE Utilitatea serializarii: Serializarea datelor primitive

¾ persistenta obiectelor : pot fi memorate pentru a fi folosite şi după încheierea aplicaţiei 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

3

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

4

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

5

Programare orientata pe obiecte ORGANIZARE

Applet-uri

Programare orientata pe obiecte

Ciclul de viata al unui applet

Grafica Java

15 June 2011

1

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

2

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

3

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

4

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

5

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

6

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

7

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

8

View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF