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

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 (pcmnac@gmail.com): é 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

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

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

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

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

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

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

TUTORIAL PRÁTICO SOBRE Git. Versão 1.1

TUTORIAL PRÁTICO SOBRE Git. Versão 1.1 TUTORIAL PRÁTICO SOBRE Git por Djalma Oliveira Versão 1.1 "Git é um sistema de controle de revisão distribuida, rápido e escalável" (tradução rápida do manual). Basicamente é

Leia mais

Orientação a Objetos

Orientação a Objetos 1. Domínio e Aplicação Orientação a Objetos Um domínio é composto pelas entidades, informações e processos relacionados a um determinado contexto. Uma aplicação pode ser desenvolvida para automatizar ou

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

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

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

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

ATRIBUTOS PRIVADOS 6. ENCAPSULAMENTO MÉTODOS PRIVADOS MÉTODOS PRIVADOS

ATRIBUTOS PRIVADOS 6. ENCAPSULAMENTO MÉTODOS PRIVADOS MÉTODOS PRIVADOS ATRIBUTOS PRIVADOS Podemos usar o modificador private, para tornar um atributo privado, obtendo um controle centralizado Definimos métodos para implementar todas as lógicas que utilizam ou modificam o

Leia mais

Desenvolvendo plugins WordPress usando Orientação a Objetos

Desenvolvendo plugins WordPress usando Orientação a Objetos Desenvolvendo plugins WordPress usando Orientação a Objetos por Daniel Antunes danieldeveloper.com @danieldeveloper Introdução Desenvolver plugins WordPress é mais que programar: é obter grandes resultados

Leia mais

Implementando uma Classe e Criando Objetos a partir dela

Implementando uma Classe e Criando Objetos a partir dela Análise e Desenvolvimento de Sistemas ADS Programação Orientada a Obejeto POO 3º Semestre AULA 04 - INTRODUÇÃO À PROGRAMAÇÃO ORIENTADA A OBJETO (POO) Parte: 2 Prof. Cristóvão Cunha Implementando uma Classe

Leia mais

Entendendo como funciona o NAT

Entendendo como funciona o NAT Entendendo como funciona o NAT Vamos inicialmente entender exatamente qual a função do NAT e em que situações ele é indicado. O NAT surgiu como uma alternativa real para o problema de falta de endereços

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

Microsoft Access XP Módulo Um

Microsoft Access XP Módulo Um Microsoft Access XP Módulo Um Neste primeiro módulo de aula do curso completo de Access XP vamos nos dedicar ao estudo de alguns termos relacionados com banco de dados e as principais novidades do novo

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

TUTORIAL DO ACCESS PASSO A PASSO. I. Criar um Novo Banco de Dados. Passos: 1. Abrir o Access 2. Clicar em Criar um novo arquivo

TUTORIAL DO ACCESS PASSO A PASSO. I. Criar um Novo Banco de Dados. Passos: 1. Abrir o Access 2. Clicar em Criar um novo arquivo TUTORIAL DO ACCESS PASSO A PASSO I. Criar um Novo Banco de Dados Passos: 1. Abrir o Access 2. Clicar em Criar um novo arquivo 3. Clicar em Banco de Dados em Branco 4. Escrever um nome na caixa de diálogo

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

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

Trecho retirando do Manual do esocial Versão 1.1

Trecho retirando do Manual do esocial Versão 1.1 Trecho retirando do Manual do esocial Versão 1.1 A rotina de acesso direto ao XML do S-1000, o usuário pode encontrar na opção de cadastro de Empresas do SIP. Sempre que o usuário localizar a figura ao

Leia mais

Portal Sindical. Manual Operacional Empresas/Escritórios

Portal Sindical. Manual Operacional Empresas/Escritórios Portal Sindical Manual Operacional Empresas/Escritórios Acesso ao Portal Inicialmente, para conseguir acesso ao Portal Sindical, nos controles administrativos, é necessário acessar a página principal da

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

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

