-
Notifications
You must be signed in to change notification settings - Fork 73
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
68 changed files
with
267 additions
and
0 deletions.
There are no files selected for viewing
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes
File renamed without changes.
File renamed without changes.
File renamed without changes
File renamed without changes.
File renamed without changes.
File renamed without changes
File renamed without changes
File renamed without changes
File renamed without changes
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes
File renamed without changes
File renamed without changes
File renamed without changes
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes
File renamed without changes.
File renamed without changes.
File renamed without changes
File renamed without changes
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes
File renamed without changes
File renamed without changes
File renamed without changes.
File renamed without changes.
267 changes: 267 additions & 0 deletions
267
notebooks/pt/c02oo-java/s14exception/excecoes-jogo.ipynb
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,267 @@ | ||
{ | ||
"cells": [ | ||
{ | ||
"cell_type": "markdown", | ||
"metadata": {}, | ||
"source": [ | ||
"# Exception\n", | ||
"\n", | ||
"# Tarefa\n", | ||
"\n", | ||
"Planeje um conjunto de exceções a ser usado no jogo que está sendo desenvolvido. Isso envolve criar classes de exceções específicas para controlar falhas do jogo e montar pequenos testes ilustrativos conforme detalhado a seguir.\n", | ||
"\n", | ||
"No exemplo a seguir, é criado um cenário de uma divisão inteira em que não é aceita uma divisão por 1, nem uma divisão que não gere um número inteiro. Note que este é um cenário fictício simplificado.\n", | ||
"\n", | ||
"Segue abaixo o modelo de como deve ser documentado o plano de exceções. Tudo o que for indicado entre `<...>` indica algo que deve ser substituído pelo indicado. No modelo são colocados exemplos ilustrativos, que serão substituídos pelos do seu projeto." | ||
] | ||
}, | ||
{ | ||
"cell_type": "markdown", | ||
"metadata": {}, | ||
"source": [ | ||
"# Modelo do Plano de Exceções\n", | ||
"\n", | ||
"## Diagrama da hierarquia de exceções\n", | ||
"`<Elabore um diagrama com a hierarquia de exceções como detalhado abaixo>`\n", | ||
"\n", | ||
"![Hierarquia Exceções](exception-hierarchy.png)\n", | ||
"\n", | ||
"## Descrição das classes de exceção\n", | ||
"\n", | ||
"`<Monte uma tabela descritiva seguindo o exemplo>:`\n", | ||
"\n", | ||
"Classe | Descrição\n", | ||
"----- | -----\n", | ||
"DivisaoInvalida | Engloba todas as exceções de divisões não aceitas.\n", | ||
"DivisaoInutil | Indica que a divisão por 1 é inútil.\n", | ||
"DivisaoNaoInteira | Indica uma divisão não inteira.\n", | ||
"\n", | ||
"## Testes da Hierarquia de Exceções\n", | ||
"\n", | ||
"Monte um código que teste a sua hierarquia exceções (todas elas) conforme o exemplo a seguir." | ||
] | ||
}, | ||
{ | ||
"cell_type": "code", | ||
"execution_count": 1, | ||
"metadata": {}, | ||
"outputs": [ | ||
{ | ||
"data": { | ||
"text/plain": [ | ||
"com.twosigma.beaker.javash.bkrdb57d720.DivisaoInvalida" | ||
] | ||
}, | ||
"execution_count": 1, | ||
"metadata": {}, | ||
"output_type": "execute_result" | ||
} | ||
], | ||
"source": [ | ||
"public class DivisaoInvalida extends Exception {\n", | ||
" public DivisaoInvalida() {\n", | ||
" super();\n", | ||
" }\n", | ||
"\n", | ||
" public DivisaoInvalida(String message) {\n", | ||
" super(message);\n", | ||
" }\n", | ||
"}" | ||
] | ||
}, | ||
{ | ||
"cell_type": "code", | ||
"execution_count": 2, | ||
"metadata": {}, | ||
"outputs": [ | ||
{ | ||
"data": { | ||
"text/plain": [ | ||
"com.twosigma.beaker.javash.bkrdb57d720.DivisaoInutil" | ||
] | ||
}, | ||
"execution_count": 2, | ||
"metadata": {}, | ||
"output_type": "execute_result" | ||
} | ||
], | ||
"source": [ | ||
"public class DivisaoInutil extends DivisaoInvalida {\n", | ||
" public DivisaoInutil() {\n", | ||
" super();\n", | ||
" }\n", | ||
"\n", | ||
" public DivisaoInutil(String message) {\n", | ||
" super(message);\n", | ||
" }\n", | ||
"}" | ||
] | ||
}, | ||
{ | ||
"cell_type": "code", | ||
"execution_count": 3, | ||
"metadata": {}, | ||
"outputs": [ | ||
{ | ||
"data": { | ||
"text/plain": [ | ||
"com.twosigma.beaker.javash.bkrdb57d720.DivisaoNaoInteira" | ||
] | ||
}, | ||
"execution_count": 3, | ||
"metadata": {}, | ||
"output_type": "execute_result" | ||
} | ||
], | ||
"source": [ | ||
"public class DivisaoNaoInteira extends DivisaoInvalida {\n", | ||
" public DivisaoNaoInteira() {\n", | ||
" super();\n", | ||
" }\n", | ||
"\n", | ||
" public DivisaoNaoInteira(String message) {\n", | ||
" super(message);\n", | ||
" }\n", | ||
"}" | ||
] | ||
}, | ||
{ | ||
"cell_type": "code", | ||
"execution_count": 4, | ||
"metadata": {}, | ||
"outputs": [ | ||
{ | ||
"data": { | ||
"text/plain": [ | ||
"com.twosigma.beaker.javash.bkrdb57d720.Util" | ||
] | ||
}, | ||
"execution_count": 4, | ||
"metadata": {}, | ||
"output_type": "execute_result" | ||
} | ||
], | ||
"source": [ | ||
"public class Util {\n", | ||
" public static int divide(int x, int y) throws DivisaoInvalida {\n", | ||
" int divisao;\n", | ||
" if (y == 1)\n", | ||
" throw new DivisaoInutil(\"Esta divisao eh inutil\");\n", | ||
" if (x%y > 0)\n", | ||
" throw new DivisaoNaoInteira(\"Esta divisao nao eh inteira\");\n", | ||
" divisao = x / y;\n", | ||
" return divisao;\n", | ||
" }\n", | ||
"}" | ||
] | ||
}, | ||
{ | ||
"cell_type": "code", | ||
"execution_count": 5, | ||
"metadata": {}, | ||
"outputs": [ | ||
{ | ||
"name": "stdout", | ||
"output_type": "stream", | ||
"text": [ | ||
"=== Primeiro teste\n", | ||
"Resultado da divisao: 4\n", | ||
"=== Segundo teste\n", | ||
"Esta divisao eh inutil\n", | ||
"=== Terceiro teste\n", | ||
"Esta divisao nao eh inteira\n", | ||
"=== Quarto teste\n", | ||
"Ocorreu um erro nao esperado na divisao\n", | ||
"--> Esta divisao nao eh inteira\n" | ||
] | ||
}, | ||
{ | ||
"data": { | ||
"text/plain": [ | ||
"null" | ||
] | ||
}, | ||
"execution_count": 5, | ||
"metadata": {}, | ||
"output_type": "execute_result" | ||
} | ||
], | ||
"source": [ | ||
"// codigo testando a Excecao criada\n", | ||
"int numerador = 8;\n", | ||
"int denominador = 2;\n", | ||
"\n", | ||
"System.out.println(\"=== Primeiro teste\");\n", | ||
"\n", | ||
"// testando uma divisao valida\n", | ||
"try {\n", | ||
" int divisao = Util.divide(numerador, denominador);\n", | ||
" System.out.println(\"Resultado da divisao: \" + divisao);\n", | ||
"} catch (DivisaoInvalida erro) {\n", | ||
" System.out.println(\"Ocorreu um erro nao esperado na divisao\");\n", | ||
" System.out.println(erro.getMessage());\n", | ||
"} catch (Exception erro) {\n", | ||
" System.out.println(\"Outro erro: \" + erro.getMessage());\n", | ||
"}\n", | ||
"\n", | ||
"System.out.println(\"=== Segundo teste\");\n", | ||
"\n", | ||
"denominador = 1;\n", | ||
"\n", | ||
"// testando a divisao inutil\n", | ||
"try {\n", | ||
" int divisao = Util.divide(numerador, denominador);\n", | ||
" System.out.println(\"Resultado da divisao: \" + divisao);\n", | ||
"} catch (DivisaoInutil erro) {\n", | ||
" System.out.println(erro.getMessage());\n", | ||
"} catch (Exception erro) {\n", | ||
" System.out.println(\"Outro erro: \" + erro.getMessage());\n", | ||
"}\n", | ||
"\n", | ||
"System.out.println(\"=== Terceiro teste\");\n", | ||
"\n", | ||
"denominador = 3;\n", | ||
"\n", | ||
"// testando a divisao nao inteira\n", | ||
"try {\n", | ||
" int divisao = Util.divide(numerador, denominador);\n", | ||
" System.out.println(\"Resultado da divisao: \" + divisao);\n", | ||
"} catch (DivisaoNaoInteira erro) {\n", | ||
" System.out.println(erro.getMessage());\n", | ||
"} catch (Exception erro) {\n", | ||
" System.out.println(\"Outro erro: \" + erro.getMessage());\n", | ||
"}\n", | ||
"\n", | ||
"System.out.println(\"=== Quarto teste\");\n", | ||
"\n", | ||
"// testando a super classe\n", | ||
"try {\n", | ||
" int divisao = Util.divide(numerador, denominador);\n", | ||
" System.out.println(\"Resultado da divisao: \" + divisao);\n", | ||
"} catch (DivisaoInvalida erro) {\n", | ||
" System.out.println(\"Ocorreu um erro nao esperado na divisao\");\n", | ||
" System.out.println(\"--> \" + erro.getMessage());\n", | ||
"} catch (Exception erro) {\n", | ||
" System.out.println(\"Outro erro: \" + erro.getMessage());\n", | ||
"}" | ||
] | ||
} | ||
], | ||
"metadata": { | ||
"kernelspec": { | ||
"display_name": "Java", | ||
"language": "java", | ||
"name": "java" | ||
}, | ||
"language_info": { | ||
"codemirror_mode": "text/x-java", | ||
"file_extension": ".java", | ||
"mimetype": "", | ||
"name": "Java", | ||
"nbconverter_exporter": "", | ||
"version": "11.0.7" | ||
} | ||
}, | ||
"nbformat": 4, | ||
"nbformat_minor": 4 | ||
} |
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.