Capitolo 4
Classi
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
Preparazione
 La








scena finora ha riguardato esperienze e materiali di base
Sistemi informatici e soluzione dei problemi
Variabili
Tipi
Input e output
Espressioni
Assegnazioni
Oggetti
Classi e metodi standard
 Pronti per quanto riguarda realmente Java
 Progettare e implementare oggetti che rappresentano
informazioni e oggetti del mondo fisico
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Programmazione orientata agli oggetti
 Base
 Creare e manipolare oggetti con attributi e comportamenti
che il programmatore può specificare
 Meccanismo
 Classi
 Vantaggi
 Un tipo di informazione viene progettato e implementato
una volta
 Riutilizzato come necessario
 Non servono nuove analisi o giustificazioni della
rappresentazione
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
La prima classe - ColoredRectangle
 Scopo
 Rappresenta un rettangolo colorato in una finestra
 Introduce le nozioni fondamentali della progettazione e
dell'implementazione di oggetti
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Nozioni di base
 JFrame
 Classe Java principale per rappresentazione una finestra
grafica con titolo e bordo.
 Considerare
JFrame w1 = new JFrame("Bigger");
JFrame w2 = new JFrame("Smaller");
w1.setSize(200, 125);
w2.setSize(150, 100);
w1.setVisible(true);
w2.setVisible(true);
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Nozioni di base
 Considerare
JFrame w1 = new JFrame("Bigger");
JFrame w2 = new JFrame("Smaller");
w1.setSize(200, 125);
w2.setSize(150, 100);
w1.setVisible(true);
w2.setVisible(true);
200 pixels
150
pixels
125 pixels
100
pixels
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Classe ColoredRectangle - versione
iniziale
Copyright © 2004 - The McGraw-Hill Companies srl
 Scopo
 Supportare la visualizzazione della finestra quadrata
contenente un rettangolo blu
 La finestra ha una lunghezza del lato pari a 200 pixel
 Il rettangolo è largo 40 pixel e alto 20
 L'angolo superiore sinistro del rettangolo si trova a (80,
90)
 Le limitazioni sono temporanee
 Ricordare che BMI.java precedeva BMICalculator.java
 Molti concetti da introdurre
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
ColoredRectangle in azione
 Considerare
ColoredRectangle r1 = new ColoredRectangle();
ColoredRectangle r2 = new ColoredRectangle();
System.out.println("Enter when ready");
System.in.read();
r1.paint(); // disegna la finestra associata a r1
r2.paint(); // disegna la finestra associata a r2
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
ColoredRectangle in azione
 Considerare
ColoredRectangle r1 = new ColoredRectangle();
ColoredRectangle r2 = new ColoredRectangle();
System.out.println("Enter when ready");
System.in.read();
r1.paint(); // disegna la finestra associata a r1
r2.paint(); // disegna la finestra associata a r2
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
ColoredRectangle in azione
 Considerare
ColoredRectangle r1 = new ColoredRectangle();
ColoredRectangle r2 = new ColoredRectangle();
System.out.println("Enter when ready");
System.in.read();
r1.paint(); // disegna la finestra associata a r1
r2.paint(); // disegna la finestra associata a r2
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
ColoredRectangle in azione
 Considerare
ColoredRectangle r1 = new ColoredRectangle();
ColoredRectangle r2 = new ColoredRectangle();
System.out.println("Enter when ready");
System.in.read();
r1.paint(); // disegna la finestra associata a r1
r2.paint(); // disegna la finestra associata a r2
All'oggetto angle
ColoredRectangle
a cui
viene inviato un
ColoredRect
object referenced
byfa
r1riferimento
is being sent r1
a message
messaggio
r1.paint()
r2.paint()
Il messaggio
devono
essere
The
messages indica
inst ructche
t hei due
objectoggetti
s t o display
t hemselves
visualizzati
All'oggetto angle
ColoredRectangle
a cui
inviato un
ColoredRect
object referenced
byfa
r2riferimento
is being sentr2a viene
message
messaggio
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Struttura di ColoredRectangle.java
import javax.swing.*;
import java.awt.*;
public class ColoredRectangle {
// variabili istanza per attributi dell'oggetto
private int width;
private int height;
private JFrame window;
private int x;
private int y;
private Color color;
// ColoredRectangle(): costruttore predefinito
public ColoredRectangle() {
// configura gli attributi
}
// paint(): mostra il rettangolo nella sua finestra
public void paint() {
// Rappresenta il disegno
}
}
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Variabili istanza e attributi
 Campo dati
 Termine Java per l'attributo di un oggetto
 Variabile istanza
 Nome simbolico per un campo dati
 Solitamente dispone di accesso privato
 Assiste nel celamento delle informazioni incapsulando
