visibilita

vita delle variabili e accesso a queste dalle diverse parti del programma

Nel linguaggio di programmazione java un programma è composto da classi che vengono costruite seguendo questa sintassi

class nome {
	/* dichiarazioni di proprietà */

	/* dichiarazioni di metodi */
}

Non è neanche necessario che i metodi (funzioni) e le proprietà (variabili) si susseguano in un ordine preciso.

La variabili però possono essere create sia al livello di classe che all'interno dei metodi. A seconda del punto in cui una variabile viene dichiarata questa potrà o meno essere usata in altre parti del programma.

Per capire meglio il concetto usiamo come esempio questo programma

package ciaoMondo;

import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.TextField;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.StackPane;
import javafx.scene.text.Text;
import javafx.stage.Stage;

public class CiaoMondo extends Application {

   Text messaggio = new Text();
   TextField nome = new TextField();
   
   @Override
   public void start(Stage primaryStage) {
      
      Text mettiNome = new Text();
      GridPane griglia = new GridPane();
      mettiNome.setText("Nome:");
      messaggio.setText("Sono impaziente...");
      nome.setPromptText("Nome o nomignolo per salutarti");

      Button eseguiSaluto = new Button();
      eseguiSaluto.setText("Premi qui");
      
      griglia.add(mettiNome,0,0);
      griglia.add(nome,1,0);
      griglia.add(eseguiSaluto,1,1);
      griglia.add(messaggio,1,2);

      eseguiSaluto.setOnAction( e->saluta() );
      
      StackPane root = new StackPane();
      root.getChildren().add(griglia);
        
      Scene scene = new Scene(root, 300, 250);
        
      primaryStage.setTitle("Hello World!");
      primaryStage.setScene(scene);
      primaryStage.show();
   }
   
   public void saluta() {
      String utente;
      utente = nome.getText();
      messaggio.setText("Signor " + utente + " Le auguro buona giornata!");
   }
        
   public static void main(String[] args) {
      launch(args);
   }
}

La variabile messaggio è stata dichiarata a livello di classe e può essere usata ovunque, ad esempio anche nel metodo saluta().

La variabile eseguiSaluto è stata dichiarata in un metodo e quindi sarà visibile soltanto all'interno del blocco che la contiene. Per trovare quali sono i limiti del blocco bisogna scorrere indietro fino a trovare la prima graffa aperta (qui è evidenziata in blu), la sua corrispondente è quella in basso in azzurro. Tutte le parentesi graffe contenute tra queste due (sono tutte corrispondenti aperta-chiusa) non interessano.