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 4. APLICABILIDADE DE JML A JAVA CARD 6801 import java.io.PrintStream;02 import java.lang.reflect.*;03 import java.util.*;04 import javacard.framework.*;05 import org.jmlspecs.jmlrac.runtime.*;0607 public class Wallet extends Applet08 implements JMLCheckable09 {10 private Wallet(byte abyte0[], short word0, byte byte0)11 {12 Block$();13 . . .14 }15 . . .16 }Figura 4.9: Parte da classe Wallet decompilada.Análise do Código Gerado a partir do JMLcUma classe compilada como JMLc sempre implementa a interface JMLCheckable e usa objetos de pacotes<strong>Java</strong>, com o java.io, java.lang.reflect, java.util, e objetos de pacotes JML como,org.jmlspecs.jmlrac.runtime.Usando o exemplo da classe Wallet na Figura 4.5, após decompilar o executável geradopelo JMLc ( DJ <strong>Java</strong> Decompiler 1 ), têm-se como resultado um código semelhante aoda Figura 4.9. O código consiste na definição da classe com a implementação da interfaceJMLCheckable, junto com os novos pacotes e a nova estrutura para o construtor da classe.O compilador JML gera código verificável para as propriedades da classe, como oinvariante, e também para cada especificação de método. O JMLc gera, ao:• Seis (6) métodos para checagem de invariante e propriedades de instância da classe(para toda classe);• Um (1) método para checar pré-condição (para cada construtor ou método);• Um (1) método para checar pós-condição normal (para cada construtor oumétodo);• Um (1) método para checar pós-condição excepcional (para cada construtor oumétodo) e;1 disponível em http://javatoolbox.com/authors/atanas-emilov-neshkov

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

Saved successfully!

Ooh no, something went wrong!