gli attributi dell'oggetto
 Inizializzazione predefinita
 Variabili istanza numeriche inizializzate a 0
 Variabili istanza logiche inizializzate su false
 Variabili istanza oggetto inizializzate a null
public class ColoredRectangle {
// variabili istanza per attributi dell'oggetto
private int width;
private int height;
private JFrame window;
private int x;
private int y;
private Color color;
// ColoredRectangle(): costruttore predefinito
public ColoredRectangle() {
window = new JFrame("Box Fun");
window.setSize(200, 200);
width = 40;
x = 80;
height = 20;
y = 90;
color = Color.BLUE;
window.setVisible(true);
}
// paint(): mostra il rettangolo nella sua finestra
public void paint() {
Graphics g = window.getGraphics();
g.setColor(color);
g.fillRect(x, y, width, height);
}
}
public class ColoredRectangle {
// variabili istanza per contenere attributi dell'oggetto
private int width;
private int height;
private JFrame window;
private int x;
private int y;
private Color color;
// ColoredRectangle(): costruttore predefinito
public ColoredRectangle() {
window = new JFrame("Box Fun");
window.setSize(200, 200);
width = 40;
x = 80;
height = 20;
y = 90;
color = Color.BLUE;
window.setVisible(true);
}
// paint(): mostra il rettangolo nella sua finestra
public void paint() {
Graphics g = window.getGraphics();
g.setColor(color);
g.fillRect(x, y, width, height);
}
}
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Costruttore predefinito di
ColoredRectangle
Copyright © 2004 - The McGraw-Hill Companies srl
public class ColoredRectangle {
// instance variables to describe object attributes
...
// ColoredRectangle(): default constructor
public ColoredRectangle() {
...
}
...
}
The
namedel
of acostruttore
const ruct or
always mat
chesat he
Il nome
è sempre
uguale
quello
della of
classe
name
it s class
costruttore
non not
riporta
di trestituzione.
AUn
const
ruct or does
list ituns tipo
ret urn
ype. A constUn
ruct or
costruttore
restituisce
sempre
un riferimento
un nuovo
always
ret urns
a reference
t o a new
object of it sa class
oggetto della sua classe
public class ColoredRectangle {
// variabili istanza per contenere attributi dell'oggetto
private int width;
private int height;
private JFrame window;
private int x;
private int y;
private Color color;
// ColoredRectangle(): costruttore predefinito
public ColoredRectangle() {
window = new JFrame("Box Fun");
window.setSize(200, 200);
width = 40;
x = 80;
height = 20;
y = 90;
color = Color.BLUE;
window.setVisible(true);
}
// paint(): mostra il rettangolo nella sua finestra
public void paint() {
Graphics g = window.getGraphics();
g.setColor(color);
g.fillRect(x, y, width, height);
}
}
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Costanti di colore













