Pachet (Java)

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare

Un pachet este un mecanism pentru organizarea claselor Java în grupuri logice, în principal (dar nu limitat la) în scopul definirii spațiilor de nume distincte pentru contexte diferite. Pachetul își propune să reunească clase legate în mod logic (sau entități similare, cum ar fi interfețe și enumerări). De exemplu, bibliotecile Java standard sunt organizate într-un sistem de pachete care include, de exemplu, elemente structurale ale serviciilor de rețea lingvistică și așa mai departe.

Efectele utilizării pachetelor

Un pachet definește un spațiu de nume pentru entitățile ierarhice de primul nivel în limbajul Java, adică clase , interfețe , tipuri enumerate și adnotări . Numele complet calificat ( numele complet calificat FQN ) al primului nivel al entității include numele pachetului ca prefix. De exemplu, clasa File aparținând pachetului java.io are FQN java.io.File . Două clase Java pot fi omonime, atâta timp cât au FQN distincte. De exemplu, bibliotecile Java standard conțin două clase diferite numite Node , noduri reprezentând unul dintr - un SOAP document care (cu FQN javax.xml.soap ) și unul care reprezintă noduri ale unui document în W3C DOM model (cu FQN org.w3c.dom ). În cadrul unui pachet dat, este posibil să se facă referire la o entitate folosind numele simplu; utilizarea FQN devine necesară atunci când se referă la entități aparținând altor pachete sau în caz de ambiguitate.

Pe lângă efectuarea acestei funcții de spațiu de nume, pachetul Java joacă și un rol în contextul mecanismelor de ascundere a informațiilor din limbă. În special, o clasă poate accesa toți membrii non-privați ai altor clase aparținând aceluiași pachet, în timp ce este supusă mai multor restricții împotriva claselor care aparțin pachetelor diferite.

Utilizarea pachetelor

În fișierele sursă Java, pachetul căruia îi aparține fișierul este specificat cu instrucțiunea package :

 pachet java.awt.event ;

În general, clasele aparținând altor pachete vor trebui să se refere la clasa cu FQN. Ca simplificare, o clauză specială de import poate fi utilizată pentru a instrui compilatorul să obțină automat FQN-ul anumitor clase sau clase aparținând anumitor pachete. De exemplu, folosind clauza

import javax.xml.soap.Node

va fi posibil să javax.xml.soap.Node referire la clasa javax.xml.soap.Node cu numele simplu necalificat ( Node ), lăsând compilatorul să-l extindă pe baza import , acolo unde este posibil.

Protecția accesului pachetelor

Clasele aparținând unui pachet pot accesa alte clase și, în general, membrii cu acces implicit și membrii cu acces protected . Accesul implicit reprezintă comportamentul general, care apare atunci când nu este specificat niciun modificator de acces în timpul declarației de membru. În schimb, clasele conținute în alte pachete nu pot accesa clase sau membri cu acces implicit . Rețineți că membrii protected pot fi folosiți de clasele din alte pachete care au fost declarate subclase ale clasei în cauză.

Convenții de denumire a pachetelor

Pachetele sunt de obicei definite folosind o structură ierarhică, indicând niveluri de ierarhie cu puncte. Deși pachetele aflate mai jos în ierarhie sunt deseori numite subpachete ale altor pachete, nu există nicio relație semantică. Documentul cu specificațiile limbajului Java stabilește convențiile care trebuie adoptate în numele pachetelor, pentru a evita publicarea a două cu același nume. Convențiile descriu cum să creați nume unice pentru a vă asigura că pachetele cu scop general și distribuite pe scară largă nu au nume care pot genera ambiguitate.

În general, un nume începe cu domeniul de nivel superior al organizației care îl produce, urmat de domeniu și orice alte subdomenii, listate în ordine inversă. În cele din urmă, organizația poate alege un nume specific pentru respectivul pachet. De asemenea, din nou prin convenție, numele pachetelor trebuie să conțină doar litere mici.

De exemplu, dacă o organizație canadiană numită MySoft creează un pachet care se ocupă de fracțiuni, apelarea pachetului ca.mysoft.fractions îl distinge de un alt pachet similar creat de o altă companie. De fapt, dacă o companie americană cu același nume creează un pachet pe fracții, dar îl numește com.mysoft.fractions , clasele din cele două pachete vor fi definite în spații de nume separate și unice.

Alte convenții pentru evitarea ambiguității și reguli pentru denumirea pachetelor atunci când domeniul Internet nu poate fi utilizat direct în nume sunt descrise în secțiunea 7.7 din Specificația limbajului Java.

Pachetele de bază conținute în J2SE 6.0

java.lang - funcționalitatea limbajului de bază și tipurile de date fundamentale
java.util - clase de colectare ( structuri de date )
java.io - operații de fișier
java.math - aritmetica multi-precizie
java.nio - noul cadru I / O pentru Java
java.net - operațiuni de rețea, socketuri , căutare DNS , ...
java.security - generarea de chei criptografice, securitate și criptografie
java.sql - Java Database Connectivity ( JDBC ) pentru a facilita accesul la baza de date
java.awt - structura de bază pentru componentele GUI (Graphical User Interface)
javax.swing - Structură avansată și independentă de platformă pentru componente GUI (Graphical User Interface)

linkuri externe