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