Capitolo 3
Oggetti
Lucidi relativi al volume:
Java – Guida alla programmazione
James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Imparare a utilizzare le classi
 Compito corrente
 Acquisire esperienza nella creazione e nella manipolazione
di oggetti dai tipi Java standard
 Perché
 Prepara alla definizione di classi personali e alla creazione
e manipolazione degli oggetti di queste classi
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Valori e oggetti
 Numeri
 Dispongono di valori ma non di comportamenti
 Oggetti
 Dispongono di attributi e comportamenti
 System.in
 Fa riferimento a un InputStream
 Attributo: tastiera
 Comportamenti: lettura
 System.out
 Fa riferimento a un OutputStream
 Attributo: monitor
 Comportamenti: stampa
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Altri tipi di oggetti Java
 Stringa
 Rettangolo
 Colore
 JFrame
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Considerare
 Istruzioni
int peasPerPod = 8;
String message = "Don't look behind the door!“
 Come si possono rappresentare queste definizioni secondo le
nozioni di Java?
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Rappresentazione
Il valore della variabile primitiva int
peasPerPod è 8
Il valore del
messaggio contenuto
nella variabile String
è un riferimento a un
oggetto String che
rappresenta la
stringa di caratteri
"Non guardare dietro
la porta!"
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Rappresentazione abbreviata
peasPerPod
message
8
"Don't look behind the door!"
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Esempi
 Considerare
String a = "excellence“;
String b = a;
 Qual è la rappresentazione?
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Esempi
 Considerare
String a = "excellence“;
String b = a;
 Qual è la rappresentazione?
a
b
"excellence"
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Esempi
I primi
The
first due
t woparametri
paramet ersdel
of t he
costruttore di Rectangle
Rect angle const ruct or specify t he
specificano la posizione
posit
ion of t he
upper-leftsinistro
-hand
dell'angolo
superiore
corner
of t he
new Rect angle
del nuovo
rettangolo
int x = 3;
int y = 4;
int width = 5;
int height = 2;
Rectangle r = new Rectangle(x, y, width, height);
The
t hirdeand
fourt h
Il terzo
il quarto
paramet
ers of
parametro
delt he
costruttore
di Rectangle
Rect
angle const
ruct or
specificano
le
specify
t he dimensions
of
del nuovo
tdimensioni
he new Rect angle
rettangolo
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Esempi
I primi
The
first due
t woparametri
paramet ersdel
of t he
costruttore di Rectangle
Rect angle const ruct or specify t he
specificano la posizione
posit
ion of t he
upper-leftsinistro
-hand
dell'angolo
superiore
corner
of t he
new Rect angle
del nuovo
rettangolo
int x = 3;
int y = 4;
int width = 5;
int height = 2;
Rectangle r = new Rectangle(x, y, width, height);
x
3
y
4
width
5
height
2
The
t hirdeand
fourt h
Il terzo
il quarto
paramet
ers of
parametro
delt he
costruttore
di Rectangle
Rect
angle const
ruct or
specificano
le
specify
t he dimensions
of
del nuovo
tdimensioni
he new Rect angle
rettangolo
(3, 4)
r
2
Rectangle:
5
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Non inizializzato e null
 Considerare
String dayOfWeek;
BufferedReader inStream;
Rectangle frame;
 Qual è la rappresentazione?
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Non inizializzato e null
 Considerare
String dayOfWeek;
BufferedReader inStream;
Rectangle frame;
 Qual è la rappresentazione?
dayOfWeek
-
inStream
-
frame
-
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Non inizializzato e null
 Considerare
String fontName = null;
BufferedReader fileStream = null;
Rectangle boundingBox = null;
 Qual è la rappresentazione?
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Non inizializzato e null
 Considerare
String fontName = null;
BufferedReader fileStream = null;
Rectangle boundingBox = null;
 Qual è la rappresentazione?
fontName
null
fileStream
null
boundingBox
null
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Assegnazione
 Considerare
String word1 = "luminous";
String word2 = "graceful";
Word1 = word2;
 Rappresentazione iniziale
word1
"luminous"
word2
"graceful"
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Assegnazione
 Considerare
String word1 = "luminous";
String word2 = "graceful";
Word1 = word2;
 Dopo l'assegnazione
word1
word2
"graceful"
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Variabili finali
 Considerare
final String POEM_TITLE = “Appearance of Brown";
final String WARNING = “Weather ball is black";
 Qual è la rappresentazione?