Color.BLACK
Color.BLUE
Color.CYAN
Color.DARK_GRAY
Color.GRAY
Color.GREEN
Color.LIGHT_GRAY
Color.MAGENTA
Color.ORANGE
Color.PINK
Color.RED
Color.WHITE
Color.YELLOW
r
ColoredRectangle r = new ColoredRectangle();
ColorRectangle
The value
a
Il valore
di of
una
ColoredRect
variabileangle
variable is a è
ColoredRectangle
un riferimento
reference t oaaun
oggetto angle
ColoredRect
ColoredRectangle
object
-
width = 40
height = 20
x = 80
y = 90
window =
color =
+ paint() : void
+ brighter() : Color
+ ...
- text = "Box Fun"
- ...
+ length() : int
+ ...
Color
- color =
- ...
String
JFrame
-
width = 200
height = 200
title =
...
+ setVisible(boolean status) : void
+ ...
public class ColoredRectangle {
// variabili istanza per attributi dell'oggetto
private int width;
private int height;
private JFrame window;
private int x;
private int y;
private Color color;
// ColoredRectangle(): costruttore predefinito
public ColoredRectangle() {
window = new JFrame("Box Fun");
window.setSize(200, 200);
width = 40;
x = 80;
height = 20;
y = 90;
color = Color.BLUE;
window.setVisible(true);
}
// paint(): mostra il rettangolo nella sua finestra
public void paint() {
Graphics g = window.getGraphics();
g.setColor(color);
g.fillRect(x, y, width, height);
}
}
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Contesto grafico
 Grafica
 Definita in java.awt.Graphics
 Rappresenta le informazioni per una richiesta di rendering
 Colore
 Componente
 Tipo di carattere
 …
 Fornisce metodi
 Disegno di testo
 Disegno di linee
 Disegno di forme
 Rettangoli
 Ovali
 Poligoni
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Sistema di coordinate Java
X-Axis
Coordinat e (0.0)
Y-Axis
Coordinat e (80, 90)
Coordinat e (120, 110)
public class ColoredRectangle {
// variabili istanza per attributi dell'oggetto
private int width;
private int height;
private JFrame window;
private int x;
private int y;
private Color color;
// ColoredRectangle(): costruttore predefinito
public ColoredRectangle() {
window = new JFrame("Box Fun");
window.setSize(200, 200);
width = 40;
x = 80;
height = 20;
y = 90;
color = Color.BLUE;
window.setVisible(true);
}
// paint(): mostra il rettangolo nella sua finestra
public void paint() {
Graphics g = window.getGraphics();
g.setColor(color);
g.fillRect(x, y, width, height);
}
}
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Invocazione dei metodi
 Considerare
r1.paint();
a r1
r2.paint();
a r2
// visualizza la finestra associata
// visualizza la finestra associata
 Osservare
 Quando viene eseguito un metodo istanza, il sistema
accede e manipola gli attributi dell'oggetto associati
all'invocazione
 È
importante
manipolato
comprendere
quale
oggetto
viene
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Invocazione dei metodi
public class ColoredRectangle {
// instance variables to describe object attributes
...
// paint(): display the rectangle in its window
public void paint() {
window.setVisible(true);
Graphics g = window.getGraphics();
g.setColor(color);
Inst
ance variable
window window
references
La variabile
d'istanza
fa
g.fillRect(x, y, width, height); triferimento
he JFrame atall'attributo
t ribut e of t heJFrame
object
}
dell'oggetto
haion.
causato
t hat
caused t he che
invocat
That is,
...
l'invocazione.
t he invocat ionOssia,
r1.paintl'invocazione
() causes t he di
r1.paint()
consente
window
at t ribut
e of t hel'accesso
Coloredall'attributo
window
dell'oggetto
}
Rect angle referenced by r1t o be
I valori
queste
variabili
Thedi
values
of t hese
inst ance
ColoredRectangle
cui faion
accessed.
Similarly, t heainvocat
d'istanza
sono
gli
stessi
riferimento
r1. Analogamente,
variables are also from t he
r2.paint () causes
t he window
dell'oggetto ColoredRectangle
l'invocazione di r2.paint() consente
ColoredRect angle object t hat
at t ribut e of t he ColoredRect angle
che ha invocato il metodo
l'accesso all'attributo window
invoked met hod paint ().
referenced
by r2 t o be accessed.
paint()
dell'oggetto ColoredRectangle a cui
fa riferimento r2
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Perfezionamento di ColoredRectangle
 Analisi
 Un oggetto ColoredRectangle dovrebbe
 Essere in grado di avere un colore
 Essere posizionabile ovunque nella sua finestra
 Non presentare limitazioni su larghezza e altezza
 Attributi accessibili
 Attributi aggiornabili
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Perfezionamento di ColoredRectangle

Costruzioni e comportamenti aggiuntivi
 Costruzione specifica
 Costruire la rappresentazione di un rettangolo utilizzando i
valori forniti per i suoi attributi

Funzioni di accesso
 Fornire i valori degli attributi
 Singoli metodi per fornire larghezza, altezza, coordinata x,
coordinata y, colore o finestra del rettangolo associato

Funzioni di modifica
 Gestire le richieste per la modifica degli attributi
 Garantire che gli oggetti abbiano sempre i valori sensibili
 Singoli metodi per impostare larghezza, altezza, coordinata
x, coordinata y, colore o finestra del rettangolo associato su
un valore dato
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Un metodo di modifica
 Definizione
// setWidth(): cambia la larghezza
public void setWidth(int w)
width = w;
}
 Utilizzo
