Lidando de Forma Eficiente com Validações Locais de Objetos

Save this PDF as:
 WORD  PNG  TXT  JPG

Tamanho: px
Começar a partir da página:

Download "Lidando de Forma Eficiente com Validações Locais de Objetos"

Transcrição

1 Lidando de Forma Eficiente com Validações Locais de Objetos Aprenda a construir um mini-framework para validar objetos locais sem afetar a complexidade do código. Autor Paulo César M. N. A. Coutinho é graduado em Tecnologia em Sistemas de Informação pelo Centro Federal de Educação Tecnológica de Pernambuco. Trabalha como Engenheiro de Sistemas no Centro de Estudos e Sistemas Avançados do Recife (C.E..S.A.R) com desenvolvimento móvel em C/C++. Também vem trabalhando com Java para web em projetos pessoais. Possui as certificações SCJP 5 e SCWCD. Gravata Validar objetos locais é uma prática essencial para garantir a qualidade final do software produzido. Por outro lado, esse tipo de validação geralmente traz consigo um aumento significativo na complexidade do código, o que pode nos levar a problemas de métricas. Este artigo tem como objetivo mostrar uma forma eficiente de implementar e executar esse tipo de validação sem comprometer a complexidade do código. Introdução No mundo do desenvolvimento de software, estamos sempre buscando meios de melhorar a qualidade do software que produzimos. E uma das características que indicam a qualidade de um software é a sua robustez, ou seja, sua capacidade de tratar situações inesperadas sem apresentar falhas. O mecanismo de exceções de Java nos ajuda bastante nesse aspecto, pois com ele podemos separar completamente os casos excepcionais do fluxo normal da aplicação. A validação de dados é uma pratica, indispensável, que visa garantir o estado dos dados durante seu processamento. Combinando o uso dessa prática com o mecanismo de exceções aumentamos as chances da construção um software mais robusto e, conseqüentemente, de mais qualidade. Quando falamos em validação, a primeira coisa que nos vem à cabeça é validação de formulários, validação de beans ou outras coisas do gênero. Porém, existe um tipo de validação que muitas vezes esquecemos, ignoramos ou, simplesmente, fazemos de qualquer maneira sem nos preocupar com conceitos básicos da engenharia de software como reusabilidade, manutenibilidade, clareza e complexidade. Essa é a validação local, ou seja, validação de variáveis locais e argumentos de métodos. Temos vários frameworks que definem estratégias de validação de beans com o intuito de centralizar e tornar essa tarefa o mais declarativa possível. Entre estes estão Struts, Spring e Hibernate Validator. Agora com a JSR 303, Bean Validator, teremos uma padronização para validação de Java Beans que visa centralizar o código de validação para que esse possa ser utilizado por todas as camadas da aplicação. Para validações locais, entretanto, não temos muitos recursos disponíveis e em conseqüência disso fazemos essas validações de qualquer forma, de um modo não padronizado que pode, muitas vezes, nos levar a desde erros de lógica, causados pela escrita repetitiva de trechos de validação, a problemas com métricas de complexidade de código devido aos vários ifs presentes nas validações. Nesse artigo veremos como criar um pequeno conjunto de classes com o objetivo de centralizar a lógica utilizada em validações locais de modo que possam ser reutilizadas por nossas aplicações de modo geral. Como resultado teremos um mini-framework que será empacotado num arquivo.jar, o qual pode ser distribuído e utilizado em diversas aplicações.

