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 48Figura 3.6: Exemplo de Uso da Cláusula also.Na entidade SubClasse o métodoA é sobrecarregado e são definidas 2 especificações. Aespecificação válida restringe a especificação da superclasse, definindo um valor maiorque 6 para x, e para y o valor igual a 2 vezes o valor de x. Se o valor de x for 7 e o valorde y for 14, a pré-condição é válida tanto para a superclasse como para a subclasse, pois,7 é maior que 4 e também maior que 6, e 14 é igual a 2 vezes o valor de x.A especificação menos restrita define um valor para x maior que 2. Se, na subclasse,o valor de x for 3, a pré-condição da superclasse é quebrada, pois x deve ser maior que 4.Em uma construção also, a especificação da superclasse é adicionada a especificaçãoda subclasse [21]. Primeiro é verificada a especificação da subclasse, caso tenha resultadoverdadeiro, em seguida é verificada a especificação da superclasse. Apesar da especificaçãopara pré-condição da subclasse da Figura 3.6 ser mais forte que a especificaçãoda superclasse, o objetivo deste exemplo é apresentar a sintaxe da construção JML paraherança de especificação.3.2.5 Cláusula signalsA especificação de um método pode conter pós-condicão excepcional. Uma pós-condicãoexcepcional define que propriedades devem ser satisfeitas caso o método termine abruptamente,lançando uma exceção.Na Figura 3.7, ao método addKgs foi acrescrentado o controle de exceção no escopoda especificação. Caso o valor do parâmetro seja negativo, a exceção IllegalArgumentExceptioné lançada. A cláusula signals e signals only define quais exceções podem ser

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

Saved successfully!

Ooh no, something went wrong!