POEM_TITLE
WARNING
"Appearance of Brown"
"Weather ball is black"
The
locks indicat
e t he memory
ions holds
ant s
I lucchetti
indicano
che lelocat
posizioni
in const
memoria
contengono delle costanti
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Variabili finali
Una volta The
definito,
il riferimento
reference
cannot be
non modified
può essere
once modificato
it is est ablished
object
Costante
ype
di ttipo
const ant
oggetto
In generale, questi attributi possono
essere tmodificati
attraverso
In general,
hese at t ribut
es can be metodi
membro
modified t hrough member
met hods
Value
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Variabili finali
 Considerare
final Rectangle BLOCK = new Rectangle(6, 9, 4, 2);
BLOCK.setLocation(1, 4);
BLOCK.resize(8, 3);
 Rappresentazione iniziale
(6, 9)
BLOCK
2
Rectangle:
4
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Variabili finali
 Considerare
final Rectangle BLOCK = new Rectangle(6, 9, 4, 2);
BLOCK.setLocation(1, 4);
BLOCK.resize(8, 3);
 Rappresentazione iniziale
(1, 4)
BLOCK
3
Rectangle:
8
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Variabili finali
 Considerare
String LANGUAGE = "Java";
The
reference
cannotilbe
Una
volta definito,
riferimento
nonitpuò
modified once
is
essere
modificato
est ablished
LANGUAGE
Il contenuto è immutabile perché non
The cont
ent smetodi
are immut
ableche
because
esistono
String
ne
la met
modifica
t here consentono
are no St ring
hods t hat
allow t he cont ent s t o be changed
"Java"
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Utilizzo degli oggetti
 Considerare
BufferedReader stdin = new BufferedReader(
new InputStreamReader(System.in));
System.out.print("Enter your account name: ");
String response = stdin.readLine();
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Utilizzo degli oggetti
 Considerare
BufferedReader stdin = new BufferedReader(
new InputStreamReader(System.in));
System.out.print("Enter your account name: ");
String response = stdin.readLine();
stdin
BufferedReader:
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Utilizzo degli oggetti
 Considerare
BufferedReader stdin = new BufferedReader(
new InputStreamReader(System.in));
System.out.print("Enter your account name: ");
String response = stdin.readLine();
 Si supponga che l'interazione con l'utente sia
Enter your account name: artiste
reponse
"artiste"
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Rappresentazione stringa
 Considerare
 String alphabet = "abcdefghijklmnopqrstuvwxyz";
 Rappresentazione abbreviata standard
alphabet
"abcdefghijklmnopqrstuvwxyz"
 Rappresentazione più veritiera
alphabet
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
y
z
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Rappresentazione stringa
 Considerare
 String alphabet = "abcdefghijklmnopqrstuvwxyz";
 char c1 = alphabet.charAt(9);
 char c2 = alphabet.charAt(15);
 char c3 = alphabet.charAt(2);
 Quali sono i valori di c1, c2 e c3? Perché?
c1
'j'
c2
'p'
c3
'c'
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Programma WordLength.java
public class WordLength
public static void main(String[] args)
throws IOException
BufferedReader stdin = new BufferedReader(
new InputStreamReader(System.in));
System.out.print("Enter a word: ");
String word = stdin.readLine();
int wordLength = word.length();
System.out.println("Word " + word + " has length "
+ wordLength + ".");
}
}
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Altri metodi String
 Considerare
String weddingDate = "August 21, 1976";
String month = weddingDate.substring(0, 6);
System.out.println("Month is " + month + ".");
 Qual è l'output?
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Altri metodi String
 Considerare
String weddingDate = "August 21, 1976";
String month = weddingDate.substring(0, 6);
System.out.println("Month is " + month + ".");
 Qual è l'output?
Month is August.
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Altri metodi String
 Considerare
String fruit = "banana";
String searchString = "an";
int n1 = fruit.indexOf(searchString, 0);
int n2 = fruit.indexOf(searchString, n1 + 1);
int n3 = fruit.indexOf(searchString, n2 + 1);
System.out.println("First search: " + n1);
System.out.println("Second search: " + n2);
System.out.println("Third search: " + n3);
 Qual è l'output?
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Altri metodi String
 Considerare
String fruit = "banana";
String searchString = "an";
int n1 = fruit.indexOf(searchString, 0);
int n2 = fruit.indexOf(searchString, n1 + 1);
int n3 = fruit.indexOf(searchString, n2 + 1);
System.out.println("First search: " + n1);
System.out.println("Second search: " + n2);
System.out.println("Third search: " + n3);
 Qual è l'output?
First search: 1
Second search: 3
Third search: -1
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Altri metodi String
 Considerare
int v1 = -12;
double v2 = 3.14;
char v3 = 'a';
String s1 = String.valueof(v1);
String s2 = String.valueof(v2);
String s3 = String.valueof(v3);
s1
"-12"
s2
"3.14"
s3
"a"