Documente Academic
Documente Profesional
Documente Cultură
Programare Java
2016
Elementele de bază ale limbajului Java
Cuprins
1. Structura lexicală a limbajului Java
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI
3. Tablouri
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
4. Structuri de control
5. Clase și obiecte
6. Pachete Java
7. Interfețe Java
8. Excepții
Elementele de bază ale limbajului Java
1. Structura lexicală a limbajului Java
Unități lexicale:
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI
spații libere
identificatori
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
comentarii
separatori
literali
cuvinte cheie
operatori
Elementele de bază ale limbajului Java
1. Structura lexicală a limbajului Java
Spațiile libere
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI
- caracterul spațiu: ‘ ’
- terminatori de linie:
LF (linefeed), ‘\n’
CR LF
Elementele de bază ale limbajului Java
1. Structura lexicală a limbajului Java
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI
începe cu o cifră;
- limbajul Java este case-sensitive, adică face diferențierea între literele mari și
programul
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
clasic
/* Acesta este un comentariu clasic. El poate fi scris pe mai multe rânduri. Este
ignorat de compilator. */
de linie
/**
* Clasa PlasareVapoare citește informațiile introduse de utilizator și stabilește
* pozițiile obiectelor Vapor
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
*
* @version 1.0
* @author Alex
*/
(literalul începe cu cifra 0)sau binar. Pentru tipul long se adaugă sufixul l sau L.
Ex :100, 10247860, 2000L, 0261, 0x7, 0xBA12, 065l
Literalii întregi sunt implicit de tip int.
flotanți - corespund numerelor în virgulă mobilă. Pentru valori de tip float se
adaugă sufixul f sau F, iar pentru valori de tip double se adaugă sufixul d sau D.
Ex: 3.14, 63f, 134e-3, 98.21d
Literalii flotanți sunt implicit de tip double.
Elementele de bază ale limbajului Java
1. Structura lexicală a limbajului Java
program
Clasificare:
atribuire: =
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
int a;
a=7;
Carte A, B;
A=B; unari: + - ++ --
aritmetici:
binari: + - * / %
byte b1, b2 = -1;
int a = 35/4;
b1= ++ b2;
Elementele de bază ale limbajului Java
1. Structura lexicală a limbajului Java
relaționali - compară operanzii pentru a determina relația dintre ei,
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI
& și
| sau
^ sau exclusiv
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
~ complementare
<< deplasare stânga cu semn
>> deplasare dreapta cu semn
>>> deplasare dreapta fără semn
condițional: ? :
expresie ? val1 : val2
Ex: max = ( a>b) ? a : b;
Elementele de bază ale limbajului Java
1. Structura lexicală a limbajului Java
de concatenare șiruri de caractere: +
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI
int a = 12;
float x = 12.5;
boolean c = true;
Object obj = new Object ( );
sirRez = sir1 + a; // Afișare: 12
sirRez = sir1 + x; // Afișare: 12.5
sirRez = sir1 + c; // Afișare: true
sirRez = sir1 + obj; // Afișare: Object@12123
Elementele de bază ale limbajului Java
1. Structura lexicală a limbajului Java
de atribuire combinați:
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI
operatorul virgulă: ,
-este folosit pentru evaluarea secvențială a operațiilor
Exemplu:
int a=1, b=2, c=3;
Obs. În Java nu există operatorul sizeof din C++.
Elementele de bază ale limbajului Java
2. Tipuri de date și variabile
Tipurile de date se împart în:
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI
primitive
Dimensiunea Valoarea minimă a Valoarea maximă a
Tip reprezentării (în biți) domeniului domeniului
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
referințe:
tablouri, clase, interfețe
Elementele de bază ale limbajului Java
2. Tipuri de date și variabile
Variabilele - reprezintă identificatori ai unor referințe de memorie
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI
x=10;
final float PI=3.1415;
String sir=”Acesta este un sir de caractere”;
char k=’F’;
lista _modificatori :
public, private, static, final, protected, transient, volatile
Elementele de bază ale limbajului Java
2. Tipuri de date și variabile
Variabila – este definită într-un domeniu de vizibilitate (scope)
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI
class Scope {
int classScope; // vizibilă în toată clasa Scope
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
int x;
int z = x + 3; // Eroare la compilare! Variabila x trebuie
//inițializată înainte de a fi folosită
}
}
variabilele de instanță – sunt inițializate implicit cu o valoare, astfel:
întregi 0
nr în virgulă mobilă 0.0
booleene false
referințe null
Elementele de bază ale limbajului Java
2. Tipuri de date și variabile
class Carte {
private int nrPag;
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI
Class TestCarte {
public static void main ( String [ ] args) {
Carte una = new Carte ( ) ;
System.out.println(“ Cartea are un nr de pag: “ + una.getNr( ) );
System.out.println(“ Cartea are titlul: “ + una.getTitlu( ) );
}
}
Elementele de bază ale limbajului Java
2. Tipuri de date și variabile
variabilele statice dintr-o clasă – sunt inițializate înainte de a putea
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI
sau
tip_elemente [ ] numeTablou;
Exemple:
int [ ] tablouInt=new int [20];
char tablouCar[ ] ={‘t’, ‘a’, ‘b’, ‘l’, ‘o’, ‘u’};
float tablouReal [ ] = new float[5];
Elementele de bază ale limbajului Java
3. Tablouri
Exemple:
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI
public static native void arraycopy( Object sursă, int poziție_sursă, Object dest,
int poziție_dest, int lung)
Exemple:
int a [ ] = { 1,2,3 };
int b [ ] = new int [3];
// varianta cu arraycopy
System. arraycopy(a, 0, b, 0, a.length);
//varianta element cu element
for( int i=0; i<a.lenght; i++)
b[i]=a[i];
Elementele de bază ale limbajului Java
4. Structuri de control
Instrucțiuni de selecție : if, if-else, if-else-if, switch
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI
- oferă posibilitatea execuției selective a unor secvențe de cod în funcție de valoarea unei
expresii.
class IfElse {
public static void main(String[] args) {
int testscore = 76;
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
char grade;
if (testscore >= 90) {
grade = 'A';
} else if (testscore >= 80) {
grade = 'B';
} else if (testscore >= 70) {
grade = 'C';
} else if (testscore >= 60) {
grade = 'D';
} else {
grade = 'F';
}
System.out.println("Grade = " +
grade);
}
Elementele de bază ale limbajului Java
4. Structuri de control
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI
class SwitchDemo {
public static void main(String[] args) {
int luna = 8;
switch (luna) {
case 1: System.out.println(“Ianuarie"); break;
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
- execuția repetată a unei părți din program până când o anumită condiție nu
este îndeplinită.
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
4. Structuri de control
Instrucțiuni repetitive: while, do-while, for
Elementele de bază ale limbajului Java
Elementele de bază ale limbajului Java
4. Structuri de control
Instrucțiuni de salt: break, continue, return
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI
4. Structuri de control
Instrucțiuni de salt: break, continue, return
Elementele de bază ale limbajului Java
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
4. Structuri de control
Instrucțiuni de salt: break, continue, return
Elementele de bază ale limbajului Java
Elementele de bază ale limbajului Java
5. Clase și obiecte
Class Name: Circle A class template
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI
Data Fields:
radius is _______
Methods:
getArea
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
Metode
protected - accesul este permis de oriunde din interiorul pachetului și în plus din
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
clasele derivate.
în care sunt definiți și nu returnează nici un tip de date, nici măcar void.
class Cerc {
int raza, x,y;
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
// formal al metodei
this.autor=autor; // this.autor referențiază variabila de instanță
// iar autor parametrul formal
this.carte=carte;
}
}
Tipul de date creat prin definirea unei clase poate fi folosit prin declararea
de obiecte de acest tip. Crearea unui obiect presupune declararea și
instanțierea sa.
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
java.util – clase și interfețe utile: Vector, Stack, Random, Date, Timer etc.
Windowing Toolkit)
Interface)
java.security – conține clase care asigură mecanisme de securitate: criptare,
autentificare
java.math – conține clasele în care sunt definite operații matematice
java.text – oferă support pentru formatarea textelor
java.lang.reflect – introspecție
javax.swing – conține clasele pentru interfața grafică cu utilizatorul, extinde
funcționalitatea claselor din pachetul java.awt.
Elementele de bază ale limbajului Java
6. Pachete Java
utilizarea unei clase ( excepție: java.lang) din alt pachet impune specificarea
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI
import java.util.*;
import java.util.Vector;
Această soluție este utilă în cazul în care se dorește utilizarea unui clase cu
package numePachet;
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
le poți corecta?
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
Nu toate referințele sunt folosite, iar unele obiecte sunt referite de mai
multe variabile. Conectează prn linii referințele cu obiectele
corespunzătoare
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
Elementele de bază ale limbajului Java
6. Interfețe Java
Despre moștenire și polimorfism
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI
6. Interfețe Java
Elementele de bază ale limbajului Java
Elementele de bază ale limbajului Java
6. Interfețe Java
Exemplu: proiectarea arborelui de moștenire pentru un simulator de animale
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI
6. Interfețe Java
Elementele de bază ale limbajului Java
Elementele de bază ale limbajului Java
6. Interfețe Java
Putem scrie:
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI
Lup unLup = new Lup(); // referința și obiectul sunt de același tip (Lup)
sau
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
În exemplul prezentat:
Clase abstracte: Animal, Canine, Feline
Clase concrete: Hipopotam, Lup, Caine, Tigru, Leu, Pisica.
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
Orice clasă care nu extinde explicit o altă clasă extinde implicit clasa Object.
-Cum putem modifica clasa Caine astfel încât să includă și câteva metode
specifice animalelor de companie?
O solutie posibilă: adăugăm noile metode în clasa Caine, dar în acest caz nu
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
cărora le aparțin.
Care sunt avantajele și dezavantajele acestei metode?
În concluzie, avem nevoie de:
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
6. Interfețe Java
Elementele de bază ale limbajului Java
Elementele de bază ale limbajului Java
6. Interfețe Java
Interfețe
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI
AnimalDe Companie
}
Implementarea unei interfețe
public class Caine extends Canine implements AnimalDeCompanie {
public void estePrietenos( ) {…} //trebuie implementate metodele interfeței
public void seJoaca( ) ;
public void seMisca( ) {…} // acestea sunt suprascrieri obișnuite ale
//metodelor moștenite
public void mananca( ) {…}
}
Elementele de bază ale limbajului Java
6. Interfețe Java
clase din structuri diferite de moștenire pot implementa aceeași
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI
interfață.
O clasă poate implementa interfețe multiple.
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI
Programare Java
2016
Elementele de bază ale limbajului Java
Cuprins
1. Structura lexicală a limbajului Java
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI
3. Tablouri
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
4. Structuri de control
5. Clase și obiecte
6. Pachete Java
7. Interfețe Java
8. Excepții
Elementele de bază ale limbajului Java
6. Pachete Java
Pachetele - reprezintă o colecție de clase și interfețe înrudite
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI
Pachete standard:
java.lang – conține clasele de bază ale limbajului Java
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
java.util – clase și interfețe utile: Vector, Stack, Random, Date, Timer etc.
Windowing Toolkit)
Interface)
java.security – conține clase care asigură mecanisme de securitate: criptare,
autentificare
java.math – conține clasele în care sunt definite operații matematice
java.text – oferă support pentru formatarea textelor
java.lang.reflect – introspecție
javax.swing – conține clasele pentru interfața grafică cu utilizatorul, extinde
funcționalitatea claselor din pachetul java.awt.
Elementele de bază ale limbajului Java
6. Pachete Java
utilizarea unei clase ( excepție: java.lang) din alt pachet impune specificarea
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI
import java.util.*;
import java.util.Vector;
Această soluție este utilă în cazul în care se dorește utilizarea unui clase cu
package numePachet;
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
6. Interfețe Java
Elementele de bază ale limbajului Java
Elementele de bază ale limbajului Java
6. Interfețe Java
Exemplu: proiectarea arborelui de moștenire pentru un simulator de animale
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI
6. Interfețe Java
Elementele de bază ale limbajului Java
Elementele de bază ale limbajului Java
6. Interfețe Java
Putem scrie:
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI
Lup unLup = new Lup(); // referința și obiectul sunt de același tip (Lup)
sau
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
În exemplul prezentat:
Clase abstracte: Animal, Canine, Feline.
Clase concrete: Hipopotam, Lup, Caine, Tigru, Leu, Pisica.
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
dacă o clasă are cel puțin o metodă abstractă, atunci şi clasa trebuie să
fie declarată abstractă.
nu putem declara o metodă abstractă într-o clasă concretă.
Elementele de bază ale limbajului Java
6. Interfețe Java
Orice clasă Java extinde clasa Object.
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI
Orice clasă care nu extinde explicit o altă clasă extinde implicit clasa Object.
-Cum putem modifica clasa Caine astfel încât să includă și câteva metode
specifice animalelor de companie?
O solutie posibilă: adăugăm noile metode în clasa Caine, dar în acest caz nu
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
cărora le aparțin.
Care sunt avantajele și dezavantajele acestei metode?
În concluzie, avem nevoie de:
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
6. Interfețe Java
Elementele de bază ale limbajului Java
Elementele de bază ale limbajului Java
6. Interfețe Java
Interfețe
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI
AnimalDe Companie
}
Implementarea unei interfețe
public class Caine extends Canine implements AnimalDeCompanie {
public void estePrietenos( ) {…} //trebuie implementate metodele interfeței
public void seJoaca( ) ;
public void seMisca( ) {…} // acestea sunt suprascrieri obișnuite ale
//metodelor moștenite
public void mananca( ) {…}
}
Elementele de bază ale limbajului Java
7. Interfețe Java
Definirea unei interfețe
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI
}
Implementarea unei interfețe
public class Caine extends Canine implements AnimalDeCompanie {
public void estePrietenos( ) {…} //trebuie implementate metodele interfeței
public void seJoaca( ) {…}
public void seMisca( ) {…} // acestea sunt suprascrieri obișnuite ale
//metodelor moștenite
public void mananca( ) {…}
}
Elementele de bază ale limbajului Java
7. Interfețe Java
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI
cheie implements.
radical de ordinul doi dintr-un număr negativ, accesarea unui element din
afara spațiului alocat unui vector (ArrayIndexOutOfBoundsException),
inversa unei matrici singulare, scoaterea unui element dintr-o stivă goală,
încercarea de a accesa un membru al unui obiect printr-o referință nulă
(NullPointerException) etc.
Erorile pot fi cauzate și de echipamentul hardware.
Elementele de bază ale limbajului Java
8. Excepții
Exemplu:
public class ExempluExceptii {
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI
}
}
public static void main(String[] args) {
int[ ] vec = new int[10];
init(vec, 25, -1);
}
}
În urma execuției codului de mai sus va fi generată o excepție, programul se
va opri și se va afișa mesajul de eroare:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException:
at ExempluExceptii.init(ExempluExceptii.java:5)
at ExempluExceptii.main(ExempluExceptii.java:10
Elementele de bază ale limbajului Java
8. Excepții
Există excepții predefinite ( ca în exemplul anterior) și excepții definite de
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI
utilizator.
Java implementează un mecanism eficient de lucru cu excepțiile, care
permite programatorului să preia controlul programului în momentul în care
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
finally. Blocul try conține secvența de cod care poate genera o excepție. La
apariția unei excepții execuția secvenței din acest bloc este oprită și se caută
blocul catch corespunzător pentru tratarea excepției respective. În cazul în
care la execuție nu apare nici o excepție, secvența de cod din blocul try se
execută până la capăt după care se trece la execuția secvenței din blocul
finally (dacă acesta este prezent) și apoi se va ieși din try-catch-finally.
Corespunzător unui bloc try pot exista mai multe blocuri catch. Secvența de
cod din blocul finally se execută indiferent dacă apare sau nu o excepție.
Elementele de bază ale limbajului Java
8. Excepții
Forma generală de tratare a excepţiilor este:
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI
try {
//instrucţiuni ce pot declanşa excepţii
}
[catch(TipExcepție1 obiectExcepție) {
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
try {
FileReader f = new FileReader("input.dat");
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
}
Elementele de bază ale limbajului Java
8. Excepții
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI
start try
start doRiscant
sfarsit doRiscant
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
sfarsit try
finally
sfarsit main
Dacă înlocuim linia String test = “nu”; cu String test = “da”; ieșirea va fi:
start try
start doRiscant
o exceptie
finally
sfarsit main
Elementele de bază ale limbajului Java
8. Excepții
Java pune la dispoziție o ierarhie de clase de tip excepție. La baza ierarhiei
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI
Compilatorul verifică toate excepțiile, mai puțin pe cele derivate din clasa
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI
din cod.
8. Excepții
Ierarhia claselor ce descriu excepţii
Elementele de bază ale limbajului Java
Elementele de bază ale limbajului Java
8. Excepții
Există două tipuri de excepții:
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI
Verificate :
- Sunt excepții ce trebuie incluse în lista de excepții aruncate de o metodă;
- Compilatorul verifică dacă există blocuri try-catch care tratează aceste excepții.
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
Elementele de bază ale limbajului Java
8. Excepții
Neverificate :
-Sunt excepții ce nu trebuie neapărat incluse în lista de excepții aruncate de o metodă;
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI
-Compilatorul nu verifică dacă există un bloc catch care tratează aceste excepții.
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
Elementele de bază ale limbajului Java
8. Excepții
Excepţii create de utilizator
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI
Programare Java
2016
Fire de execuție în Java
Cuprins
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI
1. Introducere
7. Întrebări
Fire de execuție în Java
1. Introducere
Conceptul de multitasking
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI
Mașina JVM apelează metoda main( ). Dacă metoda main( ) lansează un nou fir de
execuție, firul de execuție principal poate fi temporar înghețat și începe rularea
noului fir de execuție. Mașina JVM comută execuția între firul nou și firul principal,
până când sunt executate ambele fire.
Fire de execuție în Java
2. Crearea unui fir de execuție
Pentru a dezvolta programe multithread, există două clase și o interfață în pachetul
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI
java.lang:
Thread
clasa Thread
void join( )
clasa ThreadGroup
void start ( )
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
1. Crearea unei clase ce extinde clasa Thread și supradefinirea metodei run ().
@Override
public void run ( ) {
// codul firului de execuție
}
}
fir.start( );
Fire de execuție în Java
2. Crearea unui fir de execuție
Exemplu:
class TestFir {
public static void main(String [] args ) {
FirExecutie t = new FirExecutie ();
// datorită extinderii clasei Thread putem apela metoda start ()
// și această metodă va apela metoda run ().
//start() este o metodă a clasei Thread.
t.start();
} // sf. main()
} // sf. clasa TestFir
Fire de execuție în Java
2. Crearea unui fir de execuție
Crearea unui fir de execuție utilizând interfața Runnable
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI
MyThread.start ( );
Exemplu:
go( );
}
public void go( ) {
doMore( );
} 2
public void doMore( ) {
System.out.println(" In varful stivei");
}
}
Fire de execuție în Java
2. Crearea unui fir de execuție
Crearea unui fir de execuție utilizând interfața Runnable
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI
class ThreadTest {
public static void main ( String [ ] args) {
Runnable threadJob = new MyRunnable( );
Thread myThread = new Thread(threadJob);
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
myThread.start( ); // 1
System. out. println("Inapoi in main");
}
}
1 2
Fire de execuție în Java
2. Crearea unui fir de execuție
Constructori şi metode ale clasei Thread:
Thread(Runnable, String) Creează un obiect Thread cu un nume specificat, dintr-un obiect care
implementează interfaţa Runnable.
run() Implementeză metoda run a interfeţei Runnable. Această metodă trebuie suprascrisă
în toate subclasele şi conţine codul ce este executat de firul de execuţie.
start() Trece firul de execuţie în starea EXECUTABIL, astfel poate fi lansat în execuţie de către
planificatorul JVM.
getName() Returnează numele firului de execuţie.
currentThread() Este o metodă statică ce returnează o referinţă la firul curent aflat în execuţie.
sleep(long) Este o metodă statică ce trece firul curent aflat în execuţie în starea BLOCAT pentru un
număr de milisecunde specificat ca parametru, astfel încât alt fir de execuţie să poată
rula.
Interrupt() Întrerupe execuţia unui fir.
în execuție (running)
terminat
BLOCAT
Planificatorul JVM de
execuţie a firelor poate
3 decide lansarea în
execuţie a firului.
EXECUTABIL
% java ThreadTest
In varful stivei
Inapoi in main
% java ThreadTest
In varful stivei
Inapoi in main
% java ThreadTest
In varful stivei
Inapoi in main
% java ThreadTest
Inapoi in main
In varful stivei
Fire de execuție în Java
3. Stările unui fir de execuție
“Adormirea” unui fir de execuție:
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI
try {
Thread.sleep(2000);
} catch (InterruptedException ex) {
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
ex.printStackTrace( );
}
-fiecare fir de execuție are același lucru de făcut: execută un ciclu, afișând numele
firului de execuție curent la fiecare iterație.
- se va crea o instanță Runnable.
- se vor crea cele două fire de execuție, folosind același obiect Runnable (aceeași
sarcină de făcut).
- se denumesc firele de execuție.
- fiecare fir de execuție va parcurge ciclul for afișându-și de fiecare dată numele.
Fire de execuție în Java
4. Crearea și lansarea a două fire de execuție
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI
alfa.setName(“Primul fir”);
beta.setName(“Al doilea fir”);
alfa.start( );
beta.start( );
}
-Două sau mai multe fire de execuție care au acces la același obiect pot duce
un număr întreg.
- cu cât acest nivel este mai mare cu atât firul de execuție va avea
prioritate mai mare la resurse, acest lucru este determinat de varianta de
implementare a JVM.
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
}
public void increment( ) {
int i=val; // partea critică a codului: adăugăm o unitate la valoarea pe care o
val=i+1; // avea în momentul “citirii” ( nu la valoarea curentă)
}
}
public class TestSincro {
public static void main (String [ ] args) {
Sincro job = new Sincro( ) ;
Thread alfa = new Thread(job);
Thread beta = new Thread(job);
alfa.start( );
beta.start( );
}
}
Fire de execuție în Java
6. Sincronizarea firelor de execuție
problema actualizării pierdute
O posibilă rulare a programului anterior:
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI
synchronized (this) {
met2( );
met3( );
}
}
Atunci când folosim cuvântul cheie synchronized în interiorul unei metode, nu în
declarația acesteia, trebuie să-i furnizăm ca argument obiectul a cărui cheie trebuie
să o obțină firul de execuție.
Conceptul de monitor: obiect care permite numai și numai unui singur fir de
execuție să apeleze o metodă a obiectului, la un moment dat.
Fire de execuție în Java
6. Sincronizarea firelor de execuție
problema actualizării pierdute
O posibilă execuție a programului după sincronizarea metodei increment( ):
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI
-ș.a.m.d.
Fire de execuție în Java
6. Sincronizarea firelor de execuție
blocajul firelor de execuție
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI
- apare atunci când două fire de execuție dețin fiecare câte o cheie de care are
nevoie celălalt fir.
- Java nu are un mecanism pentru rezolvarea blocajelor.
- este sarcina programatorului să proiecteze corect programele, urmărind ordinea în
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
- prin apelul unui metode wait( ) a unui obiect, firul de execuție din care se face
acest apel trece în starea ÎN AŞTEPTARE.
- firul rămâne în această stare până când un alt fir de execuție va apela una din
metodele notify( ) pentru același obiect.
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
Programare Java
2016
Interfața grafică cu utilizatorul
Cuprins
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI
1. Introducere
2. AWT – generalități
3. Clasa Component
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
4. Clasa Container
5. Layout Manager
6. Clasa Panel
7. Evenimente generate de componente
8. Componente de tip ferestre
9. Componente AWT de lucru cu meniuri
10. Componente AWT simple
Interfața grafică cu utilizatorul
1. Introducere
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI
java.awt
java.awt.event
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
Obiectele grafice:
Component
MenuComponent
Prin componentă vom înţelege orice obiect care poate avea o reprezentare grafică
AWTEvent
java.awt.event.
Interfața grafică cu utilizatorul
2. AWT – generalități
Exemplu: o fereastră cu un buton
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI
import java.awt.*;
class Interfata extends Frame
{ public Interfata(String s)
{ //creare fereastra
Frame f = new Frame (s);
setBackground(Color.green);
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
Componentele AWT sunt definite de clase din pachetul java.awt, aceste clase
pentru a grupa mai multe obiecte de acest tip există clasa CheckBoxGroup).
colțului stânga sus (x,y) a formei rectangulare. Poziția este relativă la componenta părinte.
public boolean getCursor( )
public void setCursor(Cursor c)
-returnează/setează forma cursorului. Java permite o serie de tipuri de cursor, definite prin
constantele din clasa Cursor (DEFAULT_CURSOR, CROSSHAIR_CURSOR, TEXT_CURSOR,
WAIT_CURSOR, HAND_CURSOR)
public void list( )
public void list(PrintStream out)
public void list(PrintWriter out)
- afișează o serie de informații legate de componentă la consola standard sau la alte stream-
uri.
Interfața grafică cu utilizatorul
4. Clasa Container
Suprafețe de afișare
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI
fiecare obiect de tip Container (Applet, Frame, Panel etc) are asociat un
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
LayoutManager.
FlowLayout
BorderLayout
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
GridLayout
CardLayout
GridBagLayout
Pe langa aceşti gestionari, mai există şi cei din modelul Swing care vor fi prezentaţi în
-Implicit, componentele sunt centrate pe fiecare linie iar distanța implicită între
applet-urilor.
Interfața grafică cu utilizatorul
5. Layout Manager
Exemplu: gestionarul FlowLayout
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI
- împarte suprafața de afișare în cinci regiuni: sud, nord, est, vest și centru.
componentei fiind calculată astfel încât să ocupe întreg spațiul de afișare din regiune.
-Pentru a adăuga mai multe componente grafice într-una din cele cinci regiuni, acestea
atributele statice ale clasei BorderLayout: NORTH, SOUTH, EAST, WEST, CENTER.
respectiv
CardLayout.
Interfața grafică cu utilizatorul
5. Layout Manager
Exemplu: gestionarul CardLayout
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI
}
public void actionPerformed ( ActionEvent e) {
CardLayout gestionar = ( CardLayout ) tab. getLayout ();
gestionar . show (tab , e. getActionCommand ());
}
public static void main ( String args []) {
TestLayout f = new TestLayout ();
f. setVisible (true);
}
}
Interfața grafică cu utilizatorul
5. Layout Manager
Gestionarul GridBagLayout
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI
-Suprafața de afișare este un tabel, însă numărul de linii și de coloane sunt determinate
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
-Modul de afișare a unei componente se specifică prin asocierea unui obiect de tip
- Cele mai utilizate constrângeri sunt specificate prin următoarele variabile din clasa
GridBagConstraints:
componenta.
fill – specifică dacă o componentă va ocupa tot spațiul pe care îl are destinat, valorile
anchor – folosită atunci când componenta este mai mică decât suprafața sa
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
valoarea 1.
Interfața grafică cu utilizatorul
6. Clasa Panel
- Oferă un cadru de plasare a altor componente grafice și nu are o
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI
reprezentare vizibilă.
- clasa Panel este derivată din clasa Container, nu adaugă alte metode celor
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
unui buton de mouse, manevrarea barei de derulare, marcarea unei opțiuni într-un meniu,
acționarea unui buton este descris de clasa ActionEvent, cel generat de modificarea unui
text este descris de clasa TextEvent etc. Toate aceste clase sunt derivate din clasa
AWTEvent.
Interfața grafică cu utilizatorul
7. Evenimente generate de componente
O clasă consumatoare de evenimente specifică în declarația sa că va asculta evenimente
de un anumit tip, prin implementarea unei interfețe specifice tipului de eveniment.
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI
Exemplu:
...
}
}
3
Interfața grafică cu utilizatorul
7. Evenimente generate de componente
Tratarea evenimentelor – pe scurt:
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI
3. Declară clasa care “ascultă” evenimente, clasa implementează interfeţe specifice fiecărui tip de
eveniment – acestea descriu metode ce vor fi apelate automat la apariţia evenimentelor.
import java.awt.*;
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
implements WindowListener
import java.awt.event.*;
public class Handler {
public void windowActivated(WindowEvent e) {}
public void windowClosed(WindowEvent e) {}
public void windowClosing(WindowEvent e) {
Window w = e.getWindow();
w.setVisible(false);
w.dispose();
System.exit(0);
}
public void windowDeactivated(WindowEvent e) {}
public void windowDeiconified(WindowEvent e) {}
public void windowIconified(WindowEvent e) {}
public void windowOpened(WindowEvent e) {}
}
Interfața grafică cu utilizatorul
7. Evenimente generate de componente
Tratarea evenimentelor – pe scurt:
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI
import java.awt.*;
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
f.addWindowListener(h);
f.setVisible(true);
System.out.println(“Finalizare GUI");
} // main
} // clasa HelloGUI
Interfața grafică cu utilizatorul
7. Evenimente generate de componente
Tipuri de evenimente:
1) Evenimente de nivel jos (generate la acțiuni directe ale utilizatorului asupra
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI
componentei)
ComponentEvent
- este generat când componenta este ascunsă, mutată, redimensionată, afișată.
-Pentru a răspunde la acest eveniment trebuie implementată interfața
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
ComponentListener:
public interface ComponentListener extends EventListener {
public abstract void componentResized(ComponentEvent e);
public abstract void componentMoved(ComponentEvent e);
public abstract void componentShown(ComponentEvent e);
public abstract void componentHidden(ComponentEvent e); }
FocusEvent
-Aceste eveniment este legat de obținerea sau pierderea focusului.
- dacă o componentă este în focus atunci evenimentele generate de tastatură îi sunt
adresate respectivei componente. Interfața care trebuie implementată este
FocusListener:
public interface FocusListener extends EventListener {
public abstract void focusGained(FocusEvent e);
public abstract void focusLost(FocusEvent e); }
Interfața grafică cu utilizatorul
7. Evenimente generate de componente
1) Evenimente de nivel jos
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI
KeyEvent
-este generat la acțiunea tastaturii (apăsare, eliberare taste, tastare)
-Interfața care trebuie implementată este KeyListener:
public interface KeyListener extends EventListener {
public abstract void keyTyped(KeyEvent e);
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
WindowEvent
-Eveniment legat de acțiuni asupra ferestrelor: minimizare, maximizare, deschidere,
închidere etc.
-Interfața care trebuie implementată este WindowListener:
public interface WindowListener extends EventListener {
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
ActionEvent
-Acționare
- Interfața care trebuie implementată este ActionListener:
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
ItemEvent
- schimbarea stării
- Interfața care trebuie implementată este ItemListener:
public interface ItemListener extends EventListener {
public abstract void itemStateChanged(ItemEvent e);
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
}
TextEvent
- schimbarea textului
- Interfața care trebuie implementată este TextListener:
public interface TextListener extends EventListener {
public abstract void textValueChanged(TextEvent e);
}
Interfața grafică cu utilizatorul
7. Evenimente generate de componente
Clase adaptori
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI
adaptor sunt cele care definesc o singură metodă și deci crearea unei clase adaptor nu are
sens.
Interfața Adaptor
ActionListener nu are
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
AdjustmentListener nu are
ComponentListener ComponentAdapter
ContainerListener ContainerAdapter
FocusListener FocusAdapter
ItemListener nu are
KeyListener KeyAdapter
MouseListener MouseAdapter
MouseMotionListener MouseMotionAdapter
TextListener nu are
WindowListener WindowAdapter
Interfața grafică cu utilizatorul
8. Componente de tip ferestre
1)Clasa Window
- Implementează o fereastră grafică fără titlu și fără chenar.
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI
- Fereastra de dialog este dependentă de o altă fereastră numită fereastră părinte, când
fereastra părinte este distrusă sunt distruse și ferestrele sale de dialog, iar când
fereastra părinte este minimizată ferestrele de dialog sunt făcute invizibile.
- Pot fi de două tipuri:
modale: care blochează accesul la fereastra părinte în momentul deschiderii lor, cum
sunt ferestrele de introducere a unor date, de alegere a unui fișier, de selectare a unei
opțiuni etc.
nemodale: care nu blochează fluxul de intrare către fereastra părinte, cum ar fi dialogul
de căutare a unui cuvânt într-un fișier.
- implicit, o fereastră de dialog este nemodală și invizibilă.
Interfața grafică cu utilizatorul
8. Componente de tip ferestre
3) Clasa Dialog
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI
Are constructorii:
FileDialog(Frame parent)
FileDialog(Frame parent, String title)
FileDialog(Frame parent, String title, int mod)
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
- Este o clasă abstractă derivată din clasa Object și este superclasa tuturor
claselor de tip meniu.
- Câteva dintre metodele clasei sunt:
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
3) Clasa MenuItem
- Este o clasă derivată din clasa MenuComponent și reprezintă clase ce
implementează un meniu.
- La selecția unui meniu, acesta generează un eveniment de tipul
ActionEvent.
4) Clasa Menu
- Este o clasă derivată din clasa MenuItem și este componenta ce oferă
posibilitatea realizării unei structuri verticale de meniuri.
Interfața grafică cu utilizatorul
9. Componente AWT de lucru cu meniuri
5) Clasa CheckboxMenuItem
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI
- Definește o listă de opțiuni din care utilizatorul poate selecta una singură.
- La un moment dat, o singură opțiune din listă este vizibilă
- Este o componentă grafică de tipul pop-up menu.
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
Interfața grafică cu utilizatorul
10. Componente AWT simple
4) Clasa List
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI
scrollbar.
Interfața grafică cu utilizatorul
10. Componente AWT simple
5) Clasa Checkbox
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI
Programare Java
2016
Interfața grafică cu utilizatorul
Cuprins
1. Swing – generaliăți
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI
2. Clasa JFrame
3. Clasa Jcomponent
4. Clasa Jlabel
5. Clasan ImageIcon
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
6. Clasa JTextComponent
7. Clasa JTextField
8. Clasa JTextArea
9. Clasa JList
10. Clasa Jtable
11. Desenarea în Java
12. Clasa Graphics
13. Clasa Font
14. Clasa Color
15. Desenarea în Swing
16. Look and Feel
Interfața grafică cu utilizatorul
1. Swing – generalități
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI
Swing
este o tehnologie API care extinde AWT-ul pentru a crește abilitățile limbajului relativ
la grafică.
Din Swing fac parte pachetele javax.swing, javax.swing.event şi altele. Multe
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
Swing
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI
Cele mai multe dintre componentele Swing sunt numite componente ușoare
(lightweight) deoarece nu au o componentă peer, spre deosebire de componentele
AWT, numite și componente grele (heavyweight). Permite crearea de aplicaţii care
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
FontMetrics
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
Graphics
Lightweight
JMenuItem JMenu
JToggleButton JCheckBox
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
JRadioButton
JComponent JEditorPane
JTextArea
Componentele Swing
Interfața grafică cu utilizatorul
1. Swing – generalități
Convenție: pentru componentele Swing numele claselor încep cu litera J
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI
Aplicațiile GUI vor avea nevoie de pachetul java.awt deoarece aici sunt
definite unele clase folosite pentru desenare, cum ar fi: Color, Font,
Dimension etc.
Poziționarea componentelor este preluată din AWT, dar sunt adăugate noi
clase: BoxLayout, SpringLayout.
în realizarea unei interfețe grafice Swing se poate folosi limbajul HTML
pentru formatarea textului:
JButton simplu = new JButton("Text simplu");
JButton html = new Jbutton("<html><u>Text</u> <i>formatat</i></html>");
Interfața grafică cu utilizatorul
1. Swing – generalități
Realizarea unei interfețe grafice simple:
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI
import javax.swing.*;
public class GuiSimpla {
public static void main( String[ ] args) {
JFrame frame = new JFrame("Fereastra" );
JButton buton = new JButton("apasa-ma");
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
//urmatoarea linie determina iesirea din program imediat dupa inchiderea ferestrei
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(buton);
frame.setSize(300,300);
frame.setVisible(true);
}
}
Interfața grafică cu utilizatorul
2. Clasa JFrame
Pentru a fi afisate pe ecran, componentele grafice ale unei aplicatii care foloseste o
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI
superioară a ferestrei. Bara de titlu conține și butoane pentru închiderea, maximizarea sau
minimizarea ferestrei. Fereastra conține de asemnea o zonă rezervată barei de meniuri și
sub aceasta este panoul de conținut al ferestrei. Dacă bara de meniuri nu este adăugată
atunci panoul de conținut este extins până sus.
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
2. Clasa JFrame
Interfața grafică cu utilizatorul
Interfața grafică cu utilizatorul
2. Clasa JFrame
Spre deosebire de Frame, un obiect JFrame are un comportament implicit la
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI
închiderea ferestrei care constă în ascunderea ferestrei atunci când utilizatorul apasă
butonul de închidere. Astfel, se poate apela metoda:
public void setDefaultCloseOperation(int operation)
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
Swing oferă funcționalitate MDI (Multiple Document Interface) prin ferestre interne,
prin clasa JInternalFrame
clasa JinternalFrame pune la dispoziție o modalitate de a crea ferestre în cadrul altor
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
ferestre
obiectele JInternalFrame pot fi plasate pe un container de tip JDesktopPane, care
va fi apoi plasat pe o fereastră de tip JFrame.
Exemplu: ferestre interne
Interfața grafică cu utilizatorul
2. Clasa JFrame
import javax . swing .*; public class Test {
import java . awt .*; public static void main(String[] args)
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI
java.lang.Object
java.awt.Component
java.awt.Container
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
javax.swing.JComponent
- Orice componentă Swing poate avea unul sau mai multe chenare. Specificarea
unui chenar se realizează cu metoda public void setBorder(Border border).
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
unii sau chiar toți pixelii, permițând pixelilor de sub componentă să rămână vizibili
(componenta nu este opacă). Valoarea proprietății pentru clasele derivate din
JComponent depinde în general de Look-and-Feel-ul folosit.
Double-Buffering
Tehnica de double-buffering, care implică desenarea componentei în memorie și apoi
transferul întregului desen pe ecran, este implementată automat de componentele
Swing, spre deosebire de cele AWT unde trebuia realizată manual dacă era cazul.
Interfața grafică cu utilizatorul
4. Clasa JLabel
import javax . swing .*; public class TestJLabel {
import java . awt .*;
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI
}
super ("Testare JLabel" );
Container c = getContentPane();
c.setLayout( new FlowLayout() );
label1 = new JLabel( "Label with text" );
label1.setToolTipText( "This is label1" );
c.add( label1 );
Icon bug = new ImageIcon( "D:\\big_smile.gif" );
label2 = new JLabel( "Label with text and
icon",bug, SwingConstants.LEFT );
label2.setToolTipText( "This is label2" );
c.add( label2 );
}
}
Interfața grafică cu utilizatorul
5. Clasa ImageIcon
Clasa ImageIcon este o clasă derivată din clasa Object și implementează
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI
interfața Icon.
constructori mai utilizați ai clasei ImageIcon sunt:
ImageIcon(String filename) – încarcă o imagine (.gif sau .jpeg) din fișierul
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
specificat
ImageIcon(URL location) – încarcă o imagine de la locația URL specificată
Exemplu:
Icon bug = new ImageIcon( "D:\\big_smile.gif" );
se poate afișa o imagine icoană prin apelarea metodei:
public void setIcon(Icon ic)
următoarea metodă returnează icoana curentă:
public Icon getIcon( )
Interfața grafică cu utilizatorul
6. Clasa JTextComponent
Componentele Swing pentru afișarea și editarea textelor sunt grupate într-o
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI
JTextArea - Permite editarea unui text simplu, pe mai multe linii. Orice atribut
legat de stil, cum ar fi culoarea sau fontul, se aplică întregului text și nu poate fi
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
field.addActionListener(myActionListener);
4) Selectarea sau deselectarea textului din rubrică
field.selectAll( );
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
5) mutarea cursorului în rubrica de text ( astfel încât utilizatorul poate începe să scrie)
field.requestFocus( );
Interfața grafică cu utilizatorul
8. Clasa JTextArea
Este o clasă derivată din clasa JTextComponent
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI
Spre deosebire de JTextField, componenta JTextArea poate conține mai multe linii de
text
Un obiect JTextArea nu include implicit bare de derulare și nu face automat trecerea
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
text.append(“alt text”);
text.selectAll( );
5) mutarea cursorului în caseta de text (astfel încât utilizatorul poate începe să scrie)
text.requestFocus( );
Interfața grafică cu utilizatorul
8. Clasa JTextArea
Exemplu:
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class TextArea1 implements ActionListener {
JTextArea text;
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
list. setSelectionMode(ListSelectioModel.SINGLE_SELECTION);
// alte opțiuni: SINGLE_INTERVAL_SELECTION, MULTIPLE_INTERVAL_SELECTION
4) urmărești un eveniment generat prin selectarea unui articol din listă
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
list.addListSelectionListener(this);
5) Tratezi evenimentele (și afli ce articol a fost selectat din listă)
//metoda valueChanged este apelată ori de câte ori va fi schimbată selecția elementelor din
listă
public void valueChanged(ListSelectionEvent ev) {
if (!ev.getValueIsAdjusting( ) ) {
String selection = (String) list. getSelectedValue( );
System.out.println(selection);
}
}
Interfața grafică cu utilizatorul
10. Clasa JTable
Este o clasă derivată din clasa JComponent
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI
{ //deseneaza capul
setForeground(faceColor); g.fillOval(x, y, d, d);
} g.setColor(Color.black);
g.drawOval(x, y, d, d);
public Dimension getPreferredSize( ) { // deseneaza ochii
return new Dimension(300,300); g.fillOval(x+d/3-(ed/2), y+d/3-(ed/2), ed, ed);
} g.fillOval(x+(2*(d/3))-(ed/2), y+d/3-(ed/2), ed, ed);
//deseneaza gura
g.drawArc(x+d/4, y+2*(d/5), d/2, d/3, 0, -180);
}
}
Interfața grafică cu utilizatorul
12. Clasa Graphics
este clasa de bază abstractă a tuturor contextelor grafice care permit desenarea pe
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI
public abstract Graphics create( ) - crează și returnează un nou obiect din clasa
Graphics, care este o copie a obiectului pentru care se aplică această metodă;
public abstract Graphics create(int x, int y, int width, int height) - crează si returnează o
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
copie a obiectului din clasa Graphics căruia i se aplică, însă cu o nouă translație a originii
(x,y) si cu valori noi ale lățimii și înăltimii dreptungiului de desenare (suprafetei de
decupare);
public abstract void translate(int x, int y) - translatează originea sistemului de
coordonate in punctul (x,y) al sistemului de coordonate curent;
public abstract Color getColor() – returnează culoarea de desenare curenta;
public abstract void setColor(Color c) - seteaza culoarea de desenare curenta;
public abstract Font getFont() - returnează fontul curent;
public abstract void setFont(Font f) - setează fontul curent;
Interfața grafică cu utilizatorul
12. Clasa Graphics
public abstract FontMetrics getFontMetrics() - returnează metrica fontului curent;
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI
decupare curent;
public abstract void copyArea(int x, int y, int width, int height, int dx, int dy) - copiaza
suprafata dreptunghiulara cu originea (x,y), latimea width si inaltimea height intr-o noua
zona de aceleasi dimensiuni, avand originea (x+dx, y+dy)..
public abstract void setPaintMode() - seteaza operatia logica pe pixeli curenta la modul
paint, adica desenarea se face peste fondul existent, folosinduse culoarea de desenare
curenta, fara a lua in consideratie culoarea fondului.
Interfața grafică cu utilizatorul
12. Clasa Graphics
public abstract void setXORMode(color c1) - setează operatiile pe pixeli la modul XOR,
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI
adica se alterneaza pixelii de culoare curenta cu cei din culoarea c1; aceasta inseamna
ca daca un pixel nou plasat are aceeasi culoare curenta cu cea existenta anterior in
acelasi loc, ea va fi inlocuita cu c1; invers, daca pixelul existent anterior avea culoarea
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
arcHeight)
- traseaza un dreptunghi cu colturile rotunjite, unde arcWidth si arcHeight sunt
respectiv diametrul orizontal si diametrul vertical al arcelor de rotunjire;
public abstract void fillRoundRect(int x, int y, int width, int height, int arcWidth, int
arcHeight)
- umple cu culoarea curenta interiorul unui dreptunghi cu colturile rotunjite;
public abstract void draw3DRect(int x, int y, int width, int height, boolean raised)
- deseneaza un dreptunghi astfel luminat, incat el apare ca iese din suprafata de baza,
daca raised=true, sau este scufundat in aceasta suprafata, daca raised=false;
Interfața grafică cu utilizatorul
12. Clasa Graphics
public abstract void fill3dRect(int x, int y, int width, int height, boolean raised)
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI
-se deseneaza ovalul inscris in dreptunghiul cu coltul din stanga sus in punctul (x,y) si cu
dimensiunile (width, height);
public abstract void fillOval(int x, int y, int width, int height)
-- se umple cu culoarea curenta continutul ovalului inscris in dreptunghiul cu coltul stanga
sus in punctul (x,y) si de dimensiuni (width, height);
public abstract void drawArc(int x, int y, int width, int height, int startAngle, int arcAngle)
- se deseneaza un arc circular sau eliptic, care acopera dreptunghiul specificat. Putem sa ne
imaginam ca din elipsa inscrisa in acest dreptunghi si avand centrul in centrul dreptunghiului,
se traseaza efectiv numai arcul care incepe de la unghiul startAngle si se extinde pe un unghi
egal cu arcAngle. Unghiurile sunt masurate in grade.
Interfața grafică cu utilizatorul
12. Clasa Graphics
public abstract void drawPolyline(int[] xPoints, int[] yPoints, int nPoints) - traseaza o
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI
linie franta, care trece prin punctele ale caror coordonate (x,y) sunt date in tabelele
xPoints si yPoints; numarul de puncte este nPoints;
public abstract void drawPoligon(int[] xPoints, int[] yPoints, int nPoints) - traseaza un
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
poligon cu nPoints varfuri, situate in punctele ale caror coordonate (x,y) sunt date in
tabelele xPoints si yPoints;
public abstract void drawPoligon(Poligon p) - traseaza poligonul specificat ca argument;
public abstract void fillPoligon(int[] xPoints, int[] yPoints, int nPoints) - umple cu
culoarea curenta un poligon cu nPoints varfuri, situate in punctele ale caror coordonate
(x,y) sunt date in tabelele xPoints si yPoints;
public abstract void fillPoligon(Poligon p) - umple cu culoarea curenta poligonul
specificat ca argument;
Interfața grafică cu utilizatorul
12. Clasa Graphics
public abstract void drawString(String str, int x, int y)
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI
-traseaza sirul de caractere str, folosind fontul si culoarea curente; baza primului caracter
al sirului este in punctul de coordonate (x,y);
public abstract void drawString(AttributedCharacterIterator iterator, int x, int y)
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
un obiect Font încapsulează informații despre toți parametrii unui font, mai puțin
despre metrica acestuia.
parametrii ce caracterizează un font sunt:
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
- Numele fontului: Arial Bold Italic, Helvetica Bold, Times New Roman etc
- familia din care face parte fontul: Arial, Helvetica, Times New Roman etc
- dimensiunea fontului: înălțimea sa
- stilul fontului: normal, îngroșat, înclinat ( specificat prin constantele: Font.PLAIN,
Font.BOLD, Font.ITALIC)
- metrica fontului
constructorul clasei are trei parametri: numele fontului, dimensiune și stilul acestuia:
public Font( String name, int style, int size)
lista fonturilor instalate pe o platformă de lucru se poate obține astfel:
Font [ ] fonturi = GraphicsEnvironment.getLocalGraphicsEnvironment( ).getAllFonts( );
Interfața grafică cu utilizatorul
13. Clasa Font
Metode ale clasei Font:
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI
unui font:
- linia de baza : este linia dupa care sunt aliniate caracterele unui font
-linia de ascendenta : linia superioara pe care nu o depaseste nici un caracter
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
din font
-linia de descendenta : linia inferioara sub care nu coboara nici un caracter
din font
- ascendentul: distanta între linia de baza si linia de ascendenta
- descendentul:distanta între linia de baza si linia de descendenta latimea:
-latimea unui anumit caracter din font înaltimea: distanta între liniile de baza
- distanta între linii ("leading"):distanta optima între doua linii de text scrise
cu acelasi font.
Interfața grafică cu utilizatorul
13. Clasa Font
Cele mai uzuale metode ale clasei FontMetrics sunt cele pentru:
public int getHeight( ) – pentru aflarea înaltimii unei linii pe care vor fi scrise caractere
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI
In Java se foloseste modelul de culori RGB (engleza: red, green, blue) in care fiecare
culoare este considerata ca fiind compusa din trei culori fundamentale: rosu, verde si
albastru.
culoarea este data prin trei numere cuprinse in intervalul [0, 255], reprezentand
ponderile celor trei culori fundamentale.
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
Metoda paintComponent
protected void paintComponent(Graphics g)
-este principala metodă pentru desenare ce este supradefinită pentru fiecare componentă
Swing în parte pentru a descrie reprezentarea sa grafică
-Argumentul metodei este un obiect de tip Graphics, ceea ce înseamnă că poate să fie o
subclasă Graphics, de fapt chiar este o sublcasă.
-Argumentul este de fapt de tip Graphics2D, clasă ce extinde Graphics și pune la dispoziție
metode mai evoluate de desenare numite Java2D.
Interfața grafică cu utilizatorul
15. Desenarea în Swing
Dacă se dorește folosirea unei metode din clasa Graphics2D, nu se poate
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI
public abstract void fillRoundRect (int x, int y, int width, int height, int arcWidth,
int arcHeight)
public abstract void drawRoundRect (int x, int y, int width, int height, int arcWidth,
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
int arcHeight)
Interfața grafică cu utilizatorul
15. Desenarea în Swing
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI
import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Desen extends JPanel {
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
Windows LAF
Interfața grafică cu utilizatorul
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
Motif LAF
Interfața grafică cu utilizatorul
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
Programare Java
2013
Applet-uri Java
Cuprins
1. Ce este un applet?
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI
4. Tag-ul APPLET
1. Ce este un applet?
Applet-uri Java
1. Ce este un applet?
Applet-uri Java
//fisierul SalutAp.java
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
import java.applet.*;
import java.awt.*;
2. Compilare sursă
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI
SalutAp.class.
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
3. Execuția applet-ului
init()
stop()
start()
destroy()
java.awt.Panel
java.applet.Applet
2. Ciclul de viață a unui applet
Applet-uri Java
Applet-uri Java
2. Ciclul de viață a unui applet
init( )
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI
start( )
- Este apelată de browser imediat după metoda init( ) și ori de câte ori
utilizatorul revine în pagina html în care se află applet-ul.
- Această metodă poate fi folosită pentru pornirea unui thread.
Applet-uri Java
2. Ciclul de viață a unui applet
stop( )
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI
- Este apelată de browser ori de câte ori se iese din pagina web în care se
află applet-ul, iar când pagina devine din nou activă, va fi reapelată
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
metoda start( ).
destroy( )
import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
import java.applet.Applet;
import java.awt.*;
public class TestInit extends Applet{
TextArea ta = new TextArea( );
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
public TestInit ( ) {
System.out.println("apel constructor ");
}
public void init( ) {
setLayout (new BorderLayout( ) );
add("West", b1);
add("North", b2);
add("Center", ta);
print("metoda init()");
}
Applet-uri Java
2. Ciclul de viață a unui applet
public void start() {
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI
print("metoda start()");
}
public void stop() {
print("metoda stop()");
}
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
</APPLET>
un applet are și parametri prestabiliți ce definesc informații
generale despre applet, de exemplu: CODE, WIDTH, HEIGHT.
folosirea parametrilor primiți de către un applet se face cu metoda
getParameter ( ) care are ca argument numele unui parametru ți
returnează valoarea acestuia:
public String getParameter (String name)
Applet-uri Java
3. Parametrii unui applet
< APPLET
[ CODEBASE = codebaseURL ]
CODE = appletFile
[ ARCHIVE = archivesList ]
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
[ ALT = alternateText ]
[ NAME = appletInstanceName ]
WIDTH = pixels
HEIGHT = pixels
[ ALIGN = alignment ]
[ VSPACE = pixels ]
[ HSPACE =pixels ]
>
[<PARAM NAME = appletParameter1 VALUE = value >]
[<PARAM NAME = appletParameter1 VALUE = value >]
...
[alternateHTML]
</APPLET>
Atributele ce apar între paranteze drepte sunt opționale
Applet-uri Java
4. Tag-ul APPLET
Poate primi una din valorile: left, right, top, texttop, middle,
absmiddle, baseline, bottom, absbottom.
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
import java.applet.Applet;
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
import java.awt.event.ActionListener;
import java.awt.TextField;
import java.awt.Button;
import java.awt.event.ActionEvent;
}
public void init()
{
tf = new TextField( 30 );
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
add( tf );
b = new Button("Send");
add( b );
b.addActionListener( this );
a = (Applet2)getAppletContext().getApplet("APPLET2");
}
public Applet2()
{
}
public void paint(Graphics g)
{
if( string != null )
g.drawString(string, 10, 10 );
}
public void write(String s)
{
string = s;
repaint();
}
}
Applet-uri Java
5. Metode ale clasei Applet
Fișierul html:
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI
<html>
<body>
<applet code="Applet1.class" width=400 height=200 name="APPLET1">
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
impune limitele de securitate disponibile unui program. Astfel, un program java poate
rula numai în interiorul propriului sandbox, respectând limitele de securitate stabilite.
Astfel, applet-urile Java nu pot face următoarele operații:
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
Există tehnologii precum Java Web Start (JWS) și java Network Launch Protocol
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI
Programare Java
2013
Comunicații Java folosind socket-uri
Cuprins
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI
următoarele funcții:
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
Comunicații Java folosind socket-uri
1. Prezentarea pachetului java.net
(Server - cel care oferă servicii, Client – cel care solicită servicii oferite
de server) .
Comunicații Java folosind socket-uri
1. Prezentarea pachetului java.net
Comments).
Time 37 TCP
UDP
Echo 7 TCP
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
UDP
SMTP (Simple Mail 25 TCP
Transfer Protocol)
server e-mail
POP3 (Post Office 110 TCP
Protocol)
FTP (File Transfer 21 TCP
Protocol)
Comunicații Java folosind socket-uri
1. Prezentarea pachetului java.net
http://en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers
Comunicații Java folosind socket-uri
2. Gestionarea adreselor Internet
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI
import java.net.*;
Comunicarea prin UDP este adesea folosită în comunicații simple, la care este
mai importantă viteza și mai rar în cazurile în care sunt importante datele ce se
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
transmit.
să nu fie păstrată.
Comunicații Java folosind socket-uri
3. Comunicarea prin UDP
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI
obiectelor pachet.
există două tipuri de constructori, după scopul utilizării pachetelor: pentru trimitere
- constructor folosit pentru recepția unei datagrame, are ca parametri un tablou de tip
public DatagramPacket (byte [ ] buf, int length, InetAddress adress, int port)
modificate cu metodele:
Corespunde unui socket pentru datagrame, prin intermediul căruia se vor putea
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
public DatagramSocket ( )
port specificat.
Comunicații Java folosind socket-uri
3. Comunicarea prin UDP
Clasa DatagramSocket furnizează metode pentru trimiterea și primirea de
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI
import java.io.*;
import java.net.*;
public class UDPClient {
public static void main(String args[]) throws Exception {
BufferedReader inFromUser = new BufferedReader(new InputStreamReader(System.in));
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
import java.io.*;
import java.net.*;
class UDPServer {
public static void main(String args[]) throws Exception {
//crearea unui socket UDP la portul 9876
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
Un socket client stabilește o conexiune cu un socket server când acesta este creat.
Fiecare pachet trimis este primit, iar atunci când un socket trimite un pachet va
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
Pachetele sunt citite de socketul destinație în aceeași ordine în care au fost trimise.
Un socket TCP pentru client corespunde unei instanțe a clasei Socket, iar pentru un
Obiectele de tip Socket sunt folosite atât la nivel de client, cât și la nivel de
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
server.
portul acestuia.
Comunicații Java folosind socket-uri
4. Comunicarea prin TCP
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI
public Socket ( )
comunicării bidirecționale.
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
celălaltă aplicație).
void close ( )
utilizate.
Comunicații Java folosind socket-uri
4. Comunicarea prin TCP
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI
socketul curent.
conexiune de la clienți.
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
Constructori semnificativi:
conexiunea e refuzată.
Comunicații Java folosind socket-uri
4. Comunicarea prin TCP
Cele mai importante metode ale clasei ServerSocket sunt:
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI
TCPClient.java
import java.io.*;
import java.net.*;
try {
//creare socket client
Socket clientSocket = new Socket("127.0.0.1", 4242);
//creare flux de intrare
InputStreamReader streamReader = new InputStreamReader(clientSocket.getInputStream());
BufferedReader inFromServer= new BufferedReader(streamReader);
//citire linie de la server
String citat= inFromServer.readLine();
System.out.println("Citatul zilei: " + citat);
inFromServer.close();
}
catch (IOException ex)
{
ex.printStackTrace();
}
}
public static void main(String[] args)
{
TCPClient client = new TCPClient();
client.go();
}
}
Comunicații Java folosind socket-uri
4. Comunicarea prin TCP
TCPServer.java
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI
import java.io.*;
import java.net.*;
}
Comunicații Java folosind socket-uri
5. Accesul la resurse Internet prin URL
Clasa URL
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI
public URL (String protocol, String host, int port, String fisier)
public URL (String protocol, String host, String fisier)
public URL (String specificare)
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
obiectului de la distanță.
public void setDoInput (boolean b)
public boolean getDoInput ( )
public void setDoOutput (boolean b)
public boolean getDoOutput ( )
- aceste metode manevrează flagurile de intrare și de ieșire. O conexiune
poate fi folosită pentru intrare sau/și pentru ieșire. Implicit flag-ul de intrare
este true, iar flag-ul de ieșire este false.
Comunicații Java folosind socket-uri
5. Accesul la resurse Internet prin URL
Exemplu: acces la o resursă Internet
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI
import java.io.*;
import java.net.*;
import java.util.*;
public class URLInfo {
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
System.out.println (linie);
}
}
}
Primele 10 linii:
Programare Java
2013
Lucrul cu baze de date în Java
Cuprins
1. Ce este JDBC?
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI
4. Comenzi SQL
5. Referințe JDBC
Lucrul cu baze de date în Java
1. Ce este JDBC?
date relaționale.
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
1. Ce este JDBC?
nemodificat.
etc.
Lucrul cu baze de date în Java
1. Ce este JDBC?
prin classpath.
JDBC.
java.sql și javax.sql.
Lucrul cu baze de date în Java
2. Conectarea prin JDBC la o bază de date
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI
sunt:
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
exemplu:
Connection c = DriverManager.getConnection(url);
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
Statement st = conn.createStatement();
Lucrul cu baze de date în Java
2. Conectarea prin JDBC la o bază de date
4) Accesul la baza de date
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI
Exemple:
Statement st = conn.createStatement();
st.executeUpdate( "INSERT INTO PRODUSE(NUME, PRET, ID_CATEGORIE, CANTITATE) “
+ "VALUES ('MEMORIE', 35, 3, 14)" );
st.executeUpdate( "UPDATE PRODUSE SET CANTITATE = CANTITATE + 1 WHERE
NUME='MEMORIE'" );
st.executeUpdate( "DELETE FROM PRODUSE WHERE NUME='MEMORIE'" );
Lucrul cu baze de date în Java
2. Conectarea prin JDBC la o bază de date
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI
5) Prelucrarea interogărilor
Exemplu:
while ( rs.next() )
{
String nume = rs.getString( "NUME" );
int pret = rs.getInt( "PRET" );
int cantitate = rs.getInt( 3 );
System.out.println( nume + " " + pret + "RON " + cantitate );
}
Exemplu:
String nume = rs.getString( "NUME" );
int pret = rs.getInt( "PRET" );
6) Închiderea conexiunii
Exemplu:
Exemplu:
Exemplu:
Ștergerea datelor
JDBC Documentation
http://download.oracle.com/javase/1.4.2/docs/guide/jdbc/index.html
java.sql package
http://download.oracle.com/javase/6/docs/api/java/sql/package-
summary.html
JDBC Technology Guide: Getting Started
http://download.oracle.com/javase/1.4.2/docs/guide/jdbc/getstart/Gettin
gStartedTOC.fm.html
JDBC API Tutorial and Reference (book)
http://java.sun.com/docs/books/jdbc/