38
Capitolo 4 Classi Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies srl

Capitolo 4 Classi Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies

Embed Size (px)

Citation preview

Page 1: Capitolo 4 Classi Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies

Capitolo 4Classi

Lucidi relativi al volume:

Java – Guida alla programmazione James Cohoon, Jack Davidson

Copyright © 2004 - The McGraw-Hill Companies srl

Page 2: Capitolo 4 Classi Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies

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

Page 3: Capitolo 4 Classi Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies

Java – Guida alla programmazione - James Cohoon, Jack Davidson

Copyright © 2004 - The McGraw-Hill Companies srlProgrammazione 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

Page 4: Capitolo 4 Classi Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies

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

Page 5: Capitolo 4 Classi Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies

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.

ConsiderareJFrame w1 = new JFrame("Bigger");JFrame w2 = new JFrame("Smaller");w1.setSize(200, 125);w2.setSize(150, 100);w1.setVisible(true);w2.setVisible(true);

Page 6: Capitolo 4 Classi Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies

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 125 pixels

150pixels

100pixels

Page 7: Capitolo 4 Classi Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies

Java – Guida alla programmazione - James Cohoon, Jack Davidson

Copyright © 2004 - The McGraw-Hill Companies srlClasse ColoredRectangle - versione iniziale 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

Page 8: Capitolo 4 Classi Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies

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 r1r2.paint(); // disegna la finestra associata a r2

Page 9: Capitolo 4 Classi Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies

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 r1r2.paint(); // disegna la finestra associata a r2

Page 10: Capitolo 4 Classi Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies

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 r1r2.paint(); // disegna la finestra associata a r2

Page 11: Capitolo 4 Classi Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies

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 r1r2.paint(); // disegna la finestra associata a r2

r1.paint()The messages instruct the objects to display themselves

r2.paint()

ColoredRectangle object referenced by r1 is being sent a message

ColoredRectangle object referenced by r2 is being sent a message

Il messaggio indica che i due oggetti devono essere visualizzati

All'oggetto ColoredRectangle a cui fa riferimento r2 viene inviato un messaggio

All'oggetto ColoredRectangle a cui fa riferimento r1 viene inviato un messaggio

Page 12: Capitolo 4 Classi Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies

Java – Guida alla programmazione - James Cohoon, Jack Davidson

Copyright © 2004 - The McGraw-Hill Companies srl

Struttura di ColoredRectangle.javaimport javax.swing.*;import java.awt.*;

public class ColoredRectangle {

// variabili istanza per attributi dell'oggettoprivate int width; private int x;private int height; private int y;private JFrame window; private Color color;

// ColoredRectangle(): costruttore predefinitopublic ColoredRectangle() {

// configura gli attributi}

// paint(): mostra il rettangolo nella sua finestrapublic void paint() {

// Rappresenta il disegno}

}

Page 13: Capitolo 4 Classi Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies

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

Page 14: Capitolo 4 Classi Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies

public class ColoredRectangle {

// variabili istanza per attributi dell'oggettoprivate int width; private int x;private int height; private int y;private JFrame window; private Color color;

// ColoredRectangle(): costruttore predefinitopublic 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 finestrapublic void paint() {

Graphics g = window.getGraphics();g.setColor(color);g.fillRect(x, y, width, height);

}}

Page 15: Capitolo 4 Classi Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies

public class ColoredRectangle {

// variabili istanza per contenere attributi dell'oggettoprivate int width; private int x;private int height; private int y;private JFrame window; private Color color;

// ColoredRectangle(): costruttore predefinitopublic 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 finestrapublic void paint() {

Graphics g = window.getGraphics();g.setColor(color);g.fillRect(x, y, width, height);

}}

Page 16: Capitolo 4 Classi Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies

Java – Guida alla programmazione - James Cohoon, Jack Davidson

Copyright © 2004 - The McGraw-Hill Companies srlCostruttore predefinito di ColoredRectangle

public class ColoredRectangle {// instance variables to describe object attributes...

// ColoredRectangle(): default constructorpublic ColoredRectangle() {

...

}...

}