Col or edRec t angl e s = new Col or edRec t angl e( ) ;
s . s et Wi dt h( 80) ;
Object t da
o be
manipulat ed
L'oggetto
manipolare
è
is t hea one
by ss
quello
cui referenced
fa riferimento
Il valore
iniziale
parametri
formali
Init
ial value
of t hedei
formal
paramet
er
deriva from
dal parametro
comes
t he act ualeffettivo
paramet er
publ i c voi d s et Wi dt h( i nt w) {
...
}
Changes
t o t he
paramet
er non
Le modifiche
al formal
parametro
formale
hanno
parametro
effettivo
do
not effetto
affect tsul
he act
ual paramet
er
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Valutazione di setWidth()
ColoredRectangle s = new ColoredRectangle();
s.setWidth(80);
L'invocazione
un messaggio
The
invocat ion trasmette
sends a message
t o t heall'oggetto
ColoredRect angle
ColoredRectangle
cui faitriferimento
nel e.
quale
definita la
referenced
by s t o amodify
s widt h at ts,ribut
To doè so,
modifica dell'attributo. Per svolgere questa operazione, il flusso
t di
here
is a t emporary t ransfer of flow of cont rol t o
controllo viene temporaneamente trasferito a setWidth(). Il
set
Widt del
h().parametro
The value of
t he actèual
valore
effettivo
80paramet er is 80
public class ColoredRectangle {
...
// setWidth(): width mutator
public void setWidth(int w) {
width = w;
}
...
}
Per tl'invocazione
For
his invocat iondelof metodo
met hod
setWidth(),
w
viene
set Widt h(), w is init ialized t o
inizializzato su 80. L'oggetto a
80.
The
being all'interno
referenced
cui si
faobject
riferimento
wit
t he del
metmetodo
hod body
delhin
corpo
è is t he
l'oggetto
a cui fa riferimento
s
object
referenced
by s
Il metodo
la variabile
d'istanza
width
Met
hod setsetWidth()
Widt h() setimposta
s t he inst
ance variable
widt h
of it s
del
suo
oggetto
ColoredRectangle.
Per
questa
ColoredRect angle. For t his invocat ion, widt h is set t o 80
invocazione, width viene impostata su 80, e l'oggetto
and
t he ColoredRectè angle
he fa
oneriferimento
referenceds by s
ColoredRectangle
quelloisa tcui
Met
hod setsetWidth()
Widt h() is ha
complet
Cont rol isviene
t ransferred
back t o
Il metodo
finito.ed.
Il controllo
restituito
aveva
richiamato
tall'istruzione
he st at ementche
t hat
invoked
set WidtsetWidth()
h()
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Dettagli
 Considerare
ColoredRectangle r = new ColoredRectangle();
r.paint();
r.setWidth(80);
r.paint();
 Qual è la larghezza del rettangolo sullo schermo dopo
l'esecuzione della funzione di modifica?
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Altre funzioni di modifica
public void setHeight(int h)
height = h;
}
public void setX(int ulx)
x = ulx;
}
public void setY(int uly)
y = uly;
}
public void setWindow(JFrame f)
window = f;
}
public void setColor(Color c)
color = c;
}
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Utilizzo della funzione di modifica
ColoredRectangle u = new ColoredRectangle();
Sends
a message
to
Trasmette
un
ColoredRectangle v = new ColoredRectangle(); messaggio all'oggetto
u's ColoredRect angle
u.setHeight(100);
ColoredRectangle di u
tper
o modify
it s height
modificare in 100
u.setColor(Color.PINK);
at
t ribut e per
t o 1l'altezza
00
l'attributo
v.setX(25);
v.setY(50);
Trasmette
un messaggio
Sends
a message
t o u's ColoredJFrame display =
all'oggetto ColoredRectangle di u
Rect
angle t o modify it s color
per modificare in rosa l'attributo
new JFrame("Fun");
at
t ribut
e t o pink
per
il colore
v.setWindow(display);
Trasmette
un messaggio
Sends
a message
t o v's Coloredall'oggetto ColoredRectangle di v
Rect
angle t o modify
it s window
per modificare
l'attributo
window
la finestra
atint modo
ribut eda
t ovisualizzare
display's JFrame
JFrame di s
Trasmette
un messaggio
Sends
a message
t o v's Coloredall'oggetto ColoredRectangle di v
Rect angle t o modify it s x-axis
per modificare in 25 l'attributo
posit
t o 25 dell'asse x
per laion
posizione
Trasmette
un messaggio
Sends a message
t o v's Coloredall'oggetto
di v
Rect angleColoredRectangle
t o modify it s y-axis
per modificare in 50 l'attributo
positlaion
t o 50 dell'asse y
per
posizione
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Funzioni di accesso
 Proprietà
 Non richiede parametri
 Ogni esecuzione della funzione di accesso produce un
