3. Information Hiding

Package

Le classi vengono raggruppate in packages, che le unisce, definendo regole di visibilità.

Se una classe C è visibile in un package pA, ma è stata dichiarata in un package pB, posso accedere alla classe C con la scrittura pB.C.

In questo modo posso definire una classe C nel package pA, senza creare ambiguità.

Compilation Unit

È un file che contiene la dichiarazione di una o più classi: ci possono essere tante classi al suo interno, ma solo una può essere public ed essa deve necessariamente avere lo stesso nome del file.

Ci può essere al massimo un solo metodo main.

È possibile specificare il package al quale appartiene; se non ne viene specificato uno, gli viene assegnato un package di default senza nome.

Package 2

È una directory che contiene una o più compilation units.

Introduce un nuovo livello di visibilità: compilation unit con lo stesso nome possono essere presenti in packages differenti.

Contiene un insieme di classi public e un insieme di classi private rispetto al package, dette “friendly”.

Le classi pubbliche di un package possono essere importate da altri packages.

Visibilità delle classi

public:

“Friendly”:

Per dichiarare una classe “friendly” basta scrivere class <nome_classe> all’interno della compilation unit.

Visibilità di attributi e metodi

Information Hiding

Non conviene spesso usare public, poiché se poi si cambia codice, si rischia di dover cambiare troppa roba.

Conviene rendere gli attributi private o “friendly”.