Java Modelling LanguageJava Modelling Language (JML) è un linguaggio di specifica che permette di definire astrazioni procedurali su un modello di programmazione per contratto, effettuando dei controlli sui parametri d'ingresso di un metodo e sul suo valore di ritorno. È disponibile solamente per Java 1.4.2. Le specifiche vengono aggiunte all'interno del codice sorgente Java, tramite commenti dotati di una speciale sintassi che precedono il metodo interessato. Questo significa che il codice JML non viene letto dal compilatore Java, ma solo dagli strumenti di JML. SintassiLe specifiche JML sono espresse nella forma //@ <Specifica JML>
oppure /*@ <Specifica JML> @*/
DirettiveLe direttive principali del linguaggio sono:
EspressioniJML mette a inoltre a disposizione anche le seguenti espressioni:
Le annotazioni JML hanno inoltre accesso agli oggetti Java, oltre che ai metodi ed agli operatori degli oggetti. Questi sono combinati per fornire specifiche formali delle proprietà delle classi, dei campi e dei metodi. Un esempio di semplice annotazione di un metodo potrebbe essere il seguente: public class BankingExample {
public static final int MAX_BALANCE = 1000;
private int balance;
private boolean isLocked = false;
//@ invariant balance >= 0 && balance <= MAX_BALANCE;
//@ assignable balance;
//@ ensures balance == 0;
public BankingExample() { ... }
//@ requires amount > 0;
//@ ensures balance = \old(balance) + amount;
//@ assignable balance;
public void credit(int amount) { ... }
//@ requires amount > 0;
//@ ensures balance = \old(balance) - amount;
//@ assignable balance
public void debit(int amount) { ... }
//@ ensures isLocked == true;
public void lockAccount() { ... }
//@ signals (BankingException e) isLocked;
public /*@ pure @*/ int getBalance() throws BankingException { ... }
}
Bibliografia
Collegamenti esterni
|
Portal di Ensiklopedia Dunia