ROTEIRO DE INSTALAÇÃO

ROTEIRO DE INSTALAÇÃO ROTEIRO DE INSTALAÇÃO O objetivo deste roteiro é descrever os passos para a instalação do sistema UNICO, afim, de auxiliar os técnicos e evitar possíveis dúvidas e erros de instalação. Instalador O instalador

Leia mais

SUMÁRIO 1. AULA 6 ENDEREÇAMENTO IP:... 2

SUMÁRIO 1. AULA 6 ENDEREÇAMENTO IP:... 2 SUMÁRIO 1. AULA 6 ENDEREÇAMENTO IP:... 2 1.1 Introdução... 2 1.2 Estrutura do IP... 3 1.3 Tipos de IP... 3 1.4 Classes de IP... 4 1.5 Máscara de Sub-Rede... 6 1.6 Atribuindo um IP ao computador... 7 2

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

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

Comunidade de Suporte e Feedback

Comunidade de Suporte e Feedback Comunidade de Suporte e Feedback O objetivo deste complemento é criar um canal simples, barato e eficiente de suporte aos clientes, onde eles possam na maioria das vezes aproveitar dúvidas já respondidas,

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

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

Utilização do SOLVER do EXCEL

Utilização do SOLVER do EXCEL Utilização do SOLVER do EXCEL 1 Utilização do SOLVER do EXCEL José Fernando Oliveira DEEC FACULDADE DE ENGENHARIA DA UNIVERSIDADE DO PORTO MAIO 1998 Para ilustrar a utilização do Solver na resolução de

Leia mais

ARRAYS. Um array é um OBJETO que referencia (aponta) mais de um objeto ou armazena mais de um dado primitivo.

ARRAYS. Um array é um OBJETO que referencia (aponta) mais de um objeto ou armazena mais de um dado primitivo. Cursos: Análise, Ciência da Computação e Sistemas de Informação Programação I - Prof. Aníbal Notas de aula 8 ARRAYS Introdução Até agora, utilizamos variáveis individuais. Significa que uma variável objeto

Leia mais

Manipulação de Banco de Dados com Java. Ms. Bruno Crestani Calegaro (bruno.calegaro@ifsc.edu.br) Maio/ 2015

Manipulação de Banco de Dados com Java. Ms. Bruno Crestani Calegaro (bruno.calegaro@ifsc.edu.br) Maio/ 2015 Manipulação de Banco de Dados com Java Ms. Bruno Crestani Calegaro (bruno.calegaro@ifsc.edu.br) Maio/ 2015 Acesso a um SGBD Em sistemas mais simples o uso de arquivos pode ser usado mas para aplicações

Leia mais

Disciplina: Unidade III: Prof.: E-mail: Período:

Disciplina: Unidade III: Prof.: E-mail: Período: Encontro 08 Disciplina: Sistemas de Banco de Dados Unidade III: Modelagem Lógico de Dados Prof.: Mario Filho E-mail: pro@mariofilho.com.br Período: 5º. SIG - ADM Relembrando... Necessidade de Dados Projeto

Leia mais

Gerenciamento de Contatos

Gerenciamento de Contatos Gerenciamento de Contatos O objetivo deste módulo é ajudar a gerenciar todos os contatos da empresa. Além dos dados mais importantes, o módulo permite cadastrar anotações e relacionar as tarefas e eventos

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

Análise de Dados do Financeiro

Análise de Dados do Financeiro Análise de Dados do Financeiro Introdução Para reunir em um só local as informações de contas a pagar e receber cadastradas e/ou geradas no sistema TTransp existe a interface de análise de dados do financeiro.

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

TESTES AUTOMATIZADOS COM JUNITE MOCKITO

TESTES AUTOMATIZADOS COM JUNITE MOCKITO TESTES AUTOMATIZADOS COM JUNITE MOCKITO Jaime William Dias 12, Dener Barranco 1, Douglas Delapria 1 1 Universidade Paranaense (Unipar) 2 Universidade Estadual de Maringá (UEM) Paranavaí PR Brasil dener_barranco@hotmail.com,

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

