vettoreDiOggetti

vettori che contengono tipi non base

Il vettore fino ad ora visto contiene un tipo elementare come l'intero (nulla cambierebbe se fosse un double). Molto spesso però ciascun elemento del vettore è un oggetto. Un esempio è il vettore di String; sempre di oggetti ma questa volta visibili anche all'utente del nostro programma è il vettore di Label oppure TextField o Button o via dicendo.

Vero è che dichiarare un vettore di oggetti comporta qualche attenzione in più. Supponiamo di volere un programma che faccia la somma di 10 numeri; tali numeri dovranno essere inseriti ciascuno in una diversa casella di testo. Alla pressione del pulsante si mostra il totale. Per risolvere il problema andiamo a dichiarare nella classe la Label che contiene il risultato ed il vettore di TextField che contiene gli addendi. Osserva bene che nella classe c'è solo l'individuazione del tipo perché la dichiarazione vera e propria è fatta in due passi nella start(): il primo è quello della dichiarazione del vettore ed il secondo è quello della dichiarazione di ciascun elemento contenuto nelle locazioni del vettore stesso; tale opezione sarà eseguita in un for in quanto va dichiarato ogni oggetto del vettore.

   public class Sommatore extends Application {
   TextField addendi[];
   Label risultato = new Label();
   
public void start(Stage primaryStage) { addendi = new TextField[10]; int i; Label totale = new Label("Totale"); Button somma = new Button("Somma"); Label spiegazioni[] = new Label[10]; for(i=0;i<10;i++) { addendi[i] = new TextField(); spiegazioni[i] = new Label("Addendo"+(i+1)); } GridPane p = new GridPane(); p.add(somma, 0, 10); p.add(totale, 0, 11); p.add(risultato, 1, 11); for(i=0;i<10;i++) { p.add(addendi[i], 1, i); p.add(spiegazioni[i], 0, i); } somma.setOnAction( e -> addiziona() ); Scene scena = new Scene(p); primaryStage.setTitle("Aggiungi"); primaryStage.setScene(scena); primaryStage.show(); }
public void addiziona() { int i, s; for(i=s=0;i<10;i++) { s += Integer.parseInt(addendi[i].getText()); } risultato.setText(""+s); }
public static void main(String args[]){ launch(); } }