12.07.2015 Views

JCML - Java Card Modeling Language: Definição e ... - Ifrn

JCML - Java Card Modeling Language: Definição e ... - Ifrn

JCML - Java Card Modeling Language: Definição e ... - Ifrn

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

CAPÍTULO 3. JML - JAVA MODELING LANGUAGE 4901 /*@ requires weight + kgs >= 0;02 @ ensures kgs >= 003 @ && weight == \old(weight + kgs);04 @ signals_only IllegalArgumentException;05 @ signals (IllegalArgumentException)06 @ kgs < 0;07 @*/08 public void addKgs(int kgs){09 if (kgs >= 0) {10 weight += kgs;11 } else {12 throw new IllegalArgumentException();13 }14 }Figura 3.7: Exemplo de Cláusula Signal.lançadas. No exemplo da Figura 3.7, mais especificamente, apenas a exceção IllegalArgumentExceptionpode ser lançada.3.2.6 Cláusula assignableA especificação de um método pode conter uma cláusula que defina quais variáveis podemser modificadas em uma chamada de método. A notação em JML é assignable, modifiesou modifiable. A cláusula assignable é mais comumente utilizada. Por padrão, se acláusula assignable não for declarada, esta assume o valor \everything, que indica quetodas as variáveis podem ser modificadas. Outro valor para esta cláusula é \nothing, ondese define que nenhum valor pode ser atribuído a qualquer variável. Os métodos declaradoscomo pure, por exemplo, o método getWeight na Figura 3.5, tem o valor \nothing paraassignable por padrão.//@ assignable \nothing ;//@ assignable \everything ;Se à espeficicação do método addKgs fosse acrescida a cláusula assignable para a variávelweight, sua especificação seria mais restrita. A adição desta cláusula faria com queapenas o estado de weight pudesse ser modificado. A Figura 3.8 apresenta a especificaçãodo método addKgs modificada.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!