© M. Badella, G. Malnati, L. Tessitore 2003-05 Programmazione ad Oggetti A.A. 2004-05 Package.

35
© M. Badella, G. Malnati, L. Tessitore 2003-05 Programmazione ad Oggetti A.A. 2004-05 Package

Transcript of © 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.

© 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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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,…