giovedì 22 maggio 2014

Programmazione: Capitolo 2, Parte 2

Parametri impliciti ed espliciti
§ Parametro (parametro esplicito): dati in ingresso
a un metodo. Non tutti i metodi necessitano
di parametri.
§ Parametro implicito: l'oggetto con cui si invoca
un metodo

System.out.println(greeting)
greeting.length() // non ha parametri espliciti
System.out.println(greeting)

Parametri impliciti ed espliciti




Passaggio di parametro al metodo println

Valori restituiti
§ Il valore restituito da un metodo è il risultato che il
metodo ha calcolato perché questo venga utilizzato nel codice che ha invocato il metodo

int n = greeting.length(); // restituisce il valore
                                      // memorizzato in n


Valori restituiti


Invocazione del metodo length su un oggetto di tipo String

Utlizzo dei valori restituiti
§ Il valore restituito da un metodo può anche essere utilizzato
direttamente come parametro di un altro metodo
§ Non tutti i metodi restituiscono valori.
Per esempio:

System.out.println(greeting.length());
println

Utilizzo dei valori restituiti

Il valore restituito da un metodo utilizzato come parametro di un altro metodo
Una invocazione più complessa
§ Il metodo replace esegue operazioni di ricerca
e sostituzione

 river.replace("issipp", "our")

§ Come si vede nella Figura 8, questa invocazione
di metodo ha
§ un parametro implicito: la stringa “Mississippi
§ due parametri espliciti: le stringhe “issipp” e “our"
§ un valore restituito: la stringa “Missouri”


Una invocazione più complessa


 ")
Invocazione del metodo replace

Definizioni di metodo
§ Quando in una classe si definisce un metodo,
vengono specificati i tipi dei parametri espliciti e del
valore restituito.
§ Il tipo del parametro implicito è la classe in cui è
definito il metodo: ciò non viene menzionato nella
definizione del metodo, e proprio per questo si parla
di parametro “implicito”.
Definizioni di metodo
§ Esempio: la classe String definisce
public int length()
// restituisce un valore di tipo int
// non ha parametri espliciti
public String replace(String target, String replacement)
// restituisce un valore di tipo String;
// due parametri espliciti di tipo String

Definizioni di metodo
§ Se il metodo non restituisce un valore,il tipo di valore
restituito viene dichiarato come void void
§ Il nome di un metodo è sovraccarico se una classe
definisce più metodi con lo stesso nome (ma con
parametri di tipi diversi).
public void println(String output) // nella classe PrintStream
public void println(String output)
public void println(int output)
Tipi numerici
§ Numeri interi short, int, long
13
§ Numeri in virgola mobile double float, double
1.3
0.00013

1.3E-4 // 1. Tipi numerici
Quando un numero in virgola mobile viene moltiplicato o
diviso per 10, si modifica solamente la posizione del
separatore decimale, che diviene così “mobile”.
NOTA: Rappresentazione binaria non decimale (ma vale
stesso concetto)1.3 × 10-4.
§ In Java, i numeri non sono oggetti e i tipi numerici non
sono classi; i tipi numerici sono tipi primitivi, non classi.
Operazioni aritmetiche
§ Operatori: + - *
Come avviene in matematica, l'operatore * ha la
precedenza rispetto all'operatore +
10 + n
n - 1
10 * n // 10 × n
x + y * 2 // rappresenta la somma di x e y * 2
(x + y) * 2 // moltiplica la somma di x e y per 2

1.3E-4 // 1.3 × 10-4 in Java3 ×

 10-4 Forme rettangolari e oggetti Rectangle
§ Un oggetto Rectangle non è una forma rettangolare, ma
un oggetto che contiene un insieme di numeri che
descrivono il rettangolova


Costruzione di oggetti
§ Dettaglio:
1. L’operatore new costruisce un oggetto di tipo Rectangle.
2. Nel fare ciò, usa i parametri ricevuti (in questo caso, 5, 10, 20 e 30)
per assegnare valori iniziali ai dati dell’oggetto.
3. Restituisce l’oggetto.
§ Solitamente l’oggetto creato dall’operatore new viene
memorizzato in una variabile, in questo modo:
Rectangle box = new Rectangle(5, 10, 20, 30);


Costruzione di oggetti
§ Il processo che crea un nuovo oggetto è detto
costruzione.
§ I quattro valori 5, 10, 20 e 30 rappresentano
i parametri di costruzione.
§ Alcune classi permettono di costruire oggetti
in più modi diversi.
new Rectangle()
// costruisce un rettangolo con il vertice superiore
// sinistro posizionato all'origine (0, 0),
// con larghezza 0, e altezza 0


Sintassi 2.3: costruzione di oggetti
new NomeClasse(parametri)
Esempio:
new Rectangle(5, 10, 20, 30)
new Rectangle()
Obiettivo:
Costruire un nuovo oggetto, inizializzarlo tramite i parametri
di costruzione e restituire un riferimento all’oggetto costruito.

Costruzione di oggetti
§ La classe String è un po' “speciale”...
String river = "Mississippi";
// alcuni costruttori di String
// public String() (stringa vuota)
// public String(String original) (copia stringa)
// public String(char[] value) (da un array di caratteri)

Realizzare un programma di collaudo
Il programma di collaudo esegue i seguenti passi:
§ Definisce una nuova classe.
§ Definisce in essa il metodo main.
§ Costruisce uno o più oggetti all’interno del metodo
main.
§ Applica metodi agli oggetti.
§ Visualizza i risultati delle invocazioni dei metodi.
§ Visualizza i valori previsti.
File MoveTester.javaMoveTester.java
01: import java.awt.Rectangle;
02:
03: public class MoveTester
04: {
05: public static void main(String[] args)
06: {
07: Rectangle box = new Rectangle(5, 10, 20, 30);
08:
09: // sposta il rettangolo
10: box.translate(15, 25);
11:
12: // visualizza informazioni sul rettangolo traslato
13: System.out.print("x: ");
14: System.out.println(box.getX());
15: System.out.println("Expected: 20");
16:
17: System.out.print("y: ");
18: System.out.println(box.getY());
19: System.out.println("Expected: 35"); }
20: }



ch02/rectangle/MoveTester.java (cont.)
Visualizza:
x: 20
Expected: 20
y: 35
Expected: 35


Nessun commento:

Posta un commento