A constructor does not list its return type. A constructoralways returns a reference to a new object of its class

The name of a constructor always matches thename of its classIl nome del costruttore è sempre uguale a quello della classe

Un costruttore non riporta un tipo di restituzione. Un costruttore restituisce sempre un riferimento a un nuovo oggetto della sua classe

Page 17: Capitolo 4 Classi Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies

public class ColoredRectangle {

// variabili istanza per contenere attributi dell'oggettoprivate int width; private int x;private int height; private int y;private JFrame window; private Color color;

// ColoredRectangle(): costruttore predefinitopublic 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 finestrapublic void paint() {

Graphics g = window.getGraphics();g.setColor(color);g.fillRect(x, y, width, height);

}}

Page 18: Capitolo 4 Classi Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies

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

Page 19: Capitolo 4 Classi Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies

r

The value of aColoredRectangle

variable is areference to a

ColoredRectangleobject

+ paint() : void

ColorRectangle

- width = 40- height = 20- x = 80- y = 90- window =- color =

Color

- color =- ...

+ brighter() : Color+ ...

+ setVisible(boolean status) : void+ ...

JFrame

- width = 200- height = 200- title =- ...

String

- text = "Box Fun"- ...

+ length() : int+ ...

ColoredRectangle r = new ColoredRectangle();

Il valore di una variabile

ColoredRectangle è un riferimento a un

oggetto ColoredRectangle

Page 20: Capitolo 4 Classi Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies

public class ColoredRectangle {

// variabili istanza per attributi dell'oggettoprivate int width; private int x;private int height; private int y;private JFrame window; private Color color;

// ColoredRectangle(): costruttore predefinitopublic 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 finestrapublic void paint() {

Graphics g = window.getGraphics();g.setColor(color);g.fillRect(x, y, width, height);

}}

Page 21: Capitolo 4 Classi Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies

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

Page 22: Capitolo 4 Classi Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies

Java – Guida alla programmazione - James Cohoon, Jack Davidson

Copyright © 2004 - The McGraw-Hill Companies srl

Sistema di coordinate Java

Coordinate (80, 90)

Coordinate (0.0)X-Axis

Y-A

xis

Coordinate (120, 110)

Page 23: Capitolo 4 Classi Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies

public class ColoredRectangle {

// variabili istanza per attributi dell'oggettoprivate int width; private int x;private int height; private int y;private JFrame window; private Color color;

// ColoredRectangle(): costruttore predefinitopublic 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 finestrapublic void paint() {

Graphics g = window.getGraphics();g.setColor(color);g.fillRect(x, y, width, height);

}}

Page 24: Capitolo 4 Classi Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies

Java – Guida alla programmazione - James Cohoon, Jack Davidson

Copyright © 2004 - The McGraw-Hill Companies srl

Invocazione dei metodi Considerare

r1.paint(); // visualizza la finestra associata a r1

r2.paint(); // visualizza la finestra associata a r2

Osservare Quando viene eseguito un metodo istanza, il sistema

accede e manipola gli attributi dell'oggetto associati all'invocazione

È importante comprendere quale oggetto viene manipolato

Page 25: Capitolo 4 Classi Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies

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 windowpublic void paint() {

window.setVisible(true);Graphics g = window.getGraphics();g.setColor(color);g.fillRect(x, y, width, height);

}...

}

Instance variable window referencesthe J Frame attribute of the objectthat caused the invocation. That is,the invocation r1.paint() causes thewindow attribute of the Colored-Rectangle referenced by r1 to be

accessed. Similarly, the invocationr2.paint() causes the window

attribute of the ColoredRectanglereferenced by r2 to be accessed.

The values of these instancevariables are also from the

ColoredRectangle object thatinvoked method paint().

La variabile d'istanza window fa riferimento all'attributo JFrame

dell'oggetto che ha causato l'invocazione. Ossia, l'invocazione di

r1.paint() consente l'accesso all'attributo window dell'oggetto

