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 5. <strong>JCML</strong> - JAVA CARD MODELING LANGUAGE 895.2.2 Traduzindo Cláusulas <strong>JCML</strong>Nesta seção apresentaremos a sequência para a tradução de especificações <strong>JCML</strong> emcódigo <strong>Java</strong> <strong>Card</strong>, e como é feita a transformação de cada tipo de especificação em códigode verificação runtime.Como exemplo para tradução de regras <strong>JCML</strong> em código <strong>Java</strong> <strong>Card</strong> será utilizado aclasse de domínio descrita no Capítulo 2 e Apêndices A e B. A classe implementa informaçõesde um usuário, as quais podem ser, tipo, matrícula, locais de acesso autorizados,e controle de crédito que podem ser utilizados pelo usuário do cartão.Estrutura de Arquivos:Após compilar uma classe (Classe.java) com <strong>JCML</strong>c, umnovo arquivo é criado com o código original, mais o código <strong>Java</strong> <strong>Card</strong> gerado a partirda especificação. O nome do novo arquivo é uma junção do nome inicial da classe, mais<strong>JCML</strong> (Classe<strong>JCML</strong>.java). A partir da nova classe (Classe<strong>JCML</strong>.java), o executável <strong>Java</strong>(Classe<strong>JCML</strong>.class) é gerado com o compilador <strong>Java</strong> <strong>Card</strong>. A verificação de contexto devariáveis é feita pelo compilador <strong>Java</strong> após a geração do arquivo Classe<strong>JCML</strong>.java. Estaprevista a análise semântica e verificação de contexto em iterações futuras do compilador.Na Figura 5.8 é apresentada a sequência de compilação. A partir de uma classe <strong>Java</strong><strong>Card</strong>, o compilador <strong>JCML</strong> verifica o que é código de especificação, e o que é código<strong>Java</strong> <strong>Card</strong>. Para cada cláusula de especificação é gerado um método de verificação correspondente,e este é inserido no código original. Caso não exista nenhuma anotação<strong>JCML</strong>, o código final é igual ao código original, pois, como a especificação é vazia, nãohá necessidade de gerar código para verificação.Definição de Exceções:Como cada método de verificação gerado pode lançar umaexceção, como mostrado na Figura 5.7, se fez necessário a criação de classes para representaçãode cada uma das exceções. As exceções herdam da classe <strong>Card</strong>RuntimeExceptiondo pacote javacard.framework, e seguem a mesma estrutura da classe ISOException,utilizada frequentemente em aplicações <strong>Java</strong> <strong>Card</strong>. As classes para tratamento de errosde especificação <strong>JCML</strong> são: InvariantException e RequiresException, como mostram asFiguras 5.9 e 5.10.

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

Saved successfully!

Ooh no, something went wrong!