Estratto del documento

Importanza dei nomi e dei domini nei package

Devo stare attento ai nomi che scelgo perché potrei scegliere un nome ambiguo con cui intendere qualcosa e qualcun altro potrebbe scegliere lo stesso nome per intendere qualcos'altro, allora avrei creato un conflitto a livello semantico. Per questo si usa il dominio che in questo caso è unipv.it, allora si inverte la lettura e i package iniziamo con IT.unipv.iii.

Gestione dei conflitti tra package

Immaginiamo di importare due package che mi creano conflitto, ad esempio importo il package unipv e polimi. Se entrambi contengono studenti, il mio compilatore se ne accorge e dice che c'è un conflitto. Allora o togliamo l'import oppure usiamo il nome esteso per risolvere il problema.

Modalità di riferimento alle classi nei package

Per riferirsi ad una classe appartenente ad un package è possibile:

  • Riferirsi ad essa con il nome completo: aaa.bbb.graphics.Rectangle r = new aaa.bbb.graphics.Rectangle();
  • Importare la classe: import aaa.bbb.graphics.Rectangle;
  • Importare l’intero package: import aaa.bbb.graphics.*;

Alcuni package standard

  • Java.lang: classi base del linguaggio: Object, System, String, Math ...
  • Java.io: classi di I/O: FileInputStream, FileOutputStream
  • Java.util: classi di utilità: Date, Random, ArrayList,
  • Java.net: classi di supporto alle applicazioni di rete: socket, URL, ...
  • Java.applet: classe Applet, ...
  • Java.text: classi per la formattazione di numeri, date, ecc: NumberFormat, DecimalFormat, DateFormat...
  • Java.awt: Abstract Windowing Toolkit, classi per la rappresentazioni di elementi di interfaccia grafica

Visibilità delle variabili e delle classi

Tutto ciò che dichiaro dentro due parentesi graffe (anche nel caso di una if) rimane utilizzabile lì dentro (si parla di body) e fuori, tale variabile non potrà essere utilizzata.

Esempio:

if (condizione) {
    int i = 5;
}
i++;

Questo codice mi darebbe errore poiché la variabile i è definita solo dentro il body quindi non può essere usata fuori.

Visibilità di classi e variabili

Classi e interfacce sono visibili all’interno del package in cui sono dichiarate, sono visibili all’esterno del package solo se dichiarate public. Variabili e metodi sono visibili quando la loro classe è visibile. Sono visibili quando il loro modificatore li rende visibili.

Progettazione delle classi

Progettando una classe dobbiamo pensare a due tipi di utenti:

  • Chi utilizzerà la classe per realizzare delle applicazioni: questi useranno i membri public.
  • Quelli che estenderanno la classe per realizzare delle sottoclassi: questi useranno anche i protected.

Andremo quindi ad assegnare public e protected in base a ciò che ci interessa. Dichiarare una classe public final o final public è la stessa cosa, analogamente per protected static o static protected.

Concetto di static nelle classi

Static si applica a una classe, non a una sua istanza. Un membro statico viene allocato quando la classe viene caricata, l’inizializzazione avviene anche al momento del caricamento della classe.

2 modi per referenziare una variabile statica:

  • Mediante una reference a qualsiasi istanza della classe (non buono)
  • Mediante il nome della classe (migliore)

Anche i metodi possono essere static. Non esiste alcuna garanzia che esista una istanza della classe quando il metodo static viene invocato, potrebbe essere invocato prima che la classe in cui è presente venga istanziata, tipo il metodo main.

Metodi statici e non statici

I metodi non statici hanno una variabile implicita denominata this, che è un riferimento all'oggetto che esegue il metodo. Con i metodi statici, non c'è questo. Un metodo statico non può essere sovrascritto per essere non-statico. Può essere sovrascritto per essere un altro metodo statico. I metodi statici non possono usare variabili non statiche o metodi non statici della propria classe. Se un metodo statico deve accedere a una variabile non statica o chiamare un metodo non statico, deve specificare quale istanza della sua classe possiede la variabile o il metodo.

Anteprima
Vedrai una selezione di 3 pagine su 6
Package e visibilità in Java Pag. 1 Package e visibilità in Java Pag. 2
Anteprima di 3 pagg. su 6.
Scarica il documento per vederlo tutto.
Package e visibilità in Java Pag. 6
1 su 6
D/illustrazione/soddisfatti o rimborsati
Acquista con carta o PayPal
Scarica i documenti tutte le volte che vuoi
Dettagli
SSD
Scienze matematiche e informatiche INF/01 Informatica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher ab502 di informazioni apprese con la frequenza delle lezioni di Programmazione a oggetti e ingegneria del software e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università degli Studi di Pavia o del prof Antonino Nocera.
Appunti correlati Invia appunti e guadagna

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community