Documente Academic
Documente Profesional
Documente Cultură
Ce este un pachet?
Pachetul este o colecie de clase i interfee
Scopul su:
Organizarea lucrului
Gsirea i utilizarea mai uoar a claselor
Evitarea conflictelor de nume
Controlul accesului
Pachetele standard
java.lang - clasele de baz ale limbajului Java
java.io - intrri/ieiri, lucrul cu fiiere
java.util - clase i interfee utile
java.applet - dezvoltarea de appleturi
java.awt - interfaa grafic cu utilizatorul
java.awt.event - tratare evenimente
java.beans - scrierea de componente reutilizabile
java.net - programare de reea
java.sql - lucrul cu baze de date
java.rmi - execuie la distan
java.security - mecanisme de securitate
java.math - operaii matematice cu numere mari
java.text - lucrul cu texte, date i numereindependent de limb
java.lang.reflect - introspecie
javax.swing - interfaa grafic cu utilizatorul, mult mbogit fa de AWT.
Folosirea membrilor unui pachet
specificarea numelui complet:
numePachet.NumeClasa.
Button - numele scurt al clasei
java.awt - pachetul din care face parte
java.awt.Button - numele complet al clasei
Importul unei clase sau interfee
Importul clasei respective
import numePachet.numeClasa;
//Pentru exemplul nostru:
import java.awt.Button;
import java.awt.TextField;
...
Button b1 = new Button("OK");
Button b2 = new Button("Cancel");
TextField tf1 = new TextField("Placut");
TextField tf2 = new TextField("Foarte placut");
//Problema:
import java.awt.Button;
import java.awt.TextField;
import java.awt.Rectangle;
import java.awt.Line;
import java.awt.Point;
import java.awt.Polygon;
importul ntregului pachet
import numePachet.*;
//Pentru exemplul nostru:
import java.awt.*;
...
Button b = new Button("OK");
Point p = new Point(0, 0);
import java.awt.C*; = eroare
Importate automat:
pachetul java.lang
pachetul curent
pachetul implicit (fr nume)
Crearea unui pachet
package numePachet;
//Fisierul Graf.java
package grafuri;
class Graf {...}
class GrafPerfect extends Graf {...}
//Fisierul Arbore.java
package grafuri;
class Arbore {...}
class ArboreBinar extends Arbore {...}
Clase abstracte
Sunt clasele pentru care programatorul nu intenioneaz s instanieze obiecte.
clase de baz in ierarhii
se mai numesc clase abstracte de baz
O clas devine abstract dac conine una sau mai multe declaraii de funcii abstracte
Dac o clas ce motenete o clas ce conine o funcie abstract nu implementeaz acea
funcie abstract motenit, devine ea nsi o clas abstract.
OBS: clasele pentru care se pot instania obiecte se numesc clase concrete.
obiect.variabila
Rectangle patrat = new Rectangle(0, 0, 10, 200);
System.out.println(patrat.width);
patrat.x = 10;
patrat.y = 20;
patrat.origin = new Point(10, 20);
obiect.metoda([parametri])
Rectangle patrat = new Rectangle(0, 0, 10, 200);
patrat.setLocation(10, 20);
patrat.setSize(200, 300);
Exemplu:
class Patrat {
private double latura=0;
public double getLatura()
{
return latura;
}
public double setLatura(double latura) {
this.latura = latura;
}
}
3. Distrugerea obiectelor
Obiectele care nu mai sunt referite vor fi distruse automat.
Referinele sunt distruse:
natural
explicit, prin atribuirea valorii null.
Exemplu:
class Test {
String a;
void init() {
a = new String("aa");
String b = new String("bb");
}
void stop() {
a = null;
}
}
Garbage Collector
Finalizarea:
Metoda finalize este apelat automat nainte de eliminarea unui obiect din memorie.
finalize destructor
Exemplu cu this
class A {
int x;
A() {
this(0);
}
A(int x) {
this.x = x;
}
void metoda() {
x ++;
}
}
Exemplu cu super
class B extends A {
B() {
this(0);
}
B(int x) {
super(x);
}
void metoda() {
super.metoda();
}
}
Constructorul implicit
class Dreptunghi {
double x, y, w, h;
// Nici un constructor
}
class Cerc {
double x, y, r;
// Constructor cu 3 argumente
Cerc(double x, double y, double r) { ... };
}
...
Dreptunghi d = new Dreptunghi();
// Corect (a fost generat constructorul implicit)
Cerc c;
c = new Cerc();
// Eroare la compilare !
c = new Cerc(0, 0, 100);
// Varianta corect
5. Declararea variabilelor
class NumeClasa {
// Declararea variabilelor
// Declararea metodelor
}
[modificatori] Tip numeVariabila [ = valoare];
unde un modificator poate fi :
public, protected, private
static, final, transient, volatile
class Exemplu {
double x;
protected static int n;
public String s = "abcd";
private Point p = new Point(10, 10);
7. Trimiterea parametrilor
TipReturnat metoda([Tip1 arg1, Tip2 arg2, ...])
Argumentele sunt trimise doar prin valoare (pass-by-value).
void metoda(StringBuffer sir, int numar) {
// StringBuffer este tip referin
// int este tip primitiv
sir.append("abc");
numar = 123;
}
...
StringBuffer s=new StringBuffer();
int n=0;
metoda(s, n);
System.out.println(s + ", " + n);
// s va fi "abc", dar n va fi 0
Deoarece nu depind de o anumit instan a unei clase, variabilele statice pot fi referite i sub
forma:
NumeClasa.numeVariabilaStatica
Iniializarea variabilelor de clas se face o singur dat, la ncrcarea n memorie a clasei
respective:
class Exemplu {
static final double PI = 3.14;
static long nrInstante = 0;
static Point p = new Point(0,0);
}
class Exemplu {
int x ; // Variabila de instanta
static long n; // Variabila de clasa
}
...
Exemplu o1 = new Exemplu();
Exemplu o2 = new Exemplu();
o1.x = 100;
o2.x = 200;
System.out.println(o1.x); // Afiseaza 100
System.out.println(o2.x); // Afiseaza 200
o1.n = 100;
System.out.println(o2.n); // Afiseaza 100
o2.n = 200;
System.out.println(o1.n); // Afiseaza 200
System.out.println(Exemplu.n); // Afiseaza 200
// o1.n, o2.n si Exemplu.n sunt referinte la aceeai valoare
9. Metode de instan i metode de clas
Metodele de instan opereaz att pe variabilele de instan ct i pe cele statice ale clasei.
Metodele de clas opereaz doar pe variabilele statice ale clasei.
class Exemplu {
int x ; // Variabil de instan
static long n; // Variabil de clas
void metodaDeInstanta() {
n ++; // Corect
x --; // Corect
}
static void metodaStatica() {
n ++; // Corect
x --; // Eroare la compilare !
}
}
ntocmai ca i la variabilele statice, ntruct metodele de clas nu depind de starea obiectelor
clasei respective, apelul lor se poate face i sub forma:
NumeClasa.numeMetodaStatica
Exemplu.metodaStatica(); // Corect
Exemplu obj = new Exemplu();
obj.metodaStatica(); // Corect
Metodele de instan nu pot fi apelate dect pentru un obiect al clasei respective:
Exemplu.metodaDeInstanta(); // Eroare
Exemplu obj = new Exemplu();
obj.metodaDeInstanta(); // Corect