Documente Academic
Documente Profesional
Documente Cultură
1. Pachete
2. Interfete
3. Tratarea exceptiilor
Pachete
Crearea unui pachet
Folosirea membrilor unui pachet
Importul unei clase
Importul unui pachet
Pachetele JDK
Crearea unui pachet
Un pachet este o colectie de clase si interfete nrudite. Sunt folosite pentru
gasirea si utilizarea mai usoara a claselor, pentru a evita conflictele de nume si pentru a
controla accesul la anumite clase. In alte limbaje de programare pachetele se numesc
librarii.
Toate clasele si interfetele Java apartin la diverse pachete, grupate dupa
functionalitatea lor: clasele de baza se gasesc n pachetul java.lang, clasele pentru
intrari/iesiri sunt n java.io, clasele pentru grafica n java.awt, cele pentru construirea
applet-urile n java.applet. Crearea unui pachet se realizeaza prin scriere la nceputul
fisierelor sursa ce contin clasele si interfetele pe care dorim sa le grupam ntr-un pachet, a
instructiunii:
package NumePachet;
Sa consideram un exemplu, presupunem ca avem doua fisiere sursa BubbleSort.java si
QuickSort.java
package sort;
class BubbleSort
{...}
package sort;
class QuickSort
{...}
Clasele BubbleSort si QuickSort vor face parte din acelasi pachet sort. Instructiunea
package actioneaza asupra ntregului fisier sursa la nceputul caruia apare. Cu alte cuvinte
nu putem specifica faptul ca anumite clase dintr-un fisier sursa apartin unui pachet iar
altele altui pachet.
Daca nu este specificat un anumit pachet, clasele unui fisier sursa vor face parte din
pachetul implicit (care nu are nici un nume). In general, pachetul implicit este format din
toate clasele si intefetele directorului curent. Este recomandabil ca toate clasele si
intefetele sa fie plasate n pachete. Pachetul implicit este folosit doar pentru aplicatii mici
sau la nceputul dezvoltarii unei aplicatii.
In cazul n care sunt importate doua pachete care contin o clasa cu acelasi nume atunci
referirea la ea trebuie facuta folosind numele complet al clasei respective.
//Vector.java
package my_package;
class Vector { ... }
//alt fisier sursa
import java.util.*;
import my_package.*;
...
Vector v = new Vector(); //ilegal -> conflict de nume
java.util.Vector v1 = new java.util.Vector(); //corect
my_package.Vector v2 = new my_package.Vector();//corect
Mediul Java importa automat trei pachete pentru toate fisierele sursa:
- pachetul java.lang
- pachetul curent
- pachetul implicit (fara nume)
Pachetele JDK
Limbajul Java se bazeaza pe o serie de biblioteci (pachete) cu ajutorul carora se
pot construi aplicatiile. Exista deci un set de clase deja implementate, ceea ce reduce
timpul de dezvoltare a unui program. Cele mai importante sunt:
java.applet - suport pentru scrierea de appleturi;
java.awt - suport pentru grafica(Abstract Windowing Toolkit);
java.beans - suport pentru scrierea de componente reutilizabile ;
java.io - suport pentru tratarea fluxurilor de date;
java.lang - suport pentru clasele de baza ale limbajului Java corespunzatoare
tipurilor de baza (int Integere, char Character, ...);
java.math - suport pentru clase corespunzatoare operatiilor matematice;
java.net - asigura suportul pentru acces-ul la retea;
java.rmi - executie la distanta (Remote Message Interface);
java.security - mecanisme de securitate : criptare/decriptare, autentificare;
java.sql - lucru cu baze de date (interogari SQL);
java.text - suport pentru formatarea textelor;
java.util - clase utile : Vector, Stack, Random, ...
Interfete
Definitia unei interfete.
Definirea unei interfete
Implementarea unei interfete
Comparatia interfata - clasa abstracta
Mostenire multipla prin intermediul interfetelor
Concluzii
putea sa extinda o clasa abstracta deoarece n Java nu exista dect mostenire simpla. Fara
folosirea interfetelor nu am putea forta clasa respectiva sa respecte un anumit protocol.
La nivel conceptual diferenta consta n:
- extinderea unei clase abstracte forteaza o relatie ntre clase;
- implementarea unei interfete specifica doar necesitatea implementarii unor
anumie metode.
Mostenire multipla prin intermediul interfetelor
Interfetele nu au nici o implementare si nu ocupa spatiu de memorie la
instantierea lor. Din acest motiv nu reprezinta nici o problema ca anumite clase sa
implementeze mai multe interfete sau ca o interfata sa extinda mai multe interfete (sa aiba
mai multe superinterfete)
class NumeClasa implements Interfata1, Interfata2, ...
interface NumeInterfata extends Interfata1, Interfata2, ...
O interfata mosteneste att constantele ct si declaratiile de metode de la
superinterfetele sale. O clasa mosteneste doar constantele unei interfete.
Exemplu de clasa care implementeaza mai multe interfete:
interface Inotator {
void inoata();
}
interface Zburator {
void zboara();
}
class Luptator {
public void lupta() {}
}
class Erou extends Luptator implements Inotator, Zburator {
public void inoata() {}
public void zboara() {}
}
Exemplu de interfata care extinde mai multe interfete :
interface Monstru {
void ameninta();
}
interface MonstruPericulos extends Monstru {
void distruge();
}
interface Mortal {
void distrugeTotal();
}
interface Vampir extends MonstruPericulos, Mortal {
void beaSange();
}
class Dracula implements Vampir {
catch (ExceptionType2 e) {
prelucrarea exceptiei de tipul 2
}
finally {
prelucrarea tuturor celorlalte tipuri de exceptii
}
Exemplu de folosire a instructiunilor try catch:
public class ExException {
public static void main (String args[]) {
int[] myArray = new int[10];
try {
System.out.println("Inainte de o atribuire valida in
matrice...");
myArray[0] = 100;
System.out.println("Inainte de o atribuire invalida
in matrice...");
myArray[100] = 100;
System.out.println("Dupa o exceptie in matrice");
}
catch (ArrayIndexOutOfBoundsException e) {
System.out.println("Eroare de indice in matrice!");
}
}
}
Instructiunea throw determin generarea unei exceptii de ctre codul propriuzis, ramnnd n sarcina procedurii apelante sa trateze exceptia. Tipul exceptiei poate fi
predefinit (existent
n clasa java.lang.Exception) sau poate fi un tip definit special pentru o anume aplicatie.
Sintaxa instructiunii este :
throw (Obiect_Exceptie)
Personalizarea exceptiilor existente cat si crearea de noi exceptii se realizeaza prin
extinderea clasei de baza java.lang.Exception.
Exemplu:
public class MyException extends Exception {
public MyException () {
super();
}
public MyException (String s) {
super(s);
}
}
public class VerifyRange {
MyException e;
TEMA:
Sa se implementeze un program care contine un pachet "citire" si care citeste de la tastatura un utilizator
numeric si o parola (sir de caractere), iar apoi le va compara cu unele predefinite.
1. In cazul in care corespund se afisaza un mesaj corespunzator
2. In cazul in care nu corespund, se asteapta 5 secunde si se va incerca din nou