ColoredRectangle a cui fa riferimento r1. Analogamente,

l'invocazione di r2.paint() consente l'accesso all'attributo window

dell'oggetto ColoredRectangle a cui fa riferimento r2

I valori di queste variabili d'istanza sono gli stessi

dell'oggetto ColoredRectangle che ha invocato il metodo paint()

Page 26: Capitolo 4 Classi Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies

Java – Guida alla programmazione - James Cohoon, Jack Davidson

Copyright © 2004 - The McGraw-Hill Companies srlPerfezionamento 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

Page 27: Capitolo 4 Classi Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies

Java – Guida alla programmazione - James Cohoon, Jack Davidson

Copyright © 2004 - The McGraw-Hill Companies srlPerfezionamento 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

Page 28: Capitolo 4 Classi Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies

Java – Guida alla programmazione - James Cohoon, Jack Davidson

Copyright © 2004 - The McGraw-Hill Companies srl

Un metodo di modifica Definizione

// setWidth(): cambia la larghezzapublic void setWidth(int w)

width = w;}

Utilizzo

Col or edRect angl e s = new Col or edRect angl e( ) ;s. set Wi dt h( 80) ;

publ i c voi d set Wi dt h( i nt w) {. . .

}

Initial value of the formal parametercomes from the actual parameter

Changes to the formal parameterdo not affect the actual parameter

Object to be manipulatedis the one referenced by s

Il valore iniziale dei parametri formali deriva dal parametro effettivo

Le modifiche al parametro formale non hanno effetto sul parametro effettivo

L'oggetto da manipolare è quello a cui fa riferimento s

Page 29: Capitolo 4 Classi Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies

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);

public class ColoredRectangle {...// setWidth(): width mutatorpublic void setWidth(int w) {

width = w;}

...}

The invocation sends a message to the ColoredRectanglereferenced by s to modify its width attribute. To do so,there is a temporary transfer of flow of control tosetWidth(). The value of the actual parameter is 80

Method setWidth() sets the instance variable width of itsColoredRectangle. For this invocation, width is set to 80and the ColoredRectangle is the one referenced by s

For this invocation of methodsetWidth(), w is initialized to80. The object being referencedwithin the method body is theobject referenced by s

Method setWidth() is completed. Control is transferred back tothe statement that invoked setWidth()

L'invocazione trasmette un messaggio all'oggetto ColoredRectangle a cui fa riferimento s, nel quale è definita la modifica dell'attributo. Per svolgere questa operazione, il flusso di controllo viene temporaneamente trasferito a setWidth(). Il valore del parametro effettivo è 80

Per l'invocazione del metodo setWidth(), w viene inizializzato su 80. L'oggetto a cui si fa riferimento all'interno del corpo del metodo è l'oggetto a cui fa riferimento s

Il metodo setWidth() imposta la variabile d'istanza width del suo oggetto ColoredRectangle. Per questa invocazione, width viene impostata su 80, e l'oggetto ColoredRectangle è quello a cui fa riferimento s

Il metodo setWidth() ha finito. Il controllo viene restituito all'istruzione che aveva richiamato setWidth()

Page 30: Capitolo 4 Classi Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies

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?

Page 31: Capitolo 4 Classi Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies

Java – Guida alla programmazione - James Cohoon, Jack Davidson

Copyright © 2004 - The McGraw-Hill Companies srl

Altre funzioni di modificapublic 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;

}

Page 32: Capitolo 4 Classi Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies

Java – Guida alla programmazione - James Cohoon, Jack Davidson

Copyright © 2004 - The McGraw-Hill Companies srl

Utilizzo della funzione di modifica

ColoredRectangle u = new ColoredRectangle();ColoredRectangle v = new ColoredRectangle();u.setHeight(100);u.setColor(Color.PINK);v.setX(25);v.setY(50);JFrame display =

new JFrame("Fun");v.setWindow(display);

Sends a message to v's Colored-Rectangle to modify its windowattribute to display's J Frame

Sends a message tou's ColoredRectangleto modify its heightattribute to 100