valore di ritorno
 Il valore di ritorno è il valore dell'invocazione
Il tipo
ritorno
metodo
precede
il nome
The
metdihod
ret urndel
t ype
precedes
t he name
of t hedel
metmetodo
hod in t he
nella
definizione
met
hod
definit ion
public int getWidth() {
return width;
}
For
hod get getWidth(),
Widt h(), t he ret
urn value
t he value
t he widt h
Per met
il metodo
il valore
di is
ritorno
è il of
valore
dell'attributo
perColoredRect
la larghezza
dell'oggetto
at
t ribut e for t he
angle
associat edColoredRectangle
wit h t he invocat ion.
associato
con
l'invocazione.
Nell'invocazione
In
invocat ion
t .get
Widt h(), t he ret
urn value is t hedi
value of t he
t.getWidth(),
il valore
di tritorno
è il valore
della
variabile
inst
ance variable
widt h for
he ColoredRect
angle
referenced
by t
d'istanza width per l'oggetto ColoredRectangle a cui fa
riferimento t
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Utilizzo della funzione di accesso
ColoredRectangle t = new ColoredRectangle();
int w = t.getWidth();
L'invocazione
trasmette
un messaggio
ColoredRectangle
a
Invocat
ion sends
a message
t o t he all'oggetto
ColoredRect
angle
cui fa riferimento
perurn
restituire
il valore
suo h.
attributo
width.
referenced
by t t ot, ret
t he value
of itdel
s widt
To do so,
Per svolgere questa operazione, il flusso di controllo viene
t here
is a t emporary
t ransfer
of flow of cont rol t o get Widt h()
temporaneamente
trasferito
a getWidth()
public class ColoredRectangle {
...
Il Met
metodo
comincia
hodgetWidth()
get Widt h()
st art sl'esecuzione.
execut ing.
// getWidth(): accessor
Per questa invocazione, l'oggetto a cui si fa
For t his invocat ion, t he object being
public int getWidth() {
riferimento all'interno del corpo è l'oggetto a
is tthe object referenced by t
return width;
cuireferenced
fa riferimento
}
The ret urn expression evaluat es t o 40 (t he widt h
Il risultato dell'espressione return è 40 (l'attributo per la larghezza
dell'oggetto
cui fa riferimento
t)
at
t ribut e ofColoredRectangle
t he ColoredRecta angle
object referenced
by t )
...
}
Il metodo getWidth() termina fornendo il valore di ritorno (40) all'istruzione
Met
hod complet es by supplying it s ret urn value (40) t o t he invoking
che l'aveva invocato. Inoltre, l'istruzione che aveva effettuato l'invocazione
st
at ement
. Also, invoking
stAatquesto
ementpunto,
regains
t he flowwofviene
continizializzata
rol. From
riprende
il controllo
del flusso.
la variabile
il valore
di ritorno
w viene
inizializzata
su 40)io
tcon
here
variable
w is initdell'invocazione
ialized wit h t(ossia,
he ret urn
value
of t he invocat
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Costruzione specifica
public ColoredRectangle(int w, int h, int ulx, int uly,
JFrame f, Color c)
setWidth(w);
setHeight(h);
setX(ulx);
setY(uly);
setWindow(f);
setColor(c);
}
 Richiede valori per ogni attributo
JFrame display = new JFrame("Even more fun");
display.setSize(400, 400);
ColoredRectangle w = new ColoredRectangle(60, 80,
20, 20, display, Color.YELLOW);
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Costruzione specifica
public ColoredRectangle(int w, int h, int ulx, int uly,
JFrame f, Color c)
setWidth(w);
setHeight(h);
setX(ulx);
setY(uly);
setWindow(f);
setColor(c);
}
 Vantaggi dell'utilizzo delle funzioni di modifica
 Leggibilità
 Meno soggette a errori
 Facilitano i perfezionamenti con la localizzazione
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Vedere doppio
import java.io.*;
import java.awt.*;
public class SeeingDouble
public static void main(String[] args)
throws IOException
ColoredRectangle r = new ColoredRectangle();
System.out.println("Enter when ready");
System.in.read();
r.paint();
r.setY(50);
r.setColor(Color.RED);
r.paint();
}
}
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Vedere doppio