Tutorial Java SCJP – #13 Pachete si modificatori de acces pentru clase

Doua concepte importante ale Programarii Orientate Obiect impun separarea entitatilor (claselor) pe baza functionalitatii sau semnificatiei lor (modularizare) si ascunderea datelor si comportamentului în cadrul unei clase (încapsulare). Pentru a atinge aceste obiective se folosesc clase pentru a defini entitati care au atribute si un comportament (metodele lor). La un nivel superior, pentru o buna organizare a modulelor aplicatiei Java puteti utiliza pachete (packeges) pentru a separa modulele realizate de programatori diferiti sau pentru a grupa clasele în module in functie de utilitate, functie, logica.

Alte subiecte care fac parte din acest tutorial Java sunt accesibile prin intermediul Java Tutorial 6 – Cuprins.

Pachetele sunt foarte importante, deoarece permit mai multor programatori, ce lucreaza la acelasi proiect, sa numeasca clasele lor intr-un mod independent. De exemplu, fiecare programator poate defini propria clasa Utility fara a genera o eroare de compilator (la instantiere compilatorul nu va sti ce clasa Utility sa foloseasca) de tip: duplicate class.

Java recomanda ca numele pachetelor sa urmeze o conventie bazata pe inversul domeniului dezvoltatorului la care se adauga departamentul si numele proiectului. De exemplu, am putea numi un pachet utilizat la dezvoltarea unei aplicatii de chat ca aceasta

package eu.itcsolutions.chat.client;

Alte reguli importante în ceea ce priveste utilizarea pachetelor (reguli testate si de certificarea SCJP):

  • declaratia pachetului trebuie sa fie prima linie (înainte de declaratii de tip import) în fisierul sursa;
  • daca doriti sa utilizati clase din alt pachet, trebuie sa specificati numele pachetului folosind declaratii de tip import;
  • declaratiile de import sunt definite între declaratia pachetului (daca exista), precum si declaratia primei clase din fisierul sursa;
  • daca doriti sa utilizati o singura clasa dintr- un alt pachet, veti importa doar clasa respectiva:
    import numePackage.numeClasa;
  • daca doriti sa utilizati toate clasele dintr-un alt pachet, importul este definit cu *:
    import numePackage.*;

Fisierul TestClass.java este:

package eu.itcsolutions.test;

public class TestClass {
    int attribute;
}

Fisierul Main.java este:

package eu.itcsolutions.main;

import eu.itcsolutions.test.*;

public class Main {
    public static void main(String[] args) {
        TestClass tc = new TestClass();
    }
}

Ce reprezinta accesul la clasa

Platforma Java implementeaza masuri de securitate stricte la nivel de cod sursa si executie, prin verificatorii de bytecode, Incarcator de clasa si managerii de securitate. O modalitate de a pune în aplicare masuri de securitate la nivel de cod sursa este de a controla accesul la clasa, ceea ce înseamna:

  • defineste modul in care clasa este vizibila în alte pachete;
  • defineste daca puteti utiliza clasa pentru a crea instante in alte clase sau metode;
  • defineste daca puteti extinde/deriva clasa într-una noua;
  • defineste daca puteti accesa atribute sau metode din clasa (aici trebuie luate în considerare, de asemenea, modificatorii de acces pentru atribute si metode) in alte clase;

Ce sunt modificatorii de acces ai unei clase

Modificatorii de acces ai unei clase sunt:

  • default (este implicit; atunci cand nu definesti unul); este echivalent cu nivelul de acces al pachetului, deoarece clasa este vazuta numai de clase din acelasi pachet, chiar daca sunt in fisiere sursa diferite;
  • public, clasa este vizibila oriunde (în orice pachet);
package p1;

//public access
public class Class1
{}

//default access
class Class2
{}

si relatia dintre diferitele pachete este:

Modifiatori Acces pentru Clasa in Java
Modifiatori Acces pentru Clasa in Java

Alte subiecte care fac parte din acest tutorial Java sunt accesibile prin intermediul Java Tutorial 6 – Cuprins.