·

Engenharia de Software ·

Linguagens de Programação

Envie sua pergunta para a IA e receba a resposta na hora

Fazer Pergunta

Texto de pré-visualização

PROGRAMAÇÃO MODULAR XULAMBS PIZZA BURGER Cada pedido realizado no restaurante deve ser associado a um cliente cadastrado Ao final da execução dados de pedidos e clientes devem ser armazenados em arquivos Cada pedido realizado no restaurante deve ser associado a um cliente cadastrado Pedido novoPedido new Pedido novoPedidoaddComidaumaComida Cliente cliente mapaClientesgetcliCPF clienteregistrarPedidonovoPedido PROGRAMAÇÃO DEFENSIVA Conceito baseado na noção de direção defensiva Se alguém fizer algo perigoso você está preparado para evitar consequências Você assume a responsabilidade pela sua saúde mesmo que o erro seja do outro motorista Cada pedido realizado no restaurante deve ser associado a um cliente cadastrado Pedido novoPedido new Pedido novoPedidoaddComidaumaComida Cliente cliente mapaClientesgetcliCPF clienteregistrarPedidonovoPedido Cada pedido realizado no restaurante deve ser associado a um cliente cadastrado Pedido novoPedido new Pedido novoPedidoaddComidaumaComida Cliente cliente mapaClientesgetcliCPF clienteregistrarPedidonovoPedido Os pedidos devem ser salvos em arquivo File pedidos new FiledadosPedidosbin File clientes new FiledadosClientesbin Utilsalvarpedidos listaPedidos Utilsalvarclientes mapaClientesvalues Os pedidos devem ser salvos em arquivo File pedidos new FiledadosPedidosbin File clientes new FiledadosClientesbin Utilsalvarpedidos listaPedidos Utilsalvarclientes mapaClientesvalues Os pedidos devem ser salvos em arquivo File pedidos new FiledadosPedidosbin File clientes new FiledadosClientesbin Utilsalvarpedidos listaPedidos Utilsalvarclientes mapaClientesvalues Conceito baseado na noção de direção defensiva Se alguém fizer algo perigoso você está preparado para evitar consequências Você assume a responsabilidade pela sua saúde mesmo que o erro seja do outro motorista Ideia principal na programação Problemas inevitavelmente acontecerão Seu código estará preparado para lidar com eles Robusteza Correção Executar as tarefas especificadas Continuar respondendo em situações anormais Interfaces de componentes de software devem ser especificadas de maneira formal precisa e verificável Précondições Póscondições Invariantes Método chamado précondições ou executa póscondições ou falha Falha situação excepcional Tratamento varia com o tipo de erro Tratamento formal de falhas Separa tratamento do erro do código esperado Propaga erros na pilha de chamada de funções Agrupa e diferencia tipos de erros Podese produzir Exception ou Error em Java Exceções Capturar criar lançar propagar Hierarquia de classes com a responsabilidade de sinalizar erros ou eventos inesperados a um código Hierarquia de classes com a responsabilidade de sinalizar erros ou eventos inesperados a um código ROBUSTEZ Ajudam a impedir que condições de erro sejam propagadas pelo código Não são ignoráveis Podem reduzir a complexidade do código e melhorar a legibilidade Centralizam o tratamento de problemas Ajuda a impedir que condições de erro sejam propagadas pelo código Não são ignoráveis Podem reduzir a complexidade do código e melhorar a legibilidade Centralizam o tratamento de problemas MAS DEVEM SER USADAS RESPONSAVELMENTE try bloco de código padrão catch exceção e1 blocos de tratamento de erros catch exceção e2 finally algumas linguagens oferecem finally bloco que será sempre executado int LeArquivo int codigoErro 0 AbraArquivo if ArquivoFoiAberto ObtenhaTamanhoArquivo if TamanhoFoiObtido AloqueMemoria if MemoriafoiAlocada LeArquivoNaMemoria if LeituraFalhou codigoErro 1 else codigoErro 2 else codigoErro 3 FecheArquivo if ArquivoNaoFechou codigoErro 0 codigoErro 4 else codigoErro codigoErro4 else codigoErro 5 return codigoErro LeArquivo try AbraArquivo ObtenhaTamanhoArquivo AloqueMemoria LeArquivoNaMemoria FecheArquivo catch FalhaAberturaArquivo FaçaAlgumaCoisa catch FalhaObtencaoTamanhoArquivo FacaAlgumaCoisa catch FalhaAlocacaoMemoria FacaAlgumaCoisa catch FalhaLeArquivo FacaAlgumaCoisa catch FalhaFechamentoArquivo FacaAlgumaCoisa Exceção é lançada Ambiente de execução procura um catch para tratamento desta exceção Método em execução não tem este catch Procurase o tratamento no método que chamou o método atual e assim sucessivamente Não é encontrado nenhum bloco catch Mensagem de exceção sem tratamento para usuário Interrompese a execução do programa Um bloco try pode ter vários blocos catch cada um lidando com uma exceção diferente Os catch são processados em ordem É importante escrever primeiro os blocos mais específicos Exceções são classes Ocorrências de exceções são objetos Checked Exceptions Não descendem de RuntimeException Unchecked Exceptions Descendem de RuntimeException Compilador verifica as Checked Exceptions A classe Throwable é a raiz da hierarquia de classes de exceções A classe Exception é uma extensão de Throwable Novas exceções estendem de Exception ou de suas classes filhas Classe Exception possui uma String para armazenar a mensagem de erro de uma exceção O programador tem duas alternativas Tratar uma exceção que pode receber trycatch Delegar a exceção ou criar uma nova throw throws Quatro passos Como capturar e tratar exceções Como lançar uma exceção Como criar sua própria exceção Como propagar uma exceção Tratamento de Erros Se algo deu errado o que fazemos Aconteceu o erro E então Ao acontecer o problema retorne um valor neutro válido que não cause propagação de erro Ex string vazia Inteiro de valor 0 Ponteiro para elemento null Pule para a próxima ocorrência Ex playlist de áudio vídeo ou imagens várias leituras de um dispositivosensor geração de listas e outros conjuntos PUC Minas Bacharelado em Engenharia de Software Programação Modular Prof João Caram Repetir a última resposta válida ou ignorar a tentativa atual mantendo o estado do objeto Ex escolha de um canal inexistente na TVcontrole usar a mesma textura anterior caso falte uma textura por exemplo uma cena 3D manter uma nota em caso de alteração inválida PUC Minas Bacharelado em Engenharia de Software Programação Modular Prof João Caram Calcular um valor válido próximo e atribuir ao objeto mantendo sua consistência Ex tentar acertar o relógio para 22h75 22h59 mudar para um canal não existente mudar para o primeiro ou para o último lançar nota maior que a máxima PUC Minas Bacharelado em Engenharia de Software Programação Modular Prof João Caram Método usual quando não há exceções Caso seja uma condição não tratável Capturar e tratar a exceção robustez Gerar uma mensagem de log com a ocorrência Evitar Log de qualquer coisa Gravar no log e propagar a exceção ASPECTOS DE PROJETO E DESEMPENHO Tratamento de exceções é demorado se um erro pode ser processado localmente trateo ao invés de lançar uma exceção Propagações de exceções devem ser evitadas em casos esperados fim de arquivo por exemplo Exceções são úteis quando dados de entrada não podem ser completamente verificados Exceções são úteis quando não se há o que fazer quando acontece um problema se o arquivo não existe o que fazer quando se quer alertar o usuário do objeto ou método Boa prática de programação se seu método é capaz de tratar uma exceção então tratea Não repasse a responsabilidade Planeje antecipadamente a abordagem para o tratamento de erros e uso de exceções Conheça bem as exceções da linguagem utilizada Prefira exceções mais específicas do que genéricas Crie exceções que tragam algo adicional ou use as exceções da linguagem Siga a nomeação padrão Utilize o construtor para descrever claramente o problema ocorrido Mensagens de erro descritivas Java e parâmetro cause Códigos de erro ou melhor enumeráveis OBRIGADO Dúvidas