Sends a message to u's Colored-Rectangle to modify its colorattribute to pink

Sends a message to v's Colored-Rectangle to modify its x-axisposition to 25

Sends a message to v's Colored-Rectangle to modify its y-axisposition to 50

Trasmette un messaggio all'oggetto ColoredRectangle di u per modificare in 100 l'attributo per l'altezza

Trasmette un messaggio all'oggetto ColoredRectangle di u per modificare in rosa l'attributo per il colore

Trasmette un messaggio all'oggetto ColoredRectangle di v per modificare in 25 l'attributo per la posizione dell'asse x

Trasmette un messaggio all'oggetto ColoredRectangle di v per modificare in 50 l'attributo per la posizione dell'asse y

Trasmette un messaggio all'oggetto ColoredRectangle di v per modificare l'attributo window in modo da visualizzare la finestra JFrame di s

Page 33: Capitolo 4 Classi Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies

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

public int getWidth() {return width;

}

The method return type precedes the name of the method in themethod definition

For method getWidth(), the return value is the value of the widthattribute for the ColoredRectangle associated with the invocation.In invocation t.getWidth(), the return value is the value of theinstance variable width for the ColoredRectangle referenced by t

Il tipo di ritorno del metodo precede il nome del metodo nella definizione

Per il metodo getWidth(), il valore di ritorno è il valore dell'attributo per la larghezza dell'oggetto ColoredRectangle associato con l'invocazione. Nell'invocazione di t.getWidth(), il valore di ritorno è il valore della variabile d'istanza width per l'oggetto ColoredRectangle a cui fa riferimento t

Page 34: Capitolo 4 Classi Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies

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();

public class ColoredRectangle {...// getWidth(): accessorpublic int getWidth() {

return width;}

...}

Invocation sends a message to the ColoredRectanglereferenced by t to return the value of its width. To do so,there is a temporary transfer of flow of control to getWidth()

The return expression evaluates to 40 (the widthattribute of the ColoredRectangle object referenced by t )

Method getWidth() starts executing.For this invocation, the object beingreferenced is the object referenced by t

Method completes by supplying its return value (40) to the invokingstatement. Also, invoking statement regains the flow of control. Fromthere variable w is initialized with the return value of the invocatio

L'invocazione trasmette un messaggio all'oggetto ColoredRectangle a cui fa riferimento t, per restituire il valore del suo attributo width. Per svolgere questa operazione, il flusso di controllo viene temporaneamente trasferito a getWidth()

Il metodo getWidth() comincia l'esecuzione. Per questa invocazione, l'oggetto a cui si fa riferimento all'interno del corpo è l'oggetto a cui fa riferimento t

Il risultato dell'espressione return è 40 (l'attributo per la larghezza dell'oggetto ColoredRectangle a cui fa riferimento t)

Il metodo getWidth() termina fornendo il valore di ritorno (40) all'istruzione che l'aveva invocato. Inoltre, l'istruzione che aveva effettuato l'invocazione riprende il controllo del flusso. A questo punto, la variabile w viene inizializzata con il valore di ritorno dell'invocazione (ossia, w viene inizializzata su 40)

Page 35: Capitolo 4 Classi Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies

Java – Guida alla programmazione - James Cohoon, Jack Davidson

Copyright © 2004 - The McGraw-Hill Companies srl

Costruzione specificapublic 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 attributoJFrame display = new JFrame("Even more fun");display.setSize(400, 400);ColoredRectangle w = new ColoredRectangle(60, 80,

20, 20, display, Color.YELLOW);

Page 36: Capitolo 4 Classi Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies

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

Page 37: Capitolo 4 Classi Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies

Java – Guida alla programmazione - James Cohoon, Jack Davidson

Copyright © 2004 - The McGraw-Hill Companies srl

Vedere doppioimport 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();

}}

Page 38: Capitolo 4 Classi Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies

Java – Guida alla programmazione - James Cohoon, Jack Davidson

Copyright © 2004 - The McGraw-Hill Companies srl

Vedere doppio