Presentazione di PowerPoint

Download Report

Transcript Presentazione di PowerPoint

Scuola Interuniversitaria Siciliana di
Specializzazione per l ’ Insegnamento
Secondario.
UD2: Costrutti
principali in java
Modulo Linguaggio Java
Object Oriented Programming
Unità didattica a cura di Massimo Orazio Spata
Prerequisiti
1. Conoscenze di programmazione imperativa
acquisite nella classe III nel corso di
programmazione in C++ o altro linguaggio
imperativo;
2. Conoscenza elementare di HTML;
4° anno: 2 settimane
21/07/2015
2
Obiettivi
1.
Comprendere la filosofia della programmazione OO
e le differenze rispetto alla programmazione
procedurale;
2.
Capire come usare java per la creazione di
semplici applicativi web
21/07/2015
3
Tipo di lezione
1. Brainstorming
2. Lezione frontale
3. Lezione dialogata
4. Largo uso di esempi, immagini, video,
suoni, (multimedia in genere)
Si parte sempre dalla modellazione di oggetti
molto semplici (magari di uso comune);
21/07/2015
4
Strumenti
Appunti
Testi consigliati:
Dispense a cura del docente
21/07/2015
5
Modalità di verifica del profitto:
Prova scritta della durata di 2 ore. La
prova scritta prevede quesiti aperti sugli
argomenti affrontati a lezione e la
progettazione ed implementazione di
una classe o di un insieme di metodi in
Java.
21/07/2015
6
Modulo linguaggio Java
4° anno: 2 settimane
UD2: Costrutti principali in java
- Caratteristiche di Java
- Tipi di dati;
- Operatori e costrutti (rivisitati in Java);
- Librerie a package in java ed esempi;
- Esercitazioni pratiche in laboratorio;
21/07/2015
7
Raccomandazione per le
esercitazioni
Approccio metologico alla risoluzione di problemi
(al fine di rendere uniforme e metodica la
produzione di codice), dunque evitando di sedersi
subito davanti al computer, stilare almeno prima
pseudocodice su carta !
NO !
21/07/2015
8
Perché Java ?
21/07/2015
9
Perché Java: è un linguggio
per reti !
21/07/2015
10
Perché Java parte 2
21/07/2015
11
Introduzione al linguaggio Java
Cosa ha di nuovo Java?
Java ed Internet.
Applicazioni ed Applet: come scriverli e farli
girare.
Caratteristiche originali e differenze con C /
C++.
Dove trovare informazioni?
21/07/2015
12
PARTE 1
INTRODUZIONE AL
SISTEMA DI
PROGRAMMAZIONE JAVA
21/07/2015
13
Possiamo produrre due tipi di programmi Java : Applicazioni
e Applets.
Un’applicazione viene eseguita sul proprio computer
ed é equivalente ad un programma C o C++.
Un applet é fatto per essere trasmesso in rete tra un
Web server ed un client, eseguito attraverso un
browser.
Java non è concepito per essere compatibile con altri linguaggi,
tuttavia è possibile invocare “Metodi Nativi” in linguaggi compilati.
Si perde però la portabilità.
21/07/2015
14
Un esempio di Applicazione
• Installare il JDK !!
• Scrivere il codice in un file Example.java
Example.java
class Example {
Il “programma” é
public static void main (){
costituito da una classe
System.out.println(“Hello World!”);
che implementa un
}
metodo main
}
• Compilare : javac Example.java
• Eseguire applicazione:
21/07/2015
Example.class
java Example
15
Java vs C++
La sintassi è fondata sul C++, con alcune
semplificazioni.
Java non consente l’uso dei puntatori.
Un sistema di garbage collection si occupa
della gestione automatica della memoria.
Interfaccia
Non è possibile l’ereditarietà multipla, ma
Java fornisce le interfacce.
Le classi ed i metodi di I/O sono diversi da quelli del C++.
21/07/2015
16
CARATTERISTICHE
Come definire Java?
Linguaggio di programmazione
orientato agli oggetti.
Le applicazioni Java sono indipendenti dalla
piattaforma su cui vengono prodotte.
Java è stato progettato per realizzare un
linguaggio semplice, robusto e sicuro.
Java è particolarmente adatto per
l’ambiente grafico e per applicazioni in
rete.
21/07/2015
18
JAVA
Llinguaggio (e relativo ambiente di
programmazione) definito dalla Sun
Microsystems …
•… per permettere lo sviluppo di applicazioni
sicure, performanti e robuste su piattaforme
multiple, in reti eterogenee e distribuite
(Internet)
21/07/2015
19
Java ed Internet
Java è un linguaggio OO come molti altri, tuttavia il suo sviluppo ha
subito una enorme spinta dalla diffusione di Internet.
Portabilità e sicurezza sono le caratteristiche che hanno
decretato il successo di Java per le applicazioni di rete.
L’indipendenza dalla piattaforma fa sì che un
programma Java possa essere scaricato dalla rete e
direttamente eseguito su tutte le più diffuse architetture
di computer (Windows, Unix, Linux, Mac ...).
21/07/2015
20
La novita di Java : il BYTECODE
Il compilatore non produce codice macchina, ma un
insieme ottimizzato di istruzioni detto BYTECODE.
Il sistema run-time di Java emula una macchina virtuale
(Java Virtual Machine) che esegue il BYTECODE .
Ogni architettura per la quale la Virtual Machine sia
implementata, può eseguire lo stesso programma Java.
L’efficienza di esecuzione di Java è superiore rispetto agli altri linguaggi
interpretati (Tcl, Perl...), anche se non raggiunge quella dei linguaggi
compilati. Inoltre l’interprete Java fornisce compilatori “just in time” per
trasformare a run-time il BYTECODE in codice macchina, guadagnando in
velocità, ma perdendone la portabilità.
21/07/2015
21
Linguaggi compilati e interpretati
linguaggio
compilato
linguaggio
interpretato
Il compilatore produce un
eseguibile in codice macchina.
L’esecuzione sarà molto veloce
ma lo stesso eseguibile non può
essere usato su piattaforme
diverse.
Il codice é indipendente dalla
piattaforma, ma deve essere
eseguito attraverso un interprete
che in genere è molto poco
efficiente
Java ha un compilatore ed un interprete.
21/07/2015
22
IL LINGUAGGIO JAVA:
CARATTERISTICHE
Semplice e orientato agli oggetti
Interpretato
Architetturalmente neutro e portabile
Robusto
Distribuito
Sicuro
Dinamico
Concorrente (multithread)
21/07/2015
23
SEMPLICE E OO
Sintassi simile a C e C++ (facile da imparare)
Elimina i costrutti più "pericolosi" di C e C++
 aritmetica dei puntatori
 (de)allocazione esplicita della memoria
 strutture (struct)
 definizione di tipi (typedef)
 preprocessore (#define)
Aggiunge garbage collection automatica
Conserva la tecnologia OO di base di C++
Rivisita C++ in alcuni aspetti (C++--==)
21/07/2015
24
INTERPRETATO
Il compilatore produce un codice di tipo
intermedio per una Java Virtual Machine
(“byte-code”) ...
… che viene interpretato
codice
sorgente
21/07/2015
compilatore
byte code
interprete
25
ARCHITETTURALMENTE
NEUTRO
Il byte - code è indipendente dall’architettura
hardware (ANDF: Architecture Neutral Distribution
Format)
Pertanto, un programma bytecode può essere
eseguito su qualsiasi sistema su cui giri un ambiente
run-time Java
21/07/2015
26
ESEMPIO
Sistema tradizionale
eseguibile
macchina A
compilatore
macchina A
codice
sorgente
compilatore
macchina B
eseguibile
macchina B
…….
Sistema ANDF
codice
sorgente
compilatore
macchina A
compilatore
macchina B
…….
21/07/2015
interprete
macchina A
byte code
interprete
macchina B
…….
27
ESEMPIO
Il formato dei dati è specificato esattamente, e
non di minima, come nel C:
byte
 short
 int
 long
 float
 double
 char

21/07/2015
8 bit complemento a 2
16 bit ‘ ‘
32 bit ‘ ‘
64 bit ‘ ‘
32 bit IEEE 754 floating
64 bit ‘ ‘
16 bit Unicode
28
PLATFORM INDEPENDENT
Il sistema Java (compilatore + interprete +
librerie run time) è facilmente portabile su
piattaforme diverse
codice
sorgente
compilatore
byte code
interprete
libreria
– il compilatore Java è scritto in Java
– l’ambiente run-time è scritto in ANSI C con interfacce
standard (POSIX) verso il sistema operativo
– nessuna “implementation dependency”
21/07/2015
S.O.
29
ROBUSTO
Controlli estensivi a compile-time e a run-time,
per rilevare gli errori quanto prima possibile
(es.: type checking)
Per questo, le caratteristiche insicure di C e
C++ sono rimosse:
Nessuna gestione esplicita dei puntatori (no
aritmetica dei puntatori, no malloc e free esplicite, …)
 Gestione della memoria con garbage collection
 Array e stringhe “veri”

Verifica del byte-code a load-time
21/07/2015
30
DISTRIBUITO
Pensato per essere eseguito in rete
Ambiente run-time incorpora funzioni di rete, sia di
basso livello che di alto livello: TCP/IP, HTTP , RMI,
Tunneling, Stream, Socket, …
La rete è facilmente accessibile (come i file locali)
RMI: Capacità di un programma di invocare metodi (azioni) di un oggetto remoto in
maniera trasparente attraverso l’uso di socket.
Stream: Flusso di dati.
Tunneling: Metodo di trasmissione, consistente nell’incapsulare un datagram
di un determinato protocollo in quello di un protocollo diverso, in modo che i dati
racchiusi possano essere trasportati attraverso un backbone (dorsale) che non
supporta nessun protocollo.
21/07/2015
31
JAVA & NETWORKING
21/07/2015
32
SICURO
Un eseguibile prodotto da altri e scaricato via rete sulla
propria macchina potrebbe trasmettere virus o accedere
a dati privati.
Un programma Java non può violare la sicurezza!
L’esecuzione di un BYTECODE Java é confinata nel
sistema run-time che lo interpreta.
Nel linguaggio non esistono i puntatori.
L’ applet non può scrivere né leggere sul client, né aprire
connessioni con altri sistemi.
21/07/2015
33
DINAMICO
Il codice è eseguibile anche in assenza di
alcuni moduli:
… le classi necessarie per la esecuzione di
un programma Java possono essere caricate
e collegate dinamicamente quando servono
Esempio: nuove release di moduli caricabili
automaticamente dalla rete quando servono
21/07/2015
34
CONCORRENTE
Multithreading parte integrante del linguaggio:
Applicazioni interattive facili a scriversi
 Migliore "reattività" (anche se non real-time)

Esempio: caricamento asincrono di immagini
nei browser di rete riduce i tempi di attesa
21/07/2015
35
RICCO
La Standard Library Java contiene una
ricca collezione di classi e di metodi
preconfezionati:
Language support
 Utilities
 Input/output
 Networking
 Abstract Window Toolkit (AWT)
 Swing (dal jdk 1.2 in su)

21/07/2015
36
RIUSABILE
Classi specifiche
sviluppo interno
Classi specializzate dal fornitore di classi
Classi generali
col linguaggio
Linguaggio
21/07/2015
37
TIPI
La nozione di tipo di dato
Il tipo del dato consente di esprimere la
natura del dato
Indica il modo con cui verrà interpretata la
sequenza di bit che rappresenta il dato
La stessa sequenza può rappresentare un
intero o un carattere ad esempio
Determina il campo dei valori che un dato
può assumere
Specifica le operazioni possibili sui dati
21/07/2015
39
Tipi di dati e Java
Java è un linguaggio fortemente tipizzato
Il tipo di ogni variabile o espressione può
essere identificato leggendo il programma ed
è già noto al momento della compilazione
È obbligatorio dichiarare il tipo di una
variabile prima di utilizzarla
Dopo la dichiarazione non è possibile
assegnare alla variabile valori di tipo diverso
21/07/2015
40
Espressioni ed operatori
Un espressione è un istruzione che
restituisce un valore
Gli operatori sono simboli speciali usati
nelle espressioni.
21/07/2015
41
Tipi di dato
Ogni tipo di dato ha:
Un nome int, double, char
Un insieme di valori letterali possibili: 3,
3.1, ‘c’
Un insieme di operazioni lecite: + *
In Java ci sono:
 Tipi
semplici
 Tipi di oggetti o riferimenti a oggetti
21/07/2015
42
Tipi di dati primitivi semplici
Tipi di dati primitivi semplici :
numeri interi, byte, short, int, long
numeri decimali in: virgola mobile,
float, double
i caratteri: char
i valori booleani: boolean
21/07/2015
43
Tipi di dati primitivi numerici
Tipo
Mem (byte)
Min
Max
Float
4
+/- 3,4 * 10^38 con 7 cifre
Double
8
+/- 1.7 * 10^308 con 15 cifre
La
differenza
tra
i
diversi
tipi
di
dato
1
-128
127
Byte
per rappresentare
numeri
consiste
2
-32,768
32,767
Short
nella occupazione
di
memoria.
E
4
2,147 483 648
2,147 483 647
Int
quindi nel valore che possono
8
< 9 *10^18
> 9 *10^18
Long
rappresentare:
21/07/2015
44
CASTING
Per convertire un valore da un tipo di dato ad un altro ci si
serve del casting. Per risultato avremo un nuovo riferimento o
un nuovo valore; oggetto o valore di origine non verranno
modificati.
Esamineremo tre diversi tipi di casting:
1.
2.
3.
casting fra tipi primitivi: da int a float a boolean.
casting fra tipi di oggetto: da una istanza di una classe ad
una istanza di una altra classe.
casting di tipi primitivi in oggetti.
21/07/2015
45
Casting di tipi primitivi
Il casting fra tipi primitivi permette di
convertire un valore da un tipo primitivo
ad un altro.
Esempio: Supposto x = 7.5, ed
y = 5.7, il casting ha questa sintassi:
(nometipo) valore
(int) (x / y) //restituisce 1
21/07/2015
46
Casting di oggetti
Una istanza di una classe potrebbe essere convertita in una
istanza di un’altra classe, con un vincolo: la classe di partenza e
quella di arrivo devono essere in relazione ereditaria; vale a dire
che si può convertire un oggetto solo in un’istanza di una
sottoclasse o di una superclasse della sua classe, e non in una
classe qualunque.
Sintassi:
(nomeclasse) oggetto
Esempio:
MelaVerde a1;
Mela a2;
a1 = new MelaVerde();
a2 = (Mela) a1;
21/07/2015
47
Casting di tipi primitivi in
oggetti e viceversa
Tipi primitivi ed oggetti sono entità profondamente diverse in
Java, e non sono possibili conversioni automatiche dagli uni agli
altri (come visto precedentemente).
Esempio:
// La seguente riga di codice produce un istanza della
classe
// Integer con valore 35. In questo modo si puo’
trattare un valore come un
// oggetto
Integer intObject = new Integer(35);
int theInt = intObject.intValue(); // restituisce 35
21/07/2015
48
Operatori
Operatori aritmetci
Operatore
Significato
Esempio
+
Somma
3+4
-
Sottrazione
5-7
*
Moltiplicazione
5*5
/
Divisione
14 / 7
%
Modulo
20 % 7
21/07/2015
50
Esempio con gli operatori
Class ArithmeticTest {
public static void main(String args[]) {
short x = 6;
int y = 4;
float a = 12.5f;
float b = 7f;
System.out.println(“x
System.out.println(“x
System.out.println(“x
System.out.println(“x
System.out.println(“x
System.out.println(“a
System.out.println(“a
vale “ +x+ “, y vale “+y);
+ y = “+(x + y));
- y = “ +(x - y));
/ y = “ +(x / y));
% y = “ +(x % y));
vale “ +a+ “, b vale “+b);
/ b = “ +(a / b));
}
}
21/07/2015
51
TIPI PRIMITIVI ED OPERATORI:
ANCORA ESEMPI
Dichiarazioni: int i, float f;
Inizializzazioni: double d = 3.14;
Espressioni: i + 5
j = i++ (incremento),
Essenzialmente, gli
i-- (decremento) stessi
operatori del C
Nota:
byte e short vengono sempre promossi a int
prima di essere valutati
Assegnamenti: i = j + 5;
21/07/2015
52
Confronti
Java presenta numerose espressioni per verificare
uguaglianze e confrontare grandezze. Tutte
restituiscono un valore booleano.
Operatore
Significato
Esempio
==
Uguale a
X == 3
!=
Diverso da
X != 3
<
Minore di
X<3
>
Maggiore di
X>3
<=
Minore o uguale a
X <= 3
>=
Maggiore o uguale a
X >= 3
21/07/2015
53
Operatori logici
Le espressioni che producono valori booleani si possono combinare
mediante operatori logici che rappresentano i connettivi logici AND, OR,
XOR e NOT logico.
Operatore
Significato
Valore espressione
&
AND bit per bit
TRUE (entrambi gli operandi sono
qualunque sia il risultato) sse
sono true
&&
AND logico
TRUE sse entrambi gli operandi
|
OR bit per bit
TRUE (entrambi gli operandi sono
qualunque sia il risultato) sse
operandi e ‘ true
||
OR logico
TRUE sse almeno uno degli
^
XOR
TRUE sse i valori degli operandi
!
NOT
TRUE sse operando e ’ false
21/07/2015
54
Precedenze tra gli operatori
Priorita ‘
Operatore
Note
1
. [] ()
Le parentesi tonde raggruppano espressioni il punto è utilizzato
per accedere a metodi e variabili entro oggetti e classi, le
parentesi quadre si utlizzano per gli array
++ -- !
Instanceof restituisce
5
+ -
Somma sottrazione
6
<< >> >>>
Scorrimenti a destra e sinistra di bit
7
<> <= >=
Confonti
8
== !=
Eguaglianze
9
&
AND
10
^
XOR
11
|
OR
12
&&
AND logico
13
||
OR logico
14
?:
Abbreviazione di if then else
15
= += -= *= /= %=
^= &= |= <<= >>=
>>>=
Assegnamenti vari
2
3
4
true o false a seconda che l’oggetto sia o
Le precedenze
tra glino operatori
determinano
ordine
cui viene
instanceof
un istanza della
classe citataun
o di
una suacon
superclasse
valutata
Questo
influire
suldelle
risultato.
new un espressione.
L’operatore
new siordine
impiega potrebbe
per creare nuove
istanze
classi;
(tipo)espressione
le parentesi permettono in questo caso di convertire un valore in
Es. y = 6 + 4 / 2;
un tipo particolare
/ %
Moltiplicazione
DivisioneleModulo
Nella* seguente
tabella
sono riassunte
precedenze tra gli operatori:
21/07/2015
55
Stringhe
Una stringa è una serie di caratteri. In java le stringhe sono
una istanza della classe String. Esse non sono array di
caratteri, come in C e C++, pur avendo molte caratteristiche
degli array. Essendo oggetti veri e propri, le stringhe di Java
sono dotate di metodi con i quali si possono comporre,
confrontare e modificare facilmente.
Un letterale stringa è costituito da una serie di caratteri
racchiusi tra doppi apici:
Esempio: “Ciao, io sono un letterale stringa.”
Una stringa può contenere costanti carattere, come salti di
riga, tabulatori e caratteri Unicode:
Esempio: “Una stringa contenente un \t carattere tabulatore”
Esempio: “Questa stringa è fornita da Java\u2122” (il
marchio registrato ™
21/07/2015
56
Aritmetica delle stringhe
In Java l’operatore di addizione (+) si utlizza
anche per creare e concatenare sequenze di
caratteri (stringhe)
Esempio:
String nome = new String(“Max”);
String colore = new String(“rossa”);
System.out.println(nome +” ha una carpetta
“+colore);
Ogni oggetto o tipo può essere convertito in
stringa implementando il metodo
toString()
21/07/2015
57
COSTRUTTI
Istruzioni condizionali ed i cicli
Le istruzioni condizionali comprendono
if e switch, con le quali si può
guidare l’esecuzione sulla base di una
condizione booleana.
I cicli comprendono il for, while, do,
che permettono di ripetere l’esecuzione
di una porzione di codice fino al
verificarsi di una condizione.
21/07/2015
59
PACKAGES
Pacchetti
Un package raggruppa un insieme di classi correlate, che
possono essere importate nelle applicazioni.
L’appartenenza ad un pacchetto si realizza inserendo
all’inizio del file l’istruzione : package MyPackage;
Per importare in una applicazione le classi del pacchetto:
import MyPackage.*;
java.lang
java.net
java.io java.util java.applet
21/07/2015
java.awt
java.awt.image
java.awt.peer
61
PACKAGE
Molte classi o interfacce intercorrelate
possono essere riunite in un package,
dotato di nome
classe o
interfaccia
MyPackage
Esempio:
c
b
a
d
21/07/2015
e
62
NOMI DI CLASSI
Il nome di una classe (o di una
interfaccia) va sempre qualificato con il
nome del package a cui appartiene,
tranne quando viene usato dentro lo
stesso package
Esempio: aaa.bbb.ccc.MyClass
all’interno di aaa.bbb.ccc basta questo
21/07/2015
63
NOMI DI PACKAGE
Il nome di un package e ‘ composto da identificatori
separati da “.”:
massimo.utilities.internet
Per evitare che package di produttori diversi abbiano
lo stesso nome, si suggerisce di far iniziare il nome
del package con il dominio Internet del produttore
(invertito, e con il nome di più alto livello tutto
maiuscolo):
massimo.utilities.internet
nome di dominio
21/07/2015
64
PACKAGES STANDARD
ja v a .la n g
cla ssi b a se d e l lin g u a g g io
(O b je c t, T h re a d , T h ro w a b le , S y s te m , S trin g ,
M a th , w ra p p e r c la s s e s , … )
ja v a .io
cla ssi d i I/O
(F ile In p u tS tre a m , F ile O u tp u tS tre a m , )
ja v a .u til
cla ssi d i u tilità
(D a te , R a n d o m , … )
ja v a .a p p le t
cla ssi d i su p p o rto a lle a p p lica zio n i d i
re te (so cke t, U R L , … )
cla sse A p p le t, …
ja v a .a w t
A b stra ct W in d o w in g T o o lkit
ja v a .n e t
21/07/2015
65
LO STATEMENT package
Specifica che le classi che seguono apparten-gono a
un certo package
Deve apparire (una sola volta) all ’ inizio del file di
compilazione
Esempio:
a.java
package p;
le classi a,b,c appartengono
al package p
class a {..
class b {...
Se lo statement è omesso,
la classe appartiene al
package anonimo
class c {..
21/07/2015
66
LO STATEMENT import
Per evitare di usare sempre nomi completi di classi, si usa lo statement
import
Esempio:
import java.util.Date;
class MyClass {
Date today;
//equivale ad  java.util.Date today senza import .. iniziale;
…
}
Note:
import java.util.* importa tutte le classi del package java.util
java.lang.* è sempre importato implicitamente
21/07/2015
67
PACKAGE E DIRECTORY
Molti ambienti Java mappano i nomi dei
package sui pathname del file system
(compilatore e class loader)
Esempio:
aaa.bbb.ccc.MyClass
package
classe
aaa/bbb/ccc/MyClass
directories
file
pathname
21/07/2015
68
VISIBILITA ’
Classi e interfacce
sono visibili all ’ interno del package in cui sono
dichiarate; sono visibili all ’ esterno del package
solo se dichiarate public
public class a { …
public interface b { …
Membri (campi e metodi)
sono visibili quando:
 la loro classe è visibile e
 il loro modificatore li rende visibili
21/07/2015
69
più visibile
VISIBILITA ’ DI CAMPI E
METODI
Modificatore
private
nessuno (default)
protected
public
Visibilità
solo nella classe in cui è definito
solo nelle classi del package
classi nel package e sottoclassi
(stesso package o altri package)
tutte le classi
NB: I membri di una interfaccia sono sempre publici
21/07/2015
70
ESEMPIO
package pac
class a
{...
class b {
private int i;
private void m( ) {…}
int j;
visibile
void n( ) {…}
public int k;
public p( ){…}
protected int i;
protected void m( ){…}
class c {...
class d extends b {...
21/07/2015
class e extends d {...
71
PROGETTARE LA VISIBILITA
’
Quando progettiamo una classe dobbiamo pensare a
due tipi di utenti:
quelli che utilizzeranno la classe per realizzare delle
applicazioni
quelli che estenderanno la classe per realizzare
sottoclassi
I primi useranno i membri public; i secondi anche i
membri protected
Le interfacce public e protected vanno progettate
con cura
21/07/2015
72
DUE TIPI DI UTENTI
class a {
private int i;
private void m( ) {…}
int j;
void n( ) {…}
public int k;
public p( ){…}
protected int i;
protected void m( ){…}
ESTENDE
USA
package pac
interfaccia
21/07/2015
interfaccia
73
PACKAGES: RIASSUNTO
I packages:
permettono di creare gruppi di classi e interfacce
fra loro in relazione
definiscono uno spazio di nomi locale per classi e
interfacce evitando conflitti con classi e interfacce
di altri packages
permettono di avere classi, interfacce e membri
(campi e metodi) non visibili all esterno del
package
possono essere organizzati gerarchicamente
21/07/2015
74
Riferimenti
Windows NT/95
Sun Unix Solaris
Macintosh 1.0.2
http://www.javasoft.com
HP-UX 10.x
Digital UNIX
IBM AIX
SUN Unix Solaris
http://java.sun.com
Linux
http://www.blackdown.org/java-linux.html
http://www.gamelan.com
Java - P.Naughton, H.Schildt McGraw Hill
Java in a nutshell - D.Flanagan O’Really
21/07/2015
75
Domande ?
21/07/2015
76