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.
- Se una variabile viene creata al livello di classe può essere usata dappertutto in quella classe, cioè potrà essere usata in ogni metodo
- Se una variabile viene creata in un metodo sarà utilizzabile dal punto della dichiarazione in avanti in tutto il blocco (marcato dalle graffe) che la contiene
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.