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

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

CAPÍTULO 3. JML - JAVA MODELING LANGUAGE 4401 public abstract class Constraint{02 int a;03 //@ constraint a == \old(a);0405 boolean[] b;06 //@ invariant b != null;07 //@ constraint b.length == \old(b.length) ;0809 boolean[] c;10 //@ invariant c != null;11 //@ constraint c.length >= \old(c.length) ;1213 Constraint(int bLength, int cLength) {14 b = new boolean[bLength];15 c = new boolean[cLength];16 }17 }Figura 3.3: Exemplo de Constraint [21].3.2.2 Cláusula constraintA cláusula constraint é utilizada quando se necessita restringir os possíveis estados doobjeto. Esta cláusula denota uma relação entre o pré e pós-estado do método, restringindocomo a variável pode ser modificada. É possível definir que uma variável é constante ouque a mesma pode apenas receber valores maiores que o atual atribuído. As constraintsrestringem a forma como os valores dos atributos podem mudar durante a execução doprograma, diferente do invariante, que assumem um caráter estático. As constraints podemser vistas como sendo pós-condições para todos os métodos.Por exemplo, na Figura 3.3, a constraint diz que o valor da variável a e o tamanhodo array representado pela variável b nunca irão mudar. Já o valor do array representadopela variável c irá apenas aumentar de valor.Todos os métodos em classes que herdam de uma classe que contém a cláusula invariantou constraint, devem respeitar a especificação de tais cláusulas definidas na classeoriginal. Diferentemente do invariante, a cláusula constraint pode utilizar o operador\old, devido ao fato das constraints possuírem um caráter dinâmico. O operador \old()faz referência a um pré-estado de uma variável, como por exemplo: \old(α)

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

Saved successfully!

Ooh no, something went wrong!