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
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(α)