Download - © M. Badella, G. Malnati, L. Tessitore 2003-05 Programmazione ad Oggetti A.A. 2004-05 Package
![Page 1: © M. Badella, G. Malnati, L. Tessitore 2003-05 Programmazione ad Oggetti A.A. 2004-05 Package](https://reader035.vdocuments.site/reader035/viewer/2022062512/5542eb69497959361e8d57c7/html5/thumbnails/1.jpg)
© M
. Bad
ella
, G. M
alna
ti, L
. Tes
sito
re 2
003-
05
Programmazione ad Oggetti
A.A. 2004-05
Package
![Page 2: © M. Badella, G. Malnati, L. Tessitore 2003-05 Programmazione ad Oggetti A.A. 2004-05 Package](https://reader035.vdocuments.site/reader035/viewer/2022062512/5542eb69497959361e8d57c7/html5/thumbnails/2.jpg)
2
© M
. Bad
ella
, G. M
alna
ti, L
. Tes
sito
re 2
003-
05
Programmazione ad Oggetti
Argomenti della lezione
Raggruppare le classi in package
Struttura dei packagedelle API Java
Il packagejava.lang
![Page 3: © M. Badella, G. Malnati, L. Tessitore 2003-05 Programmazione ad Oggetti A.A. 2004-05 Package](https://reader035.vdocuments.site/reader035/viewer/2022062512/5542eb69497959361e8d57c7/html5/thumbnails/3.jpg)
3
© M
. Bad
ella
, G. M
alna
ti, L
. Tes
sito
re 2
003-
05
Programmazione ad Oggetti
Nomi delle classi
La metodologia ad oggetti favorisce il riuso delle classi Il nome della classe dovrebbe suggerirne la
semanticaA volte bisogna utilizzare nello stesso progetto
classi già esistenti, di provenienza diversa ed aventi lo stesso nome
Occorre poter differenziare ulteriormente tali classi
![Page 4: © M. Badella, G. Malnati, L. Tessitore 2003-05 Programmazione ad Oggetti A.A. 2004-05 Package](https://reader035.vdocuments.site/reader035/viewer/2022062512/5542eb69497959361e8d57c7/html5/thumbnails/4.jpg)
4
© M
. Bad
ella
, G. M
alna
ti, L
. Tes
sito
re 2
003-
05
Programmazione ad Oggetti
Package: un cognome per le classi
Le classi possono essere raggruppate in “package”Ogni package ha un nomeViene scelto in modo da essere univoco
Una classe è denotata:Dal nome proprioDal package di appartenenza
![Page 5: © M. Badella, G. Malnati, L. Tessitore 2003-05 Programmazione ad Oggetti A.A. 2004-05 Package](https://reader035.vdocuments.site/reader035/viewer/2022062512/5542eb69497959361e8d57c7/html5/thumbnails/5.jpg)
5
© M
. Bad
ella
, G. M
alna
ti, L
. Tes
sito
re 2
003-
05
Programmazione ad Oggetti
Package: appartenenza
Le classi che appartengono ad uno stesso package formano un gruppo
Come nel caso di una famiglia, c’è un rapporto privilegiato: Accessibilità a tutti i componenti non privati
(public, protected, <vuoto>)
![Page 6: © M. Badella, G. Malnati, L. Tessitore 2003-05 Programmazione ad Oggetti A.A. 2004-05 Package](https://reader035.vdocuments.site/reader035/viewer/2022062512/5542eb69497959361e8d57c7/html5/thumbnails/6.jpg)
6
© M
. Bad
ella
, G. M
alna
ti, L
. Tes
sito
re 2
003-
05
Programmazione ad Oggetti
Il nome dei package
Sequenza di parole separate da ‘.’ Dovrebbe suggerire lo scopo comune del
gruppo di classi Per evitare collisioni, spesso inizia con il nome
DNS in ordine inverso it.polito.didattica.esempi
![Page 7: © M. Badella, G. Malnati, L. Tessitore 2003-05 Programmazione ad Oggetti A.A. 2004-05 Package](https://reader035.vdocuments.site/reader035/viewer/2022062512/5542eb69497959361e8d57c7/html5/thumbnails/7.jpg)
7
© M
. Bad
ella
, G. M
alna
ti, L
. Tes
sito
re 2
003-
05
Programmazione ad Oggetti
Sintassi
La parola chiave “package” denota il gruppo di appartenenzaÈ seguita dal nome del packageDeve essere posta all’inizio del file sorgente
![Page 8: © M. Badella, G. Malnati, L. Tessitore 2003-05 Programmazione ad Oggetti A.A. 2004-05 Package](https://reader035.vdocuments.site/reader035/viewer/2022062512/5542eb69497959361e8d57c7/html5/thumbnails/8.jpg)
8
© M
. Bad
ella
, G. M
alna
ti, L
. Tes
sito
re 2
003-
05
Programmazione ad Oggetti
Sintassi
Le classi dello stesso package si “conoscono”Basta usare il nome proprio della classe
Tra package diversi occorre usare il nome completoAnche nei costruttori
![Page 9: © M. Badella, G. Malnati, L. Tessitore 2003-05 Programmazione ad Oggetti A.A. 2004-05 Package](https://reader035.vdocuments.site/reader035/viewer/2022062512/5542eb69497959361e8d57c7/html5/thumbnails/9.jpg)
9
© M
. Bad
ella
, G. M
alna
ti, L
. Tes
sito
re 2
003-
05
Programmazione ad Oggetti
packagepackage formeforme;;
public class Cerchio {public class Cerchio {//…//…
}}
packagepackage formeforme;;
public class Cerchio {public class Cerchio {//…//…
}} packagepackage provaprova;;class Esempio {class Esempio {
forme.Cerchioforme.Cerchio c;c;
Esempio () {Esempio () { c=newc=new forme.Cerchioforme.Cerchio();(); }}}}
packagepackage provaprova;;class Esempio {class Esempio {
forme.Cerchioforme.Cerchio c;c;
Esempio () {Esempio () { c=newc=new forme.Cerchioforme.Cerchio();(); }}}}
Cerchio.javaCerchio.javaCerchio.javaCerchio.java
Esempio.javaEsempio.javaEsempio.javaEsempio.java
Esempio
![Page 10: © M. Badella, G. Malnati, L. Tessitore 2003-05 Programmazione ad Oggetti A.A. 2004-05 Package](https://reader035.vdocuments.site/reader035/viewer/2022062512/5542eb69497959361e8d57c7/html5/thumbnails/10.jpg)
10
© M
. Bad
ella
, G. M
alna
ti, L
. Tes
sito
re 2
003-
05
Programmazione ad Oggetti
Importare riferimenti
L’uso di nomi completi è scomodo Gli amici si chiamano per nome
Il costrutto “import” permette di definire le classi note Queste vengono indicate solo per nome Serve solo in fase di compilazione!
![Page 11: © M. Badella, G. Malnati, L. Tessitore 2003-05 Programmazione ad Oggetti A.A. 2004-05 Package](https://reader035.vdocuments.site/reader035/viewer/2022062512/5542eb69497959361e8d57c7/html5/thumbnails/11.jpg)
11
© M
. Bad
ella
, G. M
alna
ti, L
. Tes
sito
re 2
003-
05
Programmazione ad Oggetti
Esempio
package prova;package prova;importimport forme.Cerchio;forme.Cerchio;
class Esempio {class Esempio { CerchioCerchio c;c;
Esempio () {Esempio () { c=newc=new CerchioCerchio();(); }}}}
package prova;package prova;importimport forme.Cerchio;forme.Cerchio;
class Esempio {class Esempio { CerchioCerchio c;c;
Esempio () {Esempio () { c=newc=new CerchioCerchio();(); }}}}
Esempio.javaEsempio.javaEsempio.javaEsempio.java
![Page 12: © M. Badella, G. Malnati, L. Tessitore 2003-05 Programmazione ad Oggetti A.A. 2004-05 Package](https://reader035.vdocuments.site/reader035/viewer/2022062512/5542eb69497959361e8d57c7/html5/thumbnails/12.jpg)
12
© M
. Bad
ella
, G. M
alna
ti, L
. Tes
sito
re 2
003-
05
Programmazione ad Oggetti
Importare riferimenti
Si possono includere un numero qualsiasi di clausole import Devono sempre precedere la definizione della
classe
Per importare tutte le classi di un package, si usa la sintassi import NomePackage.* ;
![Page 13: © M. Badella, G. Malnati, L. Tessitore 2003-05 Programmazione ad Oggetti A.A. 2004-05 Package](https://reader035.vdocuments.site/reader035/viewer/2022062512/5542eb69497959361e8d57c7/html5/thumbnails/13.jpg)
13
© M
. Bad
ella
, G. M
alna
ti, L
. Tes
sito
re 2
003-
05
Programmazione ad Oggetti
Gerarchia di package
Il nome di un package può essere formato da molti segmenti Package che condividono lo stesso prefisso,
possono avere funzionalità “collegate”o java.awto java.awt.event
Per Java, sono gruppi totalmente separati
![Page 14: © M. Badella, G. Malnati, L. Tessitore 2003-05 Programmazione ad Oggetti A.A. 2004-05 Package](https://reader035.vdocuments.site/reader035/viewer/2022062512/5542eb69497959361e8d57c7/html5/thumbnails/14.jpg)
14
© M
. Bad
ella
, G. M
alna
ti, L
. Tes
sito
re 2
003-
05
Programmazione ad Oggetti
Package anonimo
Le classi che non dichiarano in modo esplicito il proprio package appartengono al package “anonimo” A partire dalla versione 1.4, le classi del
package anonimo non possono essere utilizzate da classi appartenenti ad altri package
![Page 15: © M. Badella, G. Malnati, L. Tessitore 2003-05 Programmazione ad Oggetti A.A. 2004-05 Package](https://reader035.vdocuments.site/reader035/viewer/2022062512/5542eb69497959361e8d57c7/html5/thumbnails/15.jpg)
15
© M
. Bad
ella
, G. M
alna
ti, L
. Tes
sito
re 2
003-
05
Programmazione ad Oggetti
Compilare ed eseguire
Per poter utilizzare una classe all’interno di un’altra non basta “risolverne” il nome Occorre localizzare il codice ad essa
associato Altrimenti viene lanciato l’errore
“NoClassDefFoundError”
![Page 16: © M. Badella, G. Malnati, L. Tessitore 2003-05 Programmazione ad Oggetti A.A. 2004-05 Package](https://reader035.vdocuments.site/reader035/viewer/2022062512/5542eb69497959361e8d57c7/html5/thumbnails/16.jpg)
16
© M
. Bad
ella
, G. M
alna
ti, L
. Tes
sito
re 2
003-
05
Programmazione ad Oggetti
Rappresentazione su disco
Ad ogni classe, corrisponde un file “.class” che contiene il codice eseguibileQuesto deve risiedere in una (gerarchia di)
cartella il cui nome coincide con quello del package
Le classi del package anonimo si trovano nella cartella radice
![Page 17: © M. Badella, G. Malnati, L. Tessitore 2003-05 Programmazione ad Oggetti A.A. 2004-05 Package](https://reader035.vdocuments.site/reader035/viewer/2022062512/5542eb69497959361e8d57c7/html5/thumbnails/17.jpg)
17
© M
. Bad
ella
, G. M
alna
ti, L
. Tes
sito
re 2
003-
05
Programmazione ad Oggetti
packagepackage geom.forme;geom.forme;
public class Cerchio {public class Cerchio {//…//…
}}
packagepackage geom.forme;geom.forme;
public class Cerchio {public class Cerchio {//…//…
}}
public class Test {public class Test {//…//…
}}
public class Test {public class Test {//…//…
}}
TestTest.class.classTestTest
.class.class
......
geomgeom
CerchioCerchio.class.class
CerchioCerchio.class.class
formeforme
Rappresentazione su disco
![Page 18: © M. Badella, G. Malnati, L. Tessitore 2003-05 Programmazione ad Oggetti A.A. 2004-05 Package](https://reader035.vdocuments.site/reader035/viewer/2022062512/5542eb69497959361e8d57c7/html5/thumbnails/18.jpg)
18
© M
. Bad
ella
, G. M
alna
ti, L
. Tes
sito
re 2
003-
05
Programmazione ad Oggetti
La variabile CLASSPATH
Variabile d’ambiente del sistema operativoSpecifica un insieme di cartelle radice in cui
cercare i file “.class” o le sottocartelle dei package
Può contenere direttori compressi (file “.jar”)
set CLASSPATH=set CLASSPATH= . ; c:\a.jar; c:\classes . ; c:\a.jar; c:\classes
set CLASSPATH=set CLASSPATH= . ; c:\a.jar; c:\classes . ; c:\a.jar; c:\classes
Cerca i file .class, in ordine:Nella cartella in cui viene eseguita la JVM (“.”)Nella cartella compressa c:\a.jarNella cartella c:\classes
![Page 19: © M. Badella, G. Malnati, L. Tessitore 2003-05 Programmazione ad Oggetti A.A. 2004-05 Package](https://reader035.vdocuments.site/reader035/viewer/2022062512/5542eb69497959361e8d57c7/html5/thumbnails/19.jpg)
19
© M
. Bad
ella
, G. M
alna
ti, L
. Tes
sito
re 2
003-
05
Programmazione ad Oggetti
File Jar
Gerarchie di cartelle e file compressiAnaloghi a file “.zip”Possono essere manipolati con il comando “jar”
Facilitano la distribuzione di interi package
![Page 20: © M. Badella, G. Malnati, L. Tessitore 2003-05 Programmazione ad Oggetti A.A. 2004-05 Package](https://reader035.vdocuments.site/reader035/viewer/2022062512/5542eb69497959361e8d57c7/html5/thumbnails/20.jpg)
20
© M
. Bad
ella
, G. M
alna
ti, L
. Tes
sito
re 2
003-
05
Programmazione ad Oggetti
API Java
Application Programming Interface Insieme di meccanismi per interagire con il
sistema ospitanteProgettati interamente ad oggetti
Offrono Funzioni di libreria Interfaccia verso il sistema operativo
Versione 1.4.2:135 packageOltre 2700 classi
![Page 21: © M. Badella, G. Malnati, L. Tessitore 2003-05 Programmazione ad Oggetti A.A. 2004-05 Package](https://reader035.vdocuments.site/reader035/viewer/2022062512/5542eb69497959361e8d57c7/html5/thumbnails/21.jpg)
21
© M
. Bad
ella
, G. M
alna
ti, L
. Tes
sito
re 2
003-
05
Programmazione ad Oggetti
Package principali
java.awt Abstract Windowing Toolkit Classi per creare interfacce utente di tipo
grafico
java.io Input/Output Classi per accedere a a flussi di dati, file e altri
meccanismi di comunicazione
![Page 22: © M. Badella, G. Malnati, L. Tessitore 2003-05 Programmazione ad Oggetti A.A. 2004-05 Package](https://reader035.vdocuments.site/reader035/viewer/2022062512/5542eb69497959361e8d57c7/html5/thumbnails/22.jpg)
22
© M
. Bad
ella
, G. M
alna
ti, L
. Tes
sito
re 2
003-
05
Programmazione ad Oggetti
Package principali
java.langContiene le classi fondamentali del linguaggio
java.mathEstensioni matematicheClassi per modellare numeri interi e reali con
precisione illimitata
java.netMeccanismi di accesso alla rete Socket, URL, connessioni HTTP, …
![Page 23: © M. Badella, G. Malnati, L. Tessitore 2003-05 Programmazione ad Oggetti A.A. 2004-05 Package](https://reader035.vdocuments.site/reader035/viewer/2022062512/5542eb69497959361e8d57c7/html5/thumbnails/23.jpg)
23
© M
. Bad
ella
, G. M
alna
ti, L
. Tes
sito
re 2
003-
05
Programmazione ad Oggetti
Package principali
java.nio New Input/Output Meccanismi di basso livello per interfacciarsi
con il mondo esterno
java.security Classi che implementano il modello di
sicurezza di Java
java.sql Accesso a basi dati relazionali
![Page 24: © M. Badella, G. Malnati, L. Tessitore 2003-05 Programmazione ad Oggetti A.A. 2004-05 Package](https://reader035.vdocuments.site/reader035/viewer/2022062512/5542eb69497959361e8d57c7/html5/thumbnails/24.jpg)
24
© M
. Bad
ella
, G. M
alna
ti, L
. Tes
sito
re 2
003-
05
Programmazione ad Oggetti
Package principali
java.textTrattamento multiculturale di numeri, date, testo
java.util Insieme variegato di classi ad uso generale
![Page 25: © M. Badella, G. Malnati, L. Tessitore 2003-05 Programmazione ad Oggetti A.A. 2004-05 Package](https://reader035.vdocuments.site/reader035/viewer/2022062512/5542eb69497959361e8d57c7/html5/thumbnails/25.jpg)
25
© M
. Bad
ella
, G. M
alna
ti, L
. Tes
sito
re 2
003-
05
Programmazione ad Oggetti
java.lang: l’ABC delle applicazioni Java
Fornisce le classi fondamentali per la programmazione Java Importato automaticamente dal compilatore in
tutti i programmi
Contiene – tra le altre – le classi Object, Throwable, String
![Page 26: © M. Badella, G. Malnati, L. Tessitore 2003-05 Programmazione ad Oggetti A.A. 2004-05 Package](https://reader035.vdocuments.site/reader035/viewer/2022062512/5542eb69497959361e8d57c7/html5/thumbnails/26.jpg)
26
© M
. Bad
ella
, G. M
alna
ti, L
. Tes
sito
re 2
003-
05
Programmazione ad Oggetti
java.lang.StringBuffer
Analoga alla classe String Ma permette di modificare i caratteri contenuti
Principali operazioni append(…) insert(…) replace(…) toString()
![Page 27: © M. Badella, G. Malnati, L. Tessitore 2003-05 Programmazione ad Oggetti A.A. 2004-05 Package](https://reader035.vdocuments.site/reader035/viewer/2022062512/5542eb69497959361e8d57c7/html5/thumbnails/27.jpg)
27
© M
. Bad
ella
, G. M
alna
ti, L
. Tes
sito
re 2
003-
05
Programmazione ad Oggetti
Classi “wrapper”
Utilizzate per trasformare in oggetti dati elementari Il dato contenuto è immutabile
Pattern generaledell’ingegneriadel software oggettooggetto
risorsarisorsanon ad oggettinon ad oggetti
risorsarisorsanon ad oggettinon ad oggetti
![Page 28: © M. Badella, G. Malnati, L. Tessitore 2003-05 Programmazione ad Oggetti A.A. 2004-05 Package](https://reader035.vdocuments.site/reader035/viewer/2022062512/5542eb69497959361e8d57c7/html5/thumbnails/28.jpg)
28
© M
. Bad
ella
, G. M
alna
ti, L
. Tes
sito
re 2
003-
05
Programmazione ad Oggetti
Classi “wrapper”
ByteByteByteByte
ShortShortShortShort
IntegerIntegerIntegerInteger
LongLongLongLong
FloatFloatFloatFloat
DoubleDoubleDoubleDouble
NumberNumberNumberNumber
ObjectObjectObjectObject
BooleanBooleanBooleanBoolean CharCharCharChar
![Page 29: © M. Badella, G. Malnati, L. Tessitore 2003-05 Programmazione ad Oggetti A.A. 2004-05 Package](https://reader035.vdocuments.site/reader035/viewer/2022062512/5542eb69497959361e8d57c7/html5/thumbnails/29.jpg)
29
© M
. Bad
ella
, G. M
alna
ti, L
. Tes
sito
re 2
003-
05
Programmazione ad Oggetti
Wrapper numerici
Sottoclassi di Number Metodi per
Trasformare una stringa in un numero e viceversa
Trasformare un numero in formati diversi (con possibile troncamento)
Rappresentazione testuale ottale, esadecimale, binaria
![Page 30: © M. Badella, G. Malnati, L. Tessitore 2003-05 Programmazione ad Oggetti A.A. 2004-05 Package](https://reader035.vdocuments.site/reader035/viewer/2022062512/5542eb69497959361e8d57c7/html5/thumbnails/30.jpg)
30
© M
. Bad
ella
, G. M
alna
ti, L
. Tes
sito
re 2
003-
05
Programmazione ad Oggetti
Character, Boolean
Character Maiuscolo / minuscolo Valore Unicode Confronto …
Boolean Conversione da/verso stringa Confronto …
![Page 31: © M. Badella, G. Malnati, L. Tessitore 2003-05 Programmazione ad Oggetti A.A. 2004-05 Package](https://reader035.vdocuments.site/reader035/viewer/2022062512/5542eb69497959361e8d57c7/html5/thumbnails/31.jpg)
31
© M
. Bad
ella
, G. M
alna
ti, L
. Tes
sito
re 2
003-
05
Programmazione ad Oggetti
java.lang.System
Contiene attributi e metodi statici, utilizzati per: Interazione con il sistema Acquisizione di informazioni Caricamento di librerie Accesso a standard input e output …
Non può essere istanziata
![Page 32: © M. Badella, G. Malnati, L. Tessitore 2003-05 Programmazione ad Oggetti A.A. 2004-05 Package](https://reader035.vdocuments.site/reader035/viewer/2022062512/5542eb69497959361e8d57c7/html5/thumbnails/32.jpg)
32
© M
. Bad
ella
, G. M
alna
ti, L
. Tes
sito
re 2
003-
05
Programmazione ad Oggetti
System: i metodi (1)
exit(…) terminazione della JVM
currentTimeMillis() Numero di millisecondi trascorsi dal 1 gennaio
1970
setProperties(…)/getProperties(…) assegnazione e acquisizione delle proprietà di
sistema
![Page 33: © M. Badella, G. Malnati, L. Tessitore 2003-05 Programmazione ad Oggetti A.A. 2004-05 Package](https://reader035.vdocuments.site/reader035/viewer/2022062512/5542eb69497959361e8d57c7/html5/thumbnails/33.jpg)
33
© M
. Bad
ella
, G. M
alna
ti, L
. Tes
sito
re 2
003-
05
Programmazione ad Oggetti
System: i metodi (2)
gc() invocazione del garbage collector
load(…) / loadLibrary(…) carica dinamicamente un file o una libreria
setIn(…), setOut(…), setErr(…) riassegnazione dei flussi standard
![Page 34: © M. Badella, G. Malnati, L. Tessitore 2003-05 Programmazione ad Oggetti A.A. 2004-05 Package](https://reader035.vdocuments.site/reader035/viewer/2022062512/5542eb69497959361e8d57c7/html5/thumbnails/34.jpg)
34
© M
. Bad
ella
, G. M
alna
ti, L
. Tes
sito
re 2
003-
05
Programmazione ad Oggetti
java.lang.Math
Mette a disposizione glistrumenti necessari per le operazioni matematiche base Contiene solo metodi e attributi statici valore assoluto, logaritmo, potenza,
trigonometrici, minimo, massimo, …
Math.pow(2,10); //210
![Page 35: © M. Badella, G. Malnati, L. Tessitore 2003-05 Programmazione ad Oggetti A.A. 2004-05 Package](https://reader035.vdocuments.site/reader035/viewer/2022062512/5542eb69497959361e8d57c7/html5/thumbnails/35.jpg)
35
© M
. Bad
ella
, G. M
alna
ti, L
. Tes
sito
re 2
003-
05
Programmazione ad Oggetti
java.lang.Runtime
Singola istanza per ogni applicazione Consente di interfacciarsi con il sistema
operativo
Metodi Alcuni analoghi a System: exit, gc, … Esecuzione di un processo, memoria
disponibile,…