MANUAL DE UTILIZAÇÃO

MANUAL DE UTILIZAÇÃO MANUAL DE UTILIZAÇÃO Módulo de operação Ativo Bem vindo à Vorage CRM! Nas próximas paginas apresentaremos o funcionamento da plataforma e ensinaremos como iniciar uma operação básica através do nosso sistema,

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

Curso de PHP. FATEC - Jundiaí. A programação orientada a objetos (object-oriented oriented programming

Curso de PHP. FATEC - Jundiaí. A programação orientada a objetos (object-oriented oriented programming Curso de PHP FATEC - Jundiaí A programação orientada a objetos (object-oriented oriented programming OOP) é um conjunto de técnicas t para organizar o código c em torno de entidades ou objetos representados

Leia mais

Prática da Disciplina de Sistemas Distribuídos Serviços Web IFMA DAI Professor Mauro Lopes C. Silva

Prática da Disciplina de Sistemas Distribuídos Serviços Web IFMA DAI Professor Mauro Lopes C. Silva 1. O que são Serviços Web (Web Services)? Prática da Disciplina de Sistemas Distribuídos Serviços Web IFMA DAI Professor Mauro Lopes C. Silva A ideia central dos Web Services parte da antiga necessidade

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

Desenvolvendo Websites com PHP

Desenvolvendo Websites com PHP Desenvolvendo Websites com PHP Aprenda a criar Websites dinâmicos e interativos com PHP e bancos de dados Juliano Niederauer 19 Capítulo 1 O que é o PHP? O PHP é uma das linguagens mais utilizadas na Web.

Leia mais

1. Quem somos nós? A AGI Soluções nasceu em Belo Horizonte (BH), com a simples missão de entregar serviços de TI de forma rápida e com alta qualidade.

1. Quem somos nós? A AGI Soluções nasceu em Belo Horizonte (BH), com a simples missão de entregar serviços de TI de forma rápida e com alta qualidade. 1. Quem somos nós? A AGI Soluções nasceu em Belo Horizonte (BH), com a simples missão de entregar serviços de TI de forma rápida e com alta qualidade. Todos nós da AGI Soluções trabalhamos durante anos

Leia mais

QUALIDATA Soluções em Informática. Módulo CIEE com convênio empresas

QUALIDATA Soluções em Informática. Módulo CIEE com convênio empresas FM-0 1/21 ÍNDICE 1. MÓDULO DESKTOP(SISTEMA INSTALADO NO CIEE)... 2 Cadastro de Ofertas de Empregos:... 2 Cadastro de Eventos:... 3 Cadastro de Instituições do Curriculum:... 5 Cadastro de Cursos do Curriculum:...

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

2 Desenvolvimento de Software Orientado a Aspectos

2 Desenvolvimento de Software Orientado a Aspectos 2 Desenvolvimento de Software Orientado a Aspectos Separação de concerns é um princípio bem estabelecido da engenharia de software que diz que, para se dominar a complexidade do desenvolvimento de software,

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

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

2. A FERRAMENTA SOLVER (EXCEL)

2. A FERRAMENTA SOLVER (EXCEL) Faculdade de Engenharia Eng. Celso Daniel Engenharia de Produção 2. A FERRAMENTA SOLVER (EXCEL) Diversas ferramentas para solução de problemas de otimização, comerciais ou acadêmicos, sejam eles lineares

Leia mais

Cobrança Bancária. Contas / Manutenção.

Cobrança Bancária. Contas / Manutenção. Cobrança Bancária Este tutorial objetiva auxiliar os usuários na configuração do sistema para que a emissão de cobrança bancária dos títulos a receber seja feita. Os processos a seguir consistem na geração

Leia mais

Programação Concorrente em java - Exercícios Práticos Abril 2004

Programação Concorrente em java - Exercícios Práticos Abril 2004 Programação Concorrente em java - Exercícios Práticos Abril 2004 1. Introdução As threads correspondem a linhas de controlo independentes no âmbito de um mesmo processo. No caso da linguagem JAVA, é precisamente

Leia mais

Módulo Publicações Publicações On Line. Módulo Publicações

Módulo Publicações Publicações On Line. Módulo Publicações Módulo Publicações Elaborado por: Julio Cesar Cavalheiro PÁG. 1/8 Índice 1. Objetivo... 3 2. Parametrização... 3 3. Baixando as Publicações... 4 4. Atribuindo processos aos Dados Baixados... 5 5. Status

Leia mais

Para criar uma animação precisamos de uma imagem e que ela contenha alguns frames. O número de frames é uma escolha sua.

Para criar uma animação precisamos de uma imagem e que ela contenha alguns frames. O número de frames é uma escolha sua. 7 Animação Animações é um dos quesitos muito importantes em jogos, você não acha? Para isso o JPlay tem uma classe específica para lidar com animações. Essa classe se chama Animation. Bem sugestivo o nome

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

BR DOT COM SISPON: MANUAL DO USUÁRIO

BR DOT COM SISPON: MANUAL DO USUÁRIO BR DOT COM SISPON: MANUAL DO USUÁRIO BAURU 2015 2 BR DOT COM SISPON: MANUAL DO USUÁRIO Manual do usuário apresentado para auxiliar no uso do sistema SisPon. BAURU 2015 3 SUMÁRIO 1 Instalação... 5 1.1 Sispon...

Leia mais

Aula 01 - Formatações prontas e condicionais. Aula 01 - Formatações prontas e condicionais. Sumário. Formatar como Tabela

Aula 01 - Formatações prontas e condicionais. Aula 01 - Formatações prontas e condicionais. Sumário. Formatar como Tabela Aula 01 - Formatações prontas e Sumário Formatar como Tabela Formatar como Tabela (cont.) Alterando as formatações aplicadas e adicionando novos itens Removendo a formatação de tabela aplicada Formatação

Leia mais

Introdução ao Modelos de Duas Camadas Cliente Servidor

Introdução ao Modelos de Duas Camadas Cliente Servidor Introdução ao Modelos de Duas Camadas Cliente Servidor Desenvolvimento de Sistemas Cliente Servidor Prof. Esp. MBA Heuber G. F. Lima Aula 1 Ciclo de Vida Clássico Aonde estamos? Page 2 Análise O que fizemos

Leia mais

ABORDAGEM DE FRAMEWORKS PARA JSF QUE AUXILIAM O DESENVOLVIMENTO DE SOFTWARE

ABORDAGEM DE FRAMEWORKS PARA JSF QUE AUXILIAM O DESENVOLVIMENTO DE SOFTWARE ABORDAGEM DE FRAMEWORKS PARA JSF QUE AUXILIAM O DESENVOLVIMENTO DE SOFTWARE Amarildo Aparecido Ferreira Junior 1, Ricardo Ribeiro Rufino 1 ¹Universidade Paranaense (Unipar) Paranavaí PR Brasil aapfjr@gmail.com

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

2 echo "PHP e outros.";

2 echo PHP e outros.; PHP (Hypertext Preprocessor) Antes de qualquer coisa, precisamos entender o que é o PHP: O PHP(Hypertext Preprocessor) é uma linguagem interpretada gratuita, usada originalmente apenas para o desenvolvimento

Leia mais

PROGRAMAÇÃO ESTRUTURADA. CC 2º Período

PROGRAMAÇÃO ESTRUTURADA. CC 2º Período PROGRAMAÇÃO ESTRUTURADA CC 2º Período PROGRAMAÇÃO ESTRUTURADA Aula 07: Funções O comando return Protótipo de funções O tipo void Arquivos-cabeçalho Escopo de variáveis Passagem de parâmetros por valor

Leia mais

Java 2 Standard Edition Como criar classes e objetos

Java 2 Standard Edition Como criar classes e objetos Java 2 Standard Edition Como criar classes e objetos Helder da Rocha www.argonavis.com.br 1 Assuntos abordados Este módulo explora detalhes da construção de classes e objetos Construtores Implicações da

Leia mais

OneDrive: saiba como usar a nuvem da Microsoft

OneDrive: saiba como usar a nuvem da Microsoft OneDrive: saiba como usar a nuvem da Microsoft O OneDrive é um serviço de armazenamento na nuvem da Microsoft que oferece a opção de guardar até 7 GB de arquivos grátis na rede. Ou seja, o usuário pode

Leia mais

Java com Banco de Dados Posgree

Java com Banco de Dados Posgree Java com Banco de Dados Posgree Prof. Luiz Claudio Ferreira de Souza www.luizclaudiofs.blogspot.com 1 Driver para ligação Java e Postgre http://jdbc.postgresql.org/download.html www.luizclaudiofs.blogspot.com

Leia mais

Engenharia de Software II

Engenharia de Software II Engenharia de Software II Aula 8 http://www.ic.uff.br/~bianca/engsoft2/ Aula 8-17/05/2006 1 Ementa Processos de desenvolvimento de software Estratégias e técnicas de teste de software (Caps. 13 e 14 do

Leia mais

EXERCÍCIOS SOBRE ORIENTAÇÃO A OBJETOS

EXERCÍCIOS SOBRE ORIENTAÇÃO A OBJETOS Campus Cachoeiro de Itapemirim Curso Técnico em Informática Disciplina: Análise e Projeto de Sistemas Professor: Rafael Vargas Mesquita Este exercício deve ser manuscrito e entregue na próxima aula; Valor

Leia mais

PHP: Formulários e upload de múltiplos arquivos Por Alfred Reinold Baudisch 28 de fevereiro de 2006.

PHP: Formulários e upload de múltiplos arquivos Por Alfred Reinold Baudisch 28 de fevereiro de 2006. PHP: Formulários e upload de múltiplos arquivos Por Alfred Reinold Baudisch 28 de fevereiro de 2006. Veja como montar um formulário para upload de múltiplos arquivos e como processá-lo com o PHP, usando

Leia mais

Feature-Driven Development

Feature-Driven Development FDD Feature-Driven Development Descrição dos Processos Requisitos Concepção e Planejamento Mais forma que conteúdo Desenvolver um Modelo Abrangente Construir a Lista de Features Planejar por

Leia mais

Manual de usuário. do sistema multicálculo CotakWeb

Manual de usuário. do sistema multicálculo CotakWeb Manual de usuário do sistema multicálculo CotakWeb Belo Horizonte 01 de setembro de 2010 1 Sumário 1. CANAIS DE ATENDIMENTO... 3 2. DOWNLOAD DO APLICATIVO... 3 3. LOGIN... 3 4. CONFIGURAÇÃO... 4 4.1. PARÂMETROS

Leia mais

Sistema de Gestão de Freqüência. Manual do Usuário

Sistema de Gestão de Freqüência. Manual do Usuário Serviço Público Federal Universidade Federal da Bahia Centro de Processamento de Dados Divisão de Projetos / SGF Sistema de Gestão de Freqüência Sistema de Gestão de Freqüência Manual do Usuário Descrição

Leia mais

EAmb V.1 ESPOSENDE AMBIENTE. GestProcessos Online. Manual do Utilizador

EAmb V.1 ESPOSENDE AMBIENTE. GestProcessos Online. Manual do Utilizador EAmb V.1 ESPOSENDE AMBIENTE GestProcessos Online Manual do Utilizador GestProcessos Online GABINETE DE SISTEMAS DE INFORMAÇÃO E COMUNICAÇÃO EAmb Esposende Ambiente, EEM Rua da Ribeira 4740-245 - Esposende

Leia mais

Manual de Utilização das Funções Básicas do Sistema ClinicWeb

Manual de Utilização das Funções Básicas do Sistema ClinicWeb Manual de Utilização das Funções Básicas do Sistema ClinicWeb Dezembro/2012 2 Manual de Utilização das Funções Básicas do Sistema ClinicWeb Sumário de Informações do Documento Título do Documento: Resumo:

Leia mais

Memória Flash. PdP. Autor: Tiago Lone Nível: Básico Criação: 11/12/2005 Última versão: 18/12/2006. Pesquisa e Desenvolvimento de Produtos

Memória Flash. PdP. Autor: Tiago Lone Nível: Básico Criação: 11/12/2005 Última versão: 18/12/2006. Pesquisa e Desenvolvimento de Produtos TUTORIAL Memória Flash Autor: Tiago Lone Nível: Básico Criação: 11/12/2005 Última versão: 18/12/2006 PdP Pesquisa e Desenvolvimento de Produtos http://www.maxwellbohr.com.br contato@maxwellbohr.com.br

Leia mais

MANUAL DE INSTRUÇÕES. Versão 1.0. Visão Transportador

MANUAL DE INSTRUÇÕES. Versão 1.0. Visão Transportador MANUAL DE INSTRUÇÕES Versão 1.0 Visão Transportador 2 Sumário Introdução... 3 Requisitos mínimos... 3 Acesso... 3 Primeiro acesso... 5 Navegando pelo sistema... 6 Menu Perfil... 7 Dados do Fornecedor...

Leia mais

PRINCÍPIOS DE INFORMÁTICA PRÁTICA 08 1. OBJETIVO 2. BASE TEÓRICA. 2.1 Criando Mapas no Excel. 2.2 Utilizando o Mapa

PRINCÍPIOS DE INFORMÁTICA PRÁTICA 08 1. OBJETIVO 2. BASE TEÓRICA. 2.1 Criando Mapas no Excel. 2.2 Utilizando o Mapa PRINCÍPIOS DE INFORMÁTICA PRÁTICA 08 1. OBJETIVO Aprender a utilizar mapas, colocar filtros em tabelas e a criar tabelas e gráficos dinâmicos no MS-Excel. Esse roteiro foi escrito inicialmente para o Excel

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

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

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

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

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

Grupo I [6v] Considere o seguinte extracto de um programa de definição de uma calculadora apenas com a função soma de dois valores reais

Grupo I [6v] Considere o seguinte extracto de um programa de definição de uma calculadora apenas com a função soma de dois valores reais Número: Nome: Página 1 de 5 LEIC/LERC 2012/13, Repescagem do 1º Teste de Sistemas Distribuídos, 25 de Junho de 2013 Responda no enunciado, apenas no espaço fornecido. Identifique todas as folhas. Duração:

Leia mais

Relacionamentos entre objetos. Relacionamentos entre objetos. Relacionamentos entre objetos. Relacionamentos entre objetos

Relacionamentos entre objetos. Relacionamentos entre objetos. Relacionamentos entre objetos. Relacionamentos entre objetos Programação Orientada a Objetos Relacionamentos entre objetos Associação, composição e agregação Construtores e sobrecarga Variáveis de classe e de instância Reinaldo Gomes reinaldo@cefet-al.br Objetos

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

Programação Orientada a Objetos com PHP & MySQL Cookies e Sessões. Prof. MSc. Hugo Souza

Programação Orientada a Objetos com PHP & MySQL Cookies e Sessões. Prof. MSc. Hugo Souza Programação Orientada a Objetos com PHP & MySQL Cookies e Sessões Prof. MSc. Hugo Souza Se você precisar manter informações sobre seus usuários enquanto eles navegam pelo seu site, ou até quando eles saem

Leia mais

Engenharia de Software III

Engenharia de Software III Engenharia de Software III Casos de uso http://dl.dropbox.com/u/3025380/es3/aula6.pdf (flavio.ceci@unisul.br) 09/09/2010 O que são casos de uso? Um caso de uso procura documentar as ações necessárias,

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

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