2 Validação de Bean X Validação local Validações locais são aquelas com o objetivo de validar o estado das variáveis locais de um método de acordo com o propósito desse método. Elas diferem das validações de beans principalmente no que diz respeito ao dinamismo e especificidade das condições de validação. Uma validação de bean é definida baseada nos requisitos da aplicação e é estática, ou seja, o conjunto de restrições que caracterizam um bean como válido não muda durante a execução da aplicação. Já as validações locais são dinâmicas e dependem diretamente da funcionalidade que está sendo executada pelo método. Um exemplo de validação de bean é verificar se os atributos obrigatórios estão preenchidos na hora de persistir um bean na base de dados. Já um exemplo de validação local é validar se um argumento de um método não é nulo ou se o objeto recebido encontra-se num estado válido para o método. Para entendermos melhor essa diferença, vamos imaginar uma classe Venda, mostrada na Figura 1, que possua os atributos vencimento, valor e aberta, este último para indicar se a venda encontra-se em aberto ou não. Podemos definir como um estado válido para esse bean o preenchimento correto dos atributos vencimento e valor. Não podemos, portanto, dizer que uma Venda só é válida se o valor do atributo aberta for true porque uma venda pode ser válida estando aberta ou não. Imaginemos agora um método liquidavenda() que receba um objeto Venda como argumento e lance uma exceção do tipo VendaJaLiquidadaException para vendas que já foram liquidadas anteriormente, ou seja, para aquelas que o valor do atributo aberta for false. Nesse tipo de situação a validação de bean não resolverá nosso problema e, sendo assim, teremos que criar uma validação local no método, validação essa que se aplica apenas para o propósito do método. Figura 1. Classe Venda. A primeira forma que imaginamos de implementar essa validação nesse método é a descrita na Listagem 1. Uma segunda alternativa seria executar a ação de liquidar a venda no if e lançar a exceção num else. Essa parece ser uma boa alternativa a princípio, mas começa a ficar complicada quando lançamos vários tipos de exceção. Essa implementação funciona, de fato, porém apresenta alguns problemas que discutiremos a seguir. Listagem 1. Método liquidavenda() inicial. public void liquidavenda(venda venda) throws VendaJaLiquidadaException { if (!venda.isaberta()) { throw new VendaJaLiquidadaException("Esta venda já foi liquidada!"); // Lógica para liquidar a venda... Primeiramente nossa implementação não está verificando se o objeto Venda recebido não é nulo, o que poderá levar a um NullPointerException sem nenhum tipo de informação que ajude a identificar o erro caso uma venda nula seja recebida. Para resolver esse problema o método liquidavenda() deveria testar se o argumento

3 recebido é diferente de nulo e, caso não o seja, deveria lançar uma exceção que informasse qual foi o problema ocorrido. Nesse caso uma IllegalArgumentException, com uma mensagem apropriada, seria mais interessante. Veja como ficaria o código corrigido na Listagem 2. Listagem 2. Método liquidavenda() com validação de argumento nulo. public void liquidavenda(venda venda) throws VendaJaLiquidadaException { if (venda == null) { throw new IllegalArgumentException("O argumento venda não pode ser null!"); if (!venda.isaberta()) { throw new VendaJaLiquidadaException("Esta venda já foi liquidada!"); // Lógica para liquidar a venda... Um outro problema no código da Listagem 1 diz respeito a poluição e complexidade do código, que aumentou ainda mais quando solucionamos o problema anterior (ver Listagem 2). Note que para essas simples validações foi preciso adicionar dois ifs ao nosso código aumentando a complexidade ciclomática (número de caminhos independentes possíveis) do método, o que pode ser motivo de um refactoring forçado no código, uma vez que existem clientes que estabelecem valores máximos para complexidade em métodos e utilizam essas métricas como critério de aceitação do sistema. Além do mais, um monte de ifs de validação deixa o código poluído e prejudica o entendimento do objetivo do método. Vejamos agora um outro tipo de cenário comum de validações locais. A Listagem 3 mostra o exemplo de um código de login que recebe dois argumentos (username e password) e retorna o usuário que corresponde aos argumentos recebidos ou lança uma exceção de acordo com o erro ocorrido. Primeiro validamos os argumentos, em seguida chamamos o método getuserbyusername() que recupera um usuário na base de dados, então validamos o status do usuário e caso nenhum problema seja encontrado o usuário é retornado. Note que nosso método lança uma exceção específica para cada tipo de erro encontrado. Nesse exemplo fica bem claro como código de validação local pode aumentar a complexidade de um método. A classe User é mostrada na Listagem 4. É um simples Java Bean composto dos atributos username, password e status. O atributo status é um enum que representa o status do usuário no sistema. Listagem 3. Método login() com várias validações locais. public User login(string username, String password) throws UserNotFoundException, InvalidPasswordException, BlockedUserException, NonActiveUserException { // Validação dos argumentos... if (username == null) { throw new IllegalArgumentException("O username não pode ser null."); if (password == null) { throw new IllegalArgumentException("O password não pode ser null."); User user = getuserbyusername(username); // Validação do estado do usuário if (user == null) {

4 throw new UserNotFoundException("O usuário não existe."); if (user.getpassword().equals(password)) { throw new InvalidPasswordException("A senha informada é inválida."); if (user.getstatus() == User.UserStatus.NON_ACTIVE) { throw new NonActiveUserException("O usuário não teve o cadastro ativado."); if (user.getstatus() == User.UserStatus.BLOCKED) { throw new BlockedUserException("O usuário teve o cadastro bloqueado."); return user; Listagem 4. Classe User. public class User { public enum UserStatus { ACTIVE, NON_ACTIVE, BLOCKED private String username; private String password; private UserStatus status; // Getters e setters Solucionando o problema da complexidade Podemos perceber algumas características comuns em todos os ifs de validação nos exemplos mostrados. Se olharmos bem, perceberemos que todos são compostos, basicamente, de uma condição booleana, uma exceção a ser lançada e uma mensagem de erro. Nosso primeiro passo então, será encapsular essas características numa classe que representará um caso de validação local. A Listagem 5 mostra o código da classe LocalValidationCase. Nossa classe possui três atributos que são exatamente os que acabamos de identificar. Note que o atributo exceptionclass deve ser do tipo RuntimeException ou alguma subclasse desse tipo. Isso se deve ao fato de não podermos lançar exceções checadas que não estejam declaradas no método e como estamos criando um mecanismo genérico não temos como saber quais tipos de exceções serão lançadas, daí a necessidade de usarmos apenas exceções não checadas. Listagem 5. Classe LocalValidationCase para representar um caso de validação local. // Declaração de pacote e imports omitidos. public class LocalValidationCase { private boolean successcondition; private Class<? extends RuntimeException> exceptionclass; private String exceptionmessage; public LocalValidationCase(boolean successcondition, Class<? extends RuntimeException> exceptionclass, String exceptionmessage) { this.successcondition = successcondition; this.exceptionclass = exceptionclass; this.exceptionmessage = exceptionmessage;

5 // Getters e setters. Agora que temos uma classe para representar um caso de validação local, podemos criar uma coleção de objetos desse tipo e validá-los através de um loop. A Listagem 6 mostra a classe LocalValidationUtil. Nela temos um método estático chamado validate() e que recebe como argumento uma lista de LocalValidationCases que representam os casos de validação local a serem validados. Nesse método simplesmente iteramos sobre a lista recuperando seus valores e para cada valor testamos sua condição de sucesso. Em caso de falha, criamos a mensagem de erro a ser usada na exceção que será lançada; para isso verificamos se alguma mensagem de erro foi informada, se foi, essa será usada, caso contrário usaremos uma mensagem padrão; e logo em seguida lançamos uma exceção que será criada a partir do método privado createresultexception(), para tal informamos a classe da exceção a ser lançada e a mensagem de erro. O método createresultexception() instancia a exceção com base na classe informada utilizando a API de reflexão de Java e retorna a instância criada. Observe que caso ocorra algum erro na criação da exceção informada ou mesmo se nenhuma classe de exceção for informada, criaremos uma IllegalArgumentException que será nossa exceção padrão. Listagem 6. Classe LocalValidationUtil que fornece um método para validar uma lista de LocalValidationCases. //Declaração de pacote e imports omitidos. public class LocalValidationUtil { public static void validate(final List<LocalValidationCase> validationcases) { if (validationcases!= null) { for (int i = 0; i < validationcases.size(); i++) { LocalValidationCase validationcase = validationcases.get(i); if (!validationcase.issuccesscondition()) { String message = validationcase.getexceptionmessage()!= null? validationcase.getexceptionmessage() : "Validation error [" + i + "]"; throw createresultexception(validationcase.getexceptionclass(), message); private static RuntimeException createresultexception(final Class<? extends RuntimeException> exceptionclass, final String exceptionmessage) { RuntimeException resultexception = null; if (exceptionclass!= null) { try { final Class parametertypes[] = { String.class ; final Constructor<? extends RuntimeException> ct = exceptionclass.getconstructor(parametertypes); final Object argumentlist[] = { exceptionmessage ;

6 resultexception = ct.newinstance(argumentlist); catch (InstantiationException e) { catch (IllegalAccessException e) { catch (SecurityException e) { catch (NoSuchMethodException e) { catch (InvocationTargetException e) { if (resultexception == null) { resultexception = new IllegalArgumentException(exceptionMessage); return resultexception; Até agora, já temos uma classe para representar os casos de validação e uma classe utilitária para validar uma coleção desses casos lançando exceções apropriadas de acordo com cada caso. Ainda temos, contudo, um problema relacionado à usabilidade. Não seria nada bom, sempre que fossemos validar variáveis locais, ter que instanciar uma lista de casos de validação, em seguida instanciar e adicionar cada caso à lista e depois invocar um método numa outra classe passando a lista criada. Para resolver esse problema criaremos uma classe que representará todo o contexto de validação local. A Listagem 7 mostra a classe LocalValidationContext. Essa será a classe que fará toda a interface entre nosso mini-framework e a aplicação cliente. Nossa classe possui um atributo, validationcases, que nada mais é do que uma lista de casos de validação local; e um segundo atributo, exceptionclass, que representa a classe padrão da exceção a ser lançada quando uma não for informada no caso de validação. Temos então dois construtores, o primeiro que recebe um valor inicial para exceptionclass e o segundo que usa uma IllegalArgumentException como padrão. O método clear() serve para limpar a lista de casos de validação e o método setexceptionclass() serve para configurar o valor do atributo exceptionclass. O método addvalidcondition() cria um objeto do tipo LocalValidationCase com os argumentos recebidos e o adiciona à lista de casos de validação do contexto. Esse método é sobrecarregado para prover uma flexibilidade maior ao usuário. Nesse método, a condição informada no argumento condition deve ser verdadeira e caso a mesma não seja, uma exceção será lançada. O método addinvalidcondition() é praticamente igual ao método addvalidcondition(), a única diferença é que nesse método a condição informada no argumento condition deve ser falsa para que a validação tenha sucesso. Omitimos as versões sobrecarregadas desse método e dos restantes uma vez que estas seguem o mesmo princípio do método addvalidcondition(). Os métodos addnotnullchecking(), addnotemptychecking() e addequalscheking() são simplesmente métodos utilitários para casos comuns de validação. Todos eles usam o addvalidcondition() internamente. Vale ressaltar que aqui estão apenas alguns exemplos de validações comuns, mas podemos criar vários outros, por exemplo addregexchecking(), addsamechecking(), etc. Com a ajuda desses métodos utilitários podemos encapsular a lógica para os testes comuns, deixando para o usuário apenas a tarefa de fornecer os objetos. Temos ainda um método addcustomvalidation() que recebe como argumento um objeto do tipo LocalValidator. Este tipo trata-se de uma interface que criaremos, o código encontra-se na Listagem 8. Essa interface declara apenas um método, validate(), e é útil quando temos alguma validação com uma lógica mais carregada, ou que lance alguma exceção que deva ser tratada localmente. Nesses casos podemos criar classes que implementem a interface LocalValidator, e implementar o método validate() nessas classes.

7 Por fim temos o método validate(), que simplesmente delega a validação para o método validate() do nosso LocalValidationUtil passando a lista de casos de validação. As versões estáticas do método validate() são úteis quando o método cliente possui apenas um caso de validação, evitando o overhead da criação de um objeto do tipo LocalValidationContext para adicionar apenas um caso de validação. Um detalhe ainda em relação a classe LocalValidationContext, é que todos os métodos não estáticos possuem um retorno do tipo da própria classe e retornam this. Eles foram implementados dessa forma para que possam ser chamados de forma encadeada. Mais adiante, veremos como isso ajuda na usabilidade da nossa classe. Listagem 7. Classe LocalValidationContext. // Declaração de pacote e imports omitidos. public class LocalValidationContext { private List<LocalValidationCase> validationcases; private Class<? extends RuntimeException> exceptionclass; public LocalValidationContext(Class<? extends RuntimeException> exceptionclass) { validationcases = new ArrayList<LocalValidationCase>(); this.exceptionclass = exceptionclass; public LocalValidationContext() { this(illegalargumentexception.class); public LocalValidationContext clear() { validationcases.clear(); public LocalValidationContext setexceptionclass(class<? extends RuntimeException> exceptionclass) { this.exceptionclass = exceptionclass; public LocalValidationContext addvalidcondition(boolean condition, Class<? extends validationcases.add(new LocalValidationCase(condition, exceptionclass, exceptionmessage)); public LocalValidationContext addvalidcondition(boolean condition, Class<? extends RuntimeException> exceptionclass) { addvalidcondition(condition, exceptionclass, null); public LocalValidationContext addvalidcondition(boolean condition, String exceptionmessage) { addvalidcondition(condition, exceptionclass, exceptionmessage); public LocalValidationContext addvalidcondition(boolean condition) { addvalidcondition(condition, exceptionclass, null); public LocalValidationContext addinvalidcondition(boolean condition, Class<? extends

8 validationcases.add(new LocalValidationCase(!condition, exceptionclass, exceptionmessage)); // versões sobrecarregadas do método addinvalidcondition... public LocalValidationContext addnotnullchecking(object object, Class<? extends addvalidcondition(object!= null, exceptionclass, exceptionmessage); // versões sobrecarregadas do método addnotnullchecking... public LocalValidationContext addnotemptychecking(string string, Class<? extends addvalidcondition(string!= null && string.trim().length() > 0, exceptionclass, exceptionmessage); // versões sobrecarregadas do método addnotemptychecking... public LocalValidationContext addequalschecking(object object1, Object object2, Class<? extends addvalidcondition(object1!= null && object1.equals(object2), exceptionclass, exceptionmessage); // versões sobrecarregadas do método addequalschecking... public LocalValidationContext addcustomvalidation(localvalidator validator, Class<? extends addvalidcondition(validator.validate(), exceptionclass, exceptionmessage); // versões sobrecarregadas do método addcustomvalidation... // Método para executar as validações registradas no contexto. public LocalValidationContext validate() { LocalValidationUtil.validate(validationCases); public static void validate(boolean validcontition, Class<? extends RuntimeException> exceptionclass, String exceptionmessage) { List<LocalValidationCase> validationcases = new ArrayList<LocalValidationCase>(); validationcases.add(new LocalValidationCase(validContition, exceptionclass, exceptionmessage)); LocalValidationUtil.validate(validationCases); public static void validate(boolean validcontition, Class<? extends RuntimeException> exceptionclass) { validate(validcontition, exceptionclass, null);

9 Listagem 8. Interface LocalValidator. public interface LocalValidator { boolean validate(); Com esse pequeno conjunto de classes e interfaces criados, temos então nosso mini-framework de validação local pronto para ser usado. Vejamos agora como ficariam os dois métodos que analisamos no início deste artigo com o uso do nosso mini-framework. As Listagens 9 e 10 mostram, respectivamente, os métodos liquidavenda() e login(). Veja como conseguimos manter as mesmas regras de validação, porém sem alterar, em nada, a complexidade dos métodos. Listagem 9. Método liquidavenda() utilizando o mini-framework de validação local. public void liquidavenda(venda venda) throws VendaJaLiquidadaException { // Cria o contexto de validação. new LocalValidationContext(IllegalArgumentException.class) // Casos de validação: // Verifica se a venda recebida não é nula..addnotnullchecking(venda, "O argumento venda não pode ser null!") // Verifica se a venda está aberta..addvalidcondition(venda.isaberta(), VendaJaLiquidadaException.class, "Esta venda já foi liquidada!") // Invoca a validação local..validate(); // Lógica para liquidar a venda... Listagem 10. Método login() utilizando o mini-framework de validação local. public User login(string username, String password) throws UserNotFoundException, InvalidPasswordException, BlockedUserException, NonActiveUserException { // Cria o contexto de validação. LocalValidationContext context = new LocalValidationContext(IllegalArgumentException.class) // Casos de validação: // Verifica se o login recebido não é nulo..addnotnullchecking(username, "O username não pode ser null.") // Verifica se a senha recebida não é nula..addnotnullchecking(password, "O password não pode ser null.") // Invoca a validação local..validate(); // Recupera o usuário com o login informado. User user = getuserbyusername(username); // Limpa o contexto de validação para ser reutilizado. context.clear() // Casos de validação: // Verifica se existe um usuário para o login informado..addnotnullchecking(user, UserNotFoundException.class, "O usuário não existe.") // Verifica se existe a senha do usuário é igual a informada..addequalschecking(user.getpassword(), password, InvalidPasswordException.class,

10 "A senha informada é inválida.") // Verifica se o usuário ainda não teve o cadastro ativado..addinvalidcondition(user.getstatus() == User.UserStatus.NON_ACTIVE, NonActiveUserException.class, "O usuário não teve o cadastro ativado.") // Verifica se o usuário está bloqueado..addinvalidcondition(user.getstatus() == User.UserStatus.BLOCKED, BlockedUserException.class, "O usuário não teve o cadastro ativado.") // Invoca a validação local..validate(); // Retorna o usuário. return user; Distribuindo a solução Agora vamos criar um arquivo.jar com nossas classes para que possam ser utilizadas facilmente em outros projetos. Vejamos uma maneira bem simples de empacotar nossas classes num.jar através do Eclipse. Para isso clique com o botão direito do mouse no projeto ou num pacote especifico que queira distribuir. Agora selecione a opção Export... e quando o diálogo abrir escolha a opção JAR file dentro da pasta Java. Selecione os projetos, pacotes ou arquivos que deseja exportar; clique no botão Browse... para escolher o caminho onde o arquivo.jar será criado e clique em Finish. Feito isso já temos nosso mini-framework pronto para ser utilizado em nossas aplicações. Para tal, basta incluir o.jar que acabamos de criar no classpath dos nossos projetos. Considerações Finais Nesse artigo, vimos como criar um conjunto de classes e interfaces para padronizar e centralizar a lógica de validação local e, por conseqüência, diminuir a complexidade dos métodos que utilizam esse tipo de validação. O resultado foi a construção de um mini-framework que foi empacotado num arquivo.jar e poderá ser utilizado pelo leitor em todas as suas aplicações daqui para a frente. Referências [Java Practices: Validate method arguments] [Best Practices for Exception Handling] [JSR 303: Bean Validation]

Guia de Fatores de Qualidade de OO e Java

Guia de Fatores de Qualidade de OO e Java Qualiti Software Processes Guia de Fatores de Qualidade de OO e Java Versã o 1.0 Este documento só pode ser utilizado para fins educacionais, no Centro de Informática da Universidade Federal de Pernambuco.

Leia mais

NOVIDADES DO JAVA PARA PROGRAMADORES C

NOVIDADES DO JAVA PARA PROGRAMADORES C PROGRAMAÇÃO SERVIDOR EM SISTEMAS WEB NOVIDADES DO JAVA PARA PROGRAMADORES C Prof. Dr. Daniel Caetano 2012-1 Objetivos Apresentar o Conceito de Classes e Objetos Capacitar para a criação de objetos simples

Leia mais

INTRODUÇÃO 12. DOCUMENTAÇÃO INTRODUÇÃO INTRODUÇÃO

INTRODUÇÃO 12. DOCUMENTAÇÃO INTRODUÇÃO INTRODUÇÃO INTRODUÇÃO 12. DOCUMENTAÇÃO Na plataforma Java SE 7, há cerca de 4000 classes e interfaces disponíveis para utilizarmos em nossas aplicações Podemos visualizar a documentação dessas classes e interfaces

Leia mais

PROGRAMAÇÃO ORIENTADA A OBJETOS -TRATAMENTO DE EXCEÇÕES. Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br

PROGRAMAÇÃO ORIENTADA A OBJETOS -TRATAMENTO DE EXCEÇÕES. Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br PROGRAMAÇÃO ORIENTADA A OBJETOS -TRATAMENTO DE EXCEÇÕES Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br ROTEIRO 5. Tratamento de Exceções Introdução e conceitos Capturando exceção usando

Leia mais

Aplicações, durante a execução, podem incorrer em muitas espécies de erros de vários graus de severidade Quando métodos são invocados sobre um objeto:

Aplicações, durante a execução, podem incorrer em muitas espécies de erros de vários graus de severidade Quando métodos são invocados sobre um objeto: Tratamento de Exceções Prof. Bruno Gomes bruno.gomes@ifrn.edu.br Programação Orientada a Objetos Exceções Aplicações, durante a execução, podem incorrer em muitas espécies de erros de vários graus de severidade

Leia mais

Escola Superior de Gestão e Tecnologia. Tratamento de Exceções

Escola Superior de Gestão e Tecnologia. Tratamento de Exceções Escola Superior de Gestão e Tecnologia Tratamento de Exceções Objetivos Compreender como o tratamento de exceção e de erro funciona. Como u4lizar try, throw e catch para detectar, indicar e tratar exceções,

Leia mais

Erros, exceçõ. ções e asserçõ

Erros, exceçõ. ções e asserçõ Java 2 Standard Edition Erros, exceçõ ções e asserçõ ções Helder da Rocha www.argonavis.com.br 1 Controle de erros com Exceções Exceções são Erros de tempo de execução Objetos criados a partir de classes

Leia mais

Criando documentação com javadoc

Criando documentação com javadoc H Criando documentação com javadoc H.1 Introdução Neste apêndice, fornecemos uma introdução a javadoc ferramenta utilizada para criar arquivos HTML que documentam o código Java. Essa ferramenta é usada

Leia mais

Arquitetura de Aplicações JSP/Web. Padrão Arquitetural MVC

Arquitetura de Aplicações JSP/Web. Padrão Arquitetural MVC Arquitetura de Aplicações JSP/Web Padrão Arquitetural MVC Arquitetura de Aplicações JSP/Web Ao projetar uma aplicação Web, é importante considerála como sendo formada por três componentes lógicos: camada

Leia mais

Curso Java Starter. www.t2ti.com 1

Curso Java Starter. www.t2ti.com 1 1 2 Apresentação O Curso Java Starter foi projetado com o objetivo de ajudar àquelas pessoas que têm uma base de lógica de programação e desejam entrar no mercado de trabalho sabendo Java, A estrutura

Leia mais

Prototype, um Design Patterns de Criação

Prototype, um Design Patterns de Criação Prototype, um Design Patterns de Criação José Anízio Pantoja Maia Este artigo tem como finalidade compreender o funcionamento do padrão de projeto prototype, serão abordados os participantes que compõe

Leia mais

Sistemas Distribuídos

Sistemas Distribuídos Sistemas Distribuídos Marcelo Lobosco DCC/UFJF Comunicação em Sistemas Distribuídos Aula 06 Agenda Modelo Cliente-Servidor (cont.) Invocação Remota de Método (Remote Method Invocation RMI) Visão Geral

Leia mais

Capítulo 13. Encapsulamento. Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Capítulo 13. Encapsulamento. Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra Capítulo 13 Encapsulamento Objetivos do Capítulo Indicar a importância do mecanismo de encapsulamento no contexto do desenvolvimento de software utilizando a programação orientada a objetos. Apresentar

Leia mais

Os Sete Hábitos das Exceções Altamente Eficazes

Os Sete Hábitos das Exceções Altamente Eficazes c o l u n a Mundo OO Os Sete Hábitos das Exceções Altamente Eficazes Aprenda os bons hábitos na modelagem de erros de uma aplicação A modelagem no tratamento de erros de uma aplicação é uma atividade que

Leia mais

Especialização em desenvolvimento para web com interfaces ricas. Tratamento de exceções em Java Prof. Fabrízzio A. A. M. N. Soares

Especialização em desenvolvimento para web com interfaces ricas. Tratamento de exceções em Java Prof. Fabrízzio A. A. M. N. Soares Especialização em desenvolvimento para web com interfaces ricas Tratamento de exceções em Java Prof. Fabrízzio A. A. M. N. Soares Objetivos Conceito de exceções Tratar exceções pelo uso de try, catch e

Leia mais

Exercícios de Revisão Java Básico

Exercícios de Revisão Java Básico Exercícios de Revisão Java Básico (i) Programação básica (estruturada) 1) Faça um programa para calcular o valor das seguintes expressões: S 1 = 1 1 3 2 5 3 7 99... 4 50 S 2 = 21 50 22 49 23 48...250 1

Leia mais

Programação de Computadores - I. Profª Beatriz Profº Israel

Programação de Computadores - I. Profª Beatriz Profº Israel Programação de Computadores - I Profª Beatriz Profº Israel As 52 Palavras Reservadas O que são palavras reservadas São palavras que já existem na linguagem Java, e tem sua função já definida. NÃO podem

Leia mais

Como criar um EJB. Criando um projeto EJB com um cliente WEB no Eclipse

Como criar um EJB. Criando um projeto EJB com um cliente WEB no Eclipse Como criar um EJB Criando um projeto EJB com um cliente WEB no Eclipse Gabriel Novais Amorim Abril/2014 Este tutorial apresenta o passo a passo para se criar um projeto EJB no Eclipse com um cliente web

Leia mais

ARQUITETURA SISGRAD. Manual de Utilização. Versão: 2.0. Criação: 05 de julho de 2007 Autor: André Penteado

ARQUITETURA SISGRAD. Manual de Utilização. Versão: 2.0. Criação: 05 de julho de 2007 Autor: André Penteado ARQUITETURA SISGRAD Manual de Utilização Versão: 2.0 Criação: 05 de julho de 2007 Autor: André Penteado Última Revisão: 09 de outubro de 2009 Autor: Alessandro Moraes Controle Acadêmico - Arquitetura SISGRAD

Leia mais

Acessando um Banco de Dados

Acessando um Banco de Dados Acessando um Banco de Dados Introdução Agora que você já está craque em JSP e já instalou seu servidor, vamos direto para a parte prática! Neste tutorial vamos aprender a acessar um banco de dados. Para

Leia mais

Capítulo 14. Herança a e Polimorfismo. Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Capítulo 14. Herança a e Polimorfismo. Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra Capítulo 14 Herança a e Polimorfismo Objetivos do Capítulo Apresentar os conceitos de herança e de polimorfismo. Explorar os diversos recursos disponíveis no Java para a aplicação da herança e do polimorfismo

Leia mais

Aula 2. Objetivos. Encapsulamento na linguagem Java; Utilizando a referência this.

Aula 2. Objetivos. Encapsulamento na linguagem Java; Utilizando a referência this. Aula 2 Objetivos Encapsulamento na linguagem Java; Utilizando a referência this. Encapsulamento, data hiding é um conceito bastante importante em orientação a objetos. É utilizado para restringir o acesso

Leia mais

Reuso com Herança a e Composiçã

Reuso com Herança a e Composiçã Java 2 Standard Edition Reuso com Herança a e Composiçã ção Helder da Rocha www.argonavis.com.br 1 Como aumentar as chances de reuso Separar as partes que podem mudar das partes que não mudam. Exemplo:

Leia mais

Tutorial RMI (Remote Method Invocation) por Alabê Duarte

Tutorial RMI (Remote Method Invocation) por Alabê Duarte Tutorial RMI (Remote Method Invocation) por Alabê Duarte Este tutorial explica basicamente como se implementa a API chamada RMI (Remote Method Invocation). O RMI nada mais é que a Invocação de Métodos

Leia mais

!" # # # $ %!" " & ' ( 2

! # # # $ %!  & ' ( 2 !"# # #$ %!" "& ' ( 2 ) *+, - 3 . / 4 !" 0( # "!#. %! $""! # " #.- $ 111.&( ( 5 # # 0. " % * $(, 2 % $.& " 6 # #$ %% Modelo (Encapsula o estado da aplicação) Implementado como JavaBeans Responde a consulta

Leia mais

JavaScript 2.0X 1.0 3.0X 1.1 4.0 4.05 1.2 4.06 4.61 1.3 5.0 1.4 6.0 1.5

JavaScript 2.0X 1.0 3.0X 1.1 4.0 4.05 1.2 4.06 4.61 1.3 5.0 1.4 6.0 1.5 JavaScript Diego R. Frank, Leonardo Seibt FIT Faculdades de Informática de Taquara Fundação Educacional Encosta Inferior do Nordeste Av. Oscar Martins Rangel, 4500 Taquara RS Brasil difrank@terra.com.br,

Leia mais

Programação por Objectos. Java

Programação por Objectos. Java Programação por Objectos Java Parte 2: Classes e objectos LEEC@IST Java 1/24 Classes (1) Sintaxe Qualif* class Ident [ extends IdentC] [ implements IdentI [,IdentI]* ] { [ Atributos Métodos ]* Qualif:

Leia mais

Java II. Sérgio Luiz Ruivace Cerqueira sergioruivace@gmail.com

Java II. Sérgio Luiz Ruivace Cerqueira sergioruivace@gmail.com Java II Sérgio Luiz Ruivace Cerqueira sergioruivace@gmail.com Por quê JSP? Com Servlets é fácil Ler dados de um formulário Recuperar dados de uma requisição Gerar informação de resposta Fazer gerenciamento

Leia mais

LOGGING DE EVENTOS COM LOG4J

LOGGING DE EVENTOS COM LOG4J LOGGING DE EVENTOS COM LOG4J por Luiz Gustavo Stábile de Souza O que é logging? Fazer o logging de uma aplicação é uma das possíveis maneiras de debugá-la, registrando em algum meio (arquivo, enviando

Leia mais

Programação Orientada a Objetos em java. Polimorfismo

Programação Orientada a Objetos em java. Polimorfismo Programação Orientada a Objetos em java Polimorfismo Polimorfismo Uma característica muito importante em sistemas orientados a objetos Termo proveniente do grego, e significa muitas formas Em POO, significa

Leia mais

Autor: Ricardo Francisco Minzé Júnior - ricardominze@yahoo.com.br Desenvolvendo aplicações em camadas com PHP 5.

Autor: Ricardo Francisco Minzé Júnior - ricardominze@yahoo.com.br Desenvolvendo aplicações em camadas com PHP 5. Desenvolvendo aplicações em camadas com PHP 5. Talvez a primeira vista você ache estranha a palavra Camada em programação, mas o que vem a ser Camada? Segundo o dicionário: Camada 1 - Qualquer matéria

Leia mais

MÓDULO Programação para Web 2

MÓDULO Programação para Web 2 MÓDULO Programação para Web 2 USANDO O JSF Continuação Interdependência e Injeção Instâncias de Managed Beans podem conversar entre si para dividir o processamento das requisições dos usuários de acordo

Leia mais

Orientação a Objetos com Java

Orientação a Objetos com Java Everton Coimbra de Araújo Orientação a Objetos com Java Simples, Fácil e Eficiente Visual Books Sumário Prefácio... 11 Introdução... 13 1 Introdução à Orientação a Objetos... 17 1.1 Conceitualização...

Leia mais

FBV - Linguagem de Programação II. Um pouco sobre Java

FBV - Linguagem de Programação II. Um pouco sobre Java FBV - Linguagem de Programação II Um pouco sobre Java História 1992: um grupo de engenheiros da Sun Microsystems desenvolve uma linguagem para pequenos dispositivos, batizada de Oak Desenvolvida com base

Leia mais

Centro Universitário de Formiga UNIFOR-MG Ciência da Computação Disciplina: Professor: Alunos: Hibernate V alidator Formiga, Outubro 2011.

Centro Universitário de Formiga UNIFOR-MG Ciência da Computação Disciplina: Professor: Alunos: Hibernate V alidator Formiga, Outubro 2011. Centro Universitário de Formiga UNIFOR-MG Ciência da Computação 8º período Disciplina: Laboratório de Programação IV Professor: Michel Pires Silva Alunos: Valter Ribeiro Lima Júnior Hibernate Validator

Leia mais

JDBC. Siga as instruções para instalar o banco de dados H2 e criar a tabela Alunos.

JDBC. Siga as instruções para instalar o banco de dados H2 e criar a tabela Alunos. JDBC CRIANDO O BANCO DE DADOS: Siga as instruções para instalar o banco de dados H2 e criar a tabela Alunos. CRIANDO O PROJETO JAVA PARA DESKTOP: Crie um projeto Java chamado Prograd Crie um pacote chamado

Leia mais

Estudo de Caso 4.1 Coleta de Estatísticas

Estudo de Caso 4.1 Coleta de Estatísticas 4 Estudo de Caso Com o propósito de melhor apresentar a arquitetura NeMaSA, assim como melhor ilustrar seu funcionamento, dois exemplos práticos de testes desenvolvidos sobre a arquitetura proposta serão

Leia mais

AULA 4 VISÃO BÁSICA DE CLASSES EM PHP

AULA 4 VISÃO BÁSICA DE CLASSES EM PHP AULA 4 VISÃO BÁSICA DE CLASSES EM PHP Antes de mais nada, vamos conhecer alguns conceitos, que serão importantes para o entendimento mais efetivos dos assuntos que trataremos durante a leitura desta apostila.

Leia mais

EMENTA DO CURSO. Tópicos:

EMENTA DO CURSO. Tópicos: EMENTA DO CURSO O Curso Preparatório para a Certificação Oracle Certified Professional, Java SE 6 Programmer (Java Básico) será dividido em 2 módulos e deverá ter os seguintes objetivos e conter os seguintes

Leia mais

Etc & Tal. Volume 2 - Número 1 - Abril 2009 SBC HORIZONTES 44

Etc & Tal. Volume 2 - Número 1 - Abril 2009 SBC HORIZONTES 44 Armazenando Dados em Aplicações Java Parte 2 de 3: Apresentando as opções Hua Lin Chang Costa, hualin@cos.ufrj.br, COPPE/UFRJ. Leonardo Gresta Paulino Murta, leomurta@ic.uff.br, IC/UFF. Vanessa Braganholo,

Leia mais

3.5. Cuidado com o modelo anêmico

3.5. Cuidado com o modelo anêmico 3.5. Cuidado com o modelo anêmico public Periodo adiaumasemana() { Calendar novofim = (Calendar) this.fim.clone(); novofim.add(calendar.day_of_month, 7); return new Periodo(inicio, novofim); E, com uma

Leia mais

Parte I. Demoiselle Mail

Parte I. Demoiselle Mail Parte I. Demoiselle Mail Para o envio e recebimento de e-s em aplicativos Java, a solução mais natural é usar a API JavaMail [http:// www.oracle.com/technetwork/java/java/index.html]. Ela provê um framework

Leia mais

Como já foi muito bem detalhado no Capítulo IV, o jcompany Developer Suite pode ser

Como já foi muito bem detalhado no Capítulo IV, o jcompany Developer Suite pode ser A1Criando um módulo de negócio Capítulo 27 Aplicação dividida em módulos - Introdução Como já foi muito bem detalhado no Capítulo IV, o jcompany Developer Suite pode ser compreendido como uma solução de

Leia mais

1.6. Tratamento de Exceções

1.6. Tratamento de Exceções Paradigmas de Linguagens I 1 1.6. Tratamento de Exceções Uma exceção denota um comportamento anormal, indesejado, que ocorre raramente e requer alguma ação imediata em uma parte do programa [GHE 97, DER

Leia mais

Introdução à Programação. Interface, Polimorfismo e Dynamic Binding

Introdução à Programação. Interface, Polimorfismo e Dynamic Binding Introdução à Programação Interface, Polimorfismo e Dynamic Binding Interface Programador Java PLENO Possuir sólida experiência em programação Desenvolvimento na linguagem JAVA Webservice, Struts ou JSF(desejável)

Leia mais

Um objeto é uma instância de uma 'classe'. Você define uma classe utilizando o trecho de código abaixo;

Um objeto é uma instância de uma 'classe'. Você define uma classe utilizando o trecho de código abaixo; um objeto; é definido; Um objeto é uma instância de uma 'classe'. Você define uma classe utilizando o trecho de código abaixo; class ClasseBase{ é instanciado; $objetobase = new ClasseBase; Caso queira,

Leia mais

Sistema Gerenciador de Hotel. Adriano Douglas Girardello. Ana Paula Fredrich. Tiago Alexandre Schulz Sippert

Sistema Gerenciador de Hotel. Adriano Douglas Girardello. Ana Paula Fredrich. Tiago Alexandre Schulz Sippert UNIOESTE Universidade Estadual do Oeste do Paraná CENTRO DE CIÊNCIAS EXATAS E TECNOLÓGICAS Colegiado de Informática Curso de Bacharelado em Informática Sistema Gerenciador de Hotel Adriano Douglas Girardello

Leia mais

Modelagem e Implementação (Incremental de um Software para Controle) de Aquário de Peixes

Modelagem e Implementação (Incremental de um Software para Controle) de Aquário de Peixes Modelagem e Implementação de Aquário de Peixes- por Jorge Fernandes - Página 1 Modelagem e Implementação (Incremental de um Software para Controle) de Aquário de Peixes Jorge Fernandes Natal, Agosto de

Leia mais

4 O Workflow e a Máquina de Regras

4 O Workflow e a Máquina de Regras 4 O Workflow e a Máquina de Regras O objetivo do workflow e da máquina de regras é definir um conjunto de passos e regras configuráveis. Ao longo de sua execução, um usuário consegue simplificar o seu

Leia mais

Padrão Arquitetura em Camadas

Padrão Arquitetura em Camadas Padrão Arquitetura em Camadas Universidade Católica de Pernambuco Ciência da Computação Prof. Márcio Bueno poonoite@marciobueno.com Fonte: Material da Profª Karina Oliveira Definição Estimula a organização

Leia mais

Facebook. Java com o. Integrando Aplicações. Descubra como é fácil criar uma aplicação para rodar no Facebook. _capa

Facebook. Java com o. Integrando Aplicações. Descubra como é fácil criar uma aplicação para rodar no Facebook. _capa _capa Integrando Aplicações Java com o Facebook Descubra como é fácil criar uma aplicação para rodar no Facebook Desde o lançamento oficial do Facebook, em 2004, o número de usuários vem aumentando a cada

Leia mais

Unidade 9: Middleware JDBC para Criação de Beans

Unidade 9: Middleware JDBC para Criação de Beans Programação Servidor para Sistemas Web 1 Unidade 9: Middleware JDBC para Criação de Beans Implementando MVC Nível 1 Prof. Daniel Caetano Objetivo: Preparar o aluno para construir classes de entidade com

Leia mais

2 Orientação a objetos na prática

2 Orientação a objetos na prática 2 Orientação a objetos na prática Aula 04 Sumário Capítulo 1 Introdução e conceitos básicos 1.4 Orientação a Objetos 1.4.1 Classe 1.4.2 Objetos 1.4.3 Métodos e atributos 1.4.4 Encapsulamento 1.4.5 Métodos

Leia mais

Acesso a Banco. Conexão em Java. Conexão em Java. Programação Orientada a Objetos Profa. Cristiane e Prof. Daniel

Acesso a Banco. Conexão em Java. Conexão em Java. Programação Orientada a Objetos Profa. Cristiane e Prof. Daniel Acesso a Banco Programação Orientada a Objetos Profa. Cristiane e Prof. Daniel As conexões em Java são feitas através de uma ponte que implementa todas as funcionalidades que um banco de dados padrão deve

Leia mais

Certidão Online Manual do Usuário

Certidão Online Manual do Usuário JUNTA COMERCIAL DO ESTADO DO RIO DE JANEIRO Certidão Online Manual do Usuário Versão 3.1 Lista de Tópicos - Navegação Rápida CADASTRANDO O USUÁRIO... 3 ACESSANDO O SISTEMA... 5 CERTIDAO SIMPLIFICADA NADA

Leia mais

UNIVERSIDADE FEDERAL DO PARANÁ

UNIVERSIDADE FEDERAL DO PARANÁ CURSO: Ciência da Computação DATA: / / 2013 PERÍODO: 4 o. PROFESSOR: Andrey DISCIPLINA: Técnicas Alternativas de Programação AULA: 05 APRESENTAÇÃO: Nesta aula vamos ver como se faz a criação de Métodos

Leia mais

Curso Java Starter. www.t2ti.com 1

Curso Java Starter. www.t2ti.com 1 1 Apresentação O Curso Java Starter foi projetado com o objetivo de ajudar àquelas pessoas que têm uma base de lógica de programação e desejam entrar no mercado de trabalho sabendo Java, A estrutura do

Leia mais

AULA APLICAÇÕES PARA WEB SESSÕES E LOGIN E SENHA

AULA APLICAÇÕES PARA WEB SESSÕES E LOGIN E SENHA Sumário Construção de sistema Administrativo... 1 Sistema de Login... 2 SQL INJECTION... 2 Técnicas para Evitar Ataques... 2 Formulário de Login e Senha fará parte do DEFAULT... 5 LOGAR... 5 boas... 6

Leia mais

Programação de Computadores - I. Profª Beatriz Profº Israel

Programação de Computadores - I. Profª Beatriz Profº Israel Programação de Computadores - I Profª Beatriz Profº Israel Ambiente de Desenvolvimento Orientação a Objetos É uma técnica de desenvolvimento de softwares que consiste em representar os elementos do mundo

Leia mais

Criando uma agenda simples com NetBeans 6.5

Criando uma agenda simples com NetBeans 6.5 Criando uma agenda simples com NetBeans 6.5 (Swing application framework e Beansbinding) Já faz algum tempo que escrevi uma agenda simples usando o Eclipse com o Visual Class Editor. Demorei em torno de

Leia mais

3 Classes e instanciação de objectos (em Java)

3 Classes e instanciação de objectos (em Java) 3 Classes e instanciação de objectos (em Java) Suponhamos que queremos criar uma classe que especifique a estrutura e o comportamento de objectos do tipo Contador. As instâncias da classe Contador devem

Leia mais

Ferramenta: Spider-CL. Manual do Usuário. Versão da Ferramenta: 1.1. www.ufpa.br/spider

Ferramenta: Spider-CL. Manual do Usuário. Versão da Ferramenta: 1.1. www.ufpa.br/spider Ferramenta: Spider-CL Manual do Usuário Versão da Ferramenta: 1.1 www.ufpa.br/spider Histórico de Revisões Data Versão Descrição Autor 14/07/2009 1.0 15/07/2009 1.1 16/07/2009 1.2 20/05/2010 1.3 Preenchimento

Leia mais

SISTEMA EXPERIMENTALL 15/11/2009. Olá! A partir de agora vamos conhecer a IDE NetBeans 6.7.1 efetuando um micro projeto swing.

SISTEMA EXPERIMENTALL 15/11/2009. Olá! A partir de agora vamos conhecer a IDE NetBeans 6.7.1 efetuando um micro projeto swing. 15/11/2009 Olá! A partir de agora vamos conhecer a IDE NetBeans 6.7.1 efetuando um micro projeto swing. Crie um novo projeto clicando em arquivo e em novo projeto. Escolha a opção java, aplicativo java

Leia mais

[MANUAL DE INTEGRAÇÃO PARA SITES DE MEMBROS]

[MANUAL DE INTEGRAÇÃO PARA SITES DE MEMBROS] 2011 [MANUAL DE INTEGRAÇÃO PARA SITES DE MEMBROS] Destinado a usuários que desejam vender conteúdo premium, disponível em sites de membros, através da plataforma Hotmart. Versão do documento: 1.0, 11/04/2011.

Leia mais

Programação Orientada a Objetos. Encapsulamento

Programação Orientada a Objetos. Encapsulamento Programação Orientada a Objetos Encapsulamento de Dados Ocultação de dados Garante a transparência de utilização dos componentes do software, facilitando: Entendimento Reuso Manutenção Minimiza as interdependências

Leia mais

sobre rogério gonçalves gerente de projetos > digitale agência digital rogerio@digitale.com.br h7p://www.digitale.com.br h7p://leveme.

sobre rogério gonçalves gerente de projetos > digitale agência digital rogerio@digitale.com.br h7p://www.digitale.com.br h7p://leveme. sobre rogério gonçalves gerente de projetos > digitale agência digital rogerio@digitale.com.br h7p://www.digitale.com.br h7p://leveme.la/rogerio definição - é uma forma de programar e organizar um sistema

Leia mais

Uma Introdução à Arquitetura CORBA. O Object Request Broker (ORB)

Uma Introdução à Arquitetura CORBA. O Object Request Broker (ORB) Uma Introdução à Arquitetura Francisco C. R. Reverbel 1 Copyright 1998-2006 Francisco Reverbel O Object Request Broker (ORB) Via de comunicação entre objetos (object bus), na arquitetura do OMG Definido

Leia mais

Aula 30 - Sockets em Java

Aula 30 - Sockets em Java Aula 30 - Sockets em Java Sockets Sockets são estruturas que permitem que funções de software se interconectem. O conceito é o mesmo de um soquete (elétrico, telefônico, etc...), que serve para interconectar

Leia mais

Curso Adonai QUESTÕES Disciplina Linguagem JAVA

Curso Adonai QUESTÕES Disciplina Linguagem JAVA 1) Qual será o valor da string c, caso o programa rode com a seguinte linha de comando? > java Teste um dois tres public class Teste { public static void main(string[] args) { String a = args[0]; String

Leia mais

CONVENÇÃO DE CÓDIGO JAVA

CONVENÇÃO DE CÓDIGO JAVA CONVENÇÃO DE CÓDIGO JAVA Eligiane Ceron - Abril de 2012 Versão 1.0 Conteúdo Considerações iniciais... 2 Introdução... 2 Extensão de arquivos... 2 Arquivos de código Java... 2 Comentários iniciais... 2

Leia mais

Evolução do Design através de Testes e o TDD

Evolução do Design através de Testes e o TDD c a p a Lucas Souza (lucas.souza@caelum.com.br): é bacharel em Engenharia da Computação pela Universidade de Ribeirão Preto, possui a certificação SCJP e trabalha com Java há 4 anos. Atualmente é desenvolvedor

Leia mais

Sistemas Operacionais Aula 03: Estruturas dos SOs. Ezequiel R. Zorzal ezorzal@unifesp.br www.ezequielzorzal.com

Sistemas Operacionais Aula 03: Estruturas dos SOs. Ezequiel R. Zorzal ezorzal@unifesp.br www.ezequielzorzal.com Sistemas Operacionais Aula 03: Estruturas dos SOs Ezequiel R. Zorzal ezorzal@unifesp.br www.ezequielzorzal.com OBJETIVOS Descrever os serviços que um sistema operacional oferece aos usuários e outros sistemas

Leia mais

Como construir um compilador utilizando ferramentas Java

Como construir um compilador utilizando ferramentas Java Como construir um compilador utilizando ferramentas Java p. 1/3 Como construir um compilador utilizando ferramentas Java Aula 5 Análise Léxica com JavaCC Prof. Márcio Delamaro delamaro@icmc.usp.br Como

Leia mais

Persistência de Objetos no SGBD PostgreSQL, Utilizando as APIs: JDBC, JDK, Swing e Design Patteners DAO.

Persistência de Objetos no SGBD PostgreSQL, Utilizando as APIs: JDBC, JDK, Swing e Design Patteners DAO. Persistência de Objetos no SGBD PostgreSQL, Utilizando as APIs: JDBC, JDK, Swing e Design Patteners DAO. Robson Adão Fagundes http://robsonfagundes.blogspot.com/ Mini curso Desenvolvimento de aplicação

Leia mais

Java Básico. Classes Abstratas, Exceções e Interfaces Prof. Fernando Vanini Ic-Unicamp

Java Básico. Classes Abstratas, Exceções e Interfaces Prof. Fernando Vanini Ic-Unicamp Java Básico Classes Abstratas, Exceções e Interfaces Prof. Fernando Vanini Ic-Unicamp Classes Abstratas construção de uma classe abstrata construção de classes derivadas Classes e Herança Uma classe define

Leia mais

Lista de Contas: Assinatura. Lista de Contas. Listas de Contas: Descrição. Listas de Contas: Descrição. Listas de Contas: Descrição

Lista de Contas: Assinatura. Lista de Contas. Listas de Contas: Descrição. Listas de Contas: Descrição. Listas de Contas: Descrição Lista de Contas Lista de Contas: Assinatura null Quais são os métodos necessários? class ListaDeContas { void inserir (Conta c) { void retirar (Conta c) { Conta procurar (String num) { Listas de Contas:

Leia mais

WF Processos. Manual de Instruções

WF Processos. Manual de Instruções WF Processos Manual de Instruções O WF Processos é um sistema simples e fácil de ser utilizado, contudo para ajudar os novos usuários a se familiarizarem com o sistema, criamos este manual. Recomendamos

Leia mais

Curso - Padrões de Projeto Módulo 2: Padrões de Criação

Curso - Padrões de Projeto Módulo 2: Padrões de Criação Curso - Padrões de Projeto Módulo 2: Padrões de Criação Vítor E. Silva Souza vitorsouza@gmail.com http://www.javablogs.com.br/page/engenho http://esjug.dev.java.net Sobre o Instrutor Formação: Java: Graduação

Leia mais

Linguagem de Programação JAVA. Técnico em Informática Professora Michelle Nery

Linguagem de Programação JAVA. Técnico em Informática Professora Michelle Nery Linguagem de Programação JAVA Técnico em Informática Professora Michelle Nery Agenda Regras paravariáveis Identificadores Válidos Convenção de Nomenclatura Palavras-chaves em Java Tipos de Variáveis em

Leia mais

Prova de Java. 1) Copie o programa abaixo no eclipse e complete-o, utilizando os conceitos aprendidos durante o curso. (4 pontos)

Prova de Java. 1) Copie o programa abaixo no eclipse e complete-o, utilizando os conceitos aprendidos durante o curso. (4 pontos) Prova de Java 1) Copie o programa abaixo no eclipse e complete-o, utilizando os conceitos aprendidos durante o curso. (4 pontos) O programa consiste em uma aplicação que simula o comportamento de dois

Leia mais

Tutorial para atividades do Trabalho Prático da disciplina DCC 603 Engenharia de Software

Tutorial para atividades do Trabalho Prático da disciplina DCC 603 Engenharia de Software Tutorial para atividades do Trabalho Prático da disciplina DCC 603 Engenharia de Software Antes de iniciar o tutorial, baixar os seguintes arquivos da página do Prof. Wilson: Plataforma reutilizável: http://homepages.dcc.ufmg.br/~wilson/praxis/3.0/praxis.zip

Leia mais

Framework utilizando reflexão e aspectos para persistência de objetos em java

Framework utilizando reflexão e aspectos para persistência de objetos em java Framework utilizando reflexão e aspectos para persistência de objetos em java Antonio Carlos Rolloff (UNIPAR) acrolloff@gmail.com Arthur Cattaneo Zavadski (UNIPAR) arthur@datacoper.com.br Maria Aparecida

Leia mais

Automatização de Aplicativos Windows usando o AutoHotKey

Automatização de Aplicativos Windows usando o AutoHotKey Automatização de Aplicativos Windows usando o AutoHotKey Muitos processos de negócio dependem de aplicativos de terceiros que assumem a presença de um operador humano para executar determinadas rotinas.

Leia mais

Programação Orientada a Objetos em Java. Herança

Programação Orientada a Objetos em Java. Herança Universidade Federal do Amazonas Departamento de Ciência da Computação IEC481 Projeto de Programas Programação Orientada a Objetos em Java Herança Professor: César Melo Slides baseados em materiais preparados

Leia mais

public Agenda() { compromissos = null; } public int getnumerodecompromissos() { if (compromissos==null) return 0; else return compromissos.

public Agenda() { compromissos = null; } public int getnumerodecompromissos() { if (compromissos==null) return 0; else return compromissos. import java.util.scanner; class Data... class Compromisso... public class Agenda private Compromisso[] compromissos; private Compromisso[] realoquecompromissos (Compromisso[] vetor, int tamanhodesejado)

Leia mais

Programação Orientada a Objetos Prof. Rone Ilídio UFSJ/CAP

Programação Orientada a Objetos Prof. Rone Ilídio UFSJ/CAP Programação Orientada a Objetos Prof. Rone Ilídio UFSJ/CAP 1) Introdução Programação Orientada a Objetos é um paradigma de programação bastante antigo. Entretanto somente nos últimos anos foi aceito realmente

Leia mais

Documento de Projeto de Software

Documento de Projeto de Software Documento de Projeto de Software Projeto: Vídeo Locadora Passatempo Versão: 1.0 Responsável: Ricardo de Almeida Falbo 1. Introdução Este documento apresenta o documento de projeto (design) do sistema de

Leia mais

SELENIUM 28/03/2011. Márcio Delamaro Harry Trinta

SELENIUM 28/03/2011. Márcio Delamaro Harry Trinta 1 SELENIUM 28/03/2011 Márcio Delamaro Harry Trinta O que é a Selenium? Selenium é uma ferramenta desenvolvida para a automação de testes em aplicações Web Suporta diversos browsers: Firefox Internet Explorer

Leia mais

Técnicas de Programação II

Técnicas de Programação II Técnicas de Programação II Aula 06 Orientação a Objetos e Classes Edirlei Soares de Lima Orientação a Objetos O ser humano se relaciona com o mundo através do conceito de objetos.

Leia mais

marcio@dsc.ufcg.edu.br priscillakmv@gmail.com

marcio@dsc.ufcg.edu.br priscillakmv@gmail.com DSC/CEEI/UFCG marcio@dsc.ufcg.edu.br priscillakmv@gmail.com 1 Realiza atividades com ênfase em Ensino, Pesquisa e Extensão (Ensino) 2 Configurando o projeto Adicionando código ao arquivo com o código-fonte

Leia mais

Transaction Scripts: Uma Forma mais Simples de Organizar Lógica de Domínio

Transaction Scripts: Uma Forma mais Simples de Organizar Lógica de Domínio Roberto Perillo (jrcperillo@yahoo.com.br) é bacharel em Ciência da Computação e está atualmente cursando mestrado no ITA, onde já concluiu o curso de especialização em Engenharia de Software. Trabalha

Leia mais

Encapsulamento de Dados

Encapsulamento de Dados Encapsulamento de Dados Universidade Católica de Pernambuco Ciência da Computação Prof. Márcio Bueno poonoite@marciobueno.com Fonte: Material da Profª Karina Oliveira Modificadores de Visibilidade Especificam

Leia mais

WEBDESIGN. Professor: Paulo Marcos Trentin - paulo@paulotrentin.com.br http://www.paulotrentin.com.br Escola CDI de Videira

WEBDESIGN. Professor: Paulo Marcos Trentin - paulo@paulotrentin.com.br http://www.paulotrentin.com.br Escola CDI de Videira WEBDESIGN Professor: Paulo Marcos Trentin - paulo@paulotrentin.com.br http://www.paulotrentin.com.br Escola CDI de Videira Formulários e JavaScript Como visto anteriormente, JavaScript pode ser usada para

Leia mais

Memory Leak em Java?

Memory Leak em Java? 1 Memory Leak em Java? Saiba como memory leaks se manifestam em Java e como evitá-los Sobre o Autor Carlos Eduardo G. Tosin (carlos@tosin.com.br) é formado em Ciência da Computação pela PUC-PR, pós-graduado

Leia mais

Trabalho GA - Editor de Cenário Parallax

Trabalho GA - Editor de Cenário Parallax Objetivo A tarefa consiste em criar um editor gráfico de cenários para jogos 2D com visão lateral. O editor deve permitir que o usuário trabalhe com camadas, para simular o efeito parallax. O usuário pode

Leia mais

PHP INTRODUÇÃO CLASSES E OBJETOS

PHP INTRODUÇÃO CLASSES E OBJETOS INTRODUÇÃO PHP AULA 8 ORIENTAÇÃO A OBJETOS Professor: Leonardo Pereira E-mail: leongamerti@gmail.com Facebook: leongamerti Material de Estudo: http://www.leonti.vv.si A orientação a objetos ou OO é o paradigma

Leia mais

Java Básico. Matrícula de Alunos. Marco Antonio, Arquiteto de Software TJDF ma@marcoreis.eti.br. Novembro/2005

Java Básico. Matrícula de Alunos. Marco Antonio, Arquiteto de Software TJDF ma@marcoreis.eti.br. Novembro/2005 Java Básico Matrícula de Alunos Marco Antonio, Arquiteto de Software TJDF ma@marcoreis.eti.br Novembro/2005 Objetivos OO: trocar mensagens entre os objetos Exception: tratar exceções Análise: implementar

Leia mais

JDBC Java Database Connectivity

JDBC Java Database Connectivity 5 JDBC Java Database Connectivity Prof. Autor: Daniel Morais dos Reis e-tec Brasil Programação Avançada Para Web Página1 Meta Trabalhar com bancos de dados em aplicações web em JSP através das classes

Leia mais