Coisas que você não sabia sobre Generics
|
|
- Camila Ramalho Porto
- 6 Há anos
- Visualizações:
Transcrição
1 _generics Coisas que você não sabia sobre Generics Veja neste artigo como tirar todo proveito da utilização de tipos genéricos na linguagem Java. Eduardo Guerra é desenvolvedor de frameworks, editor-chefe da revista MundoJ e pesquisador do Instituto Nacional de Pesquisas Espaciais (INPE). Foi professor do Instituto Tecnológico de Aeronáutica (ITA), onde concluiu sua graduação, mestrado e doutorado. Suas pesquisas se concentram nas áreas de design, arquitetura e teste de software. Possui diversas certificações da plataforma Java e experiência como arquiteto de software. Participa de projetos de frameworks open-source, como SwingBean, Esfinge e ClassMock. É autor do livro Design Patterns com Java: projeto orientado a objetos guiado por padrões lançado pela editora Casa do Código. Ele acredita que um bom software se faz mais com criatividade do que com código e vive em busca de melhores formas para seu desenvolvimento. suporte a tipos genéricos foi adicionado na linguagem Java a partir do JDK 1.5. A princípio ela O foi anunciada como uma funcionalidade opcional, que poderia ou não ser utilizada pelos desenvolvedores. É verdade que todo código legado continuou compilando sem o uso de tipos genéricos, porém na minha opinião qualquer funcionalidade adicionada como parte da linguagem está longe de ser opcional para os desenvolvedores. Acredito que na época a ideia era não causar alarde, porém, hoje, o conhecimento de tipos genéricos é essencial a qualquer programador Java. O uso de tipos genéricos é muito conhecido pela sua utilização na API de coleções, que disponibiliza um conjunto de classes cujo uso é essencial a qualquer desenvolvedor. Quando se cria uma coleção, seja ela uma lista (List) ou um conjunto (Set), normalmente se cria a coleção para armazenar alguma coisa, ou seja, algum tipo específico de classe. É aí que entram os tipos genéricos, para dizer se aquela lista é uma lista de pessoas (List<Pessoa>) ou se o conjunto é um conjunto de produtos (Set<Produto>). Indo na contramão de algumas linguagens dinâmicas, onde a ideia é ter o menor número de definições possível para tornar o código mais simples de ser criado, os tipos genéricos adicionam certa verbosidade na linguagem em troca de uma maior segurança de código. Por exemplo, antes dos tipos genéricos, qualquer objeto poderia ser adicionado em uma lista, e isso criava a possibilidade que se tentasse realizar o cast desse objeto para a classe errada, causando erros em tempo de execução. Com o uso de tipos genéricos, pelo fato do tipo da coleção ser explicitamente definido, esse tipo de erro na maioria dos casos é detectado em tempo de compilação. A ideia deste artigo é mostrar algumas coisas sobre os tipos genéricos que a maioria das pessoas não sabe. Você sabia, por exemplo, que em alguns casos você consegue recuperar o tipo genérico utilizando reflexão? Você sabia que usando tipos genéricos você pode definir o tipo da exceção que será lançada por um método através da classe que o invoca? Consegui despertar sua curiosidade? Então vamos começar o artigo com aquela revisada de tipos genéricos para aqueles que estão um pouco enferrujados e em seguida vamos direto para a parte mais divertida. Tipos Genéricos em Java A melhor forma de entender um tipo genérico é como um parâmetro para um tipo. Muitas vezes você quer definir uma classe, mas quer que o retorno de certos métodos ou que certos parâmetros possam ser 5 \
2 O suporte a tipos genéricos é uma funcionalidade de linguagem que muitas vezes é subutilizada pelos desenvolvedores. Eu percebo que muitos acabam se limitando a utilizar classes com tipos genéricos, mas não consideram inclui-los em suas próprias classes. Este artigo mergulha nas questões mais avançadas e curiosas dos tipos genéricos, mostrando como eles podem ser utilizados de uma forma que você nunca tinha imaginado. definidos por quem está instanciando um objeto daquela classe. A lista é um ótimo exemplo, pois quem a instancia para armazenar um determinado tipo vai querer que o método de adição só aceite aquele tipo e que o método de recuperação retorne aquele tipo. A Listagem 1 mostra um exemplo de como uma classe define um tipo genérico e como essa classe é instanciada. Repare que na definição da classe Grafo, o tipo genérico <E> é definido em sua declaração e utilizado na definição dos métodos, no lugar de parâmetros e/ou retornos. Dessa forma, quando um objeto instancia a classe e define um tipo genérico, é como se para aquela instância todos os lugares onde foi definido E fossem substituídos pelo tipo configurado. Listagem 1. Exemplo de uma classe que define um tipo genérico. //Definição de classe com tipo genérico public class Grafo<E> { public void adicionarno(e no){... public void adicionarligacao(e noa, E nob) {... public List<E> recuperavizinhos(e no) {... //Instanciando a classe definindo tipo genérico Grafo<Cidade> grafo = new Grafo<Cidade>(); Outro caso de utilização de tipos genéricos é quando se deseja definir uma interface e quer que a classe que vai implementá-la possa definir o tipo de alguns retornos e parâmetros. Dessa forma, podese definir uma interface de propósito mais geral e inserir parâmetros de acordo com a classe que está a implementando. De forma alternativa, a classe pode propagar o tipo genérico para sua definição, deixando assim para que ele seja definido no momento de instanciar os objetos, como mostrado na Listagem 1. A Listagem 2 apresenta o exemplo da interface DAO<E> que define um tipo genérico e da classe ProdutoDAO que implementa essa interface fixando o tipo genérico que será utilizado. Dessa forma, na própria classe, os retornos e parâmetros definidos utilizando o tipo genérico na interface, serão fixados de acordo com o tipo definido. Dessa forma, quem instanciar a classe ProdutoDAO nem saberá que ela implementa uma interface com um tipo genérico. Listagem 2. Exemplo de uma interface que define um tipo genérico. //Definição de interface com tipo genérico public interface DAO<E> { public void salvar(e obj); public E recuperar(int id); public List<E> listartodos(); //Definindo uma classe que fixa o tipo genérico public class ProdutoDAO implements DAO<Produto> { public void salvar(produto obj) {... public Produto recuperar(int id) {... public List<Produto> listartodos(){... Além de poder ser definido em classes em interfaces, o tipo genérico também pode ser definido no contexto de um método. O principal objetivo desse uso é amarrar os tipos dos parâmetros passados ou permitir que o retorno seja inferido de acordo com o parâmetro passado. A Listagem 3 apresenta o exemplo de um método que define um tipo genérico para amarrar os parâmetros. Observe que ele recebe como parâmetro uma List<E> e um E, então a lista precisa ser do mesmo tipo do elemento, senão será apontado um erro em tempo de compilação. Por exemplo, um código que passar um List<Integer> e uma String como parâmetro não será válido. / 6
3 Listagem 3. Exemplo de método que usa tipos genéricos para amarrar os parâmetros. public static <E> void colocarnafrente(list<e> lista, E elemento) {... A Listagem 4 apresenta outro exemplo, onde o tipo genérico é utilizado para que o tipo do retorno seja inferido de acordo com o parâmetro passado. Por exemplo, se for passada uma lista de String, então o retorno será do tipo String. Isso evita que casts desnecessários sejam feitos e evita erros como a atribuição do retorno para uma variável de tipo incompatível com o objeto retornado. Listagem 4. Exemplo de método que usa tipos genéricos para inferência de retorno. //Definição do método public static <E> E elementodomeio(list<e> lista) {... //Uso do método List<String> lista = //recupera lista String meio = elementodomeio(lista) De forma bem rápida e resumida essa pequena introdução mostrou um pouco do funcionamento dos tipos genéricos. As próximas seções irão focar em coisas interessantes que podem ser feitas com tipos genéricos. Restringindo Tipos Genéricos Uma coisa que poucos sabem sobre os tipos genéricos é que é possível restringir quais tipos podem ser passados como parâmetro. Para ilustrar essa questão considere um método que grave em um arquivo uma lista de objetos. Como os objetos precisarão ser serializados, não faz sentido receber uma lista em que os objetos não implementem Serializable. A Listagem 5 mostra como esse método poderia ser definido. Listagem 5. Exemplo de método que restringe o tipo genérico do parâmetro. public void gravaremarquivo(list<? Extends Serializable> lista) {... Quando a restrição é utilizada em parâmetros de métodos, o?, chamado de wildcard, pode ser utilizado para definir um tipo que obedece certa regra de tipo. Se o wildcard for acompanhado de extends significa que ele pode ser qualquer classe que estenda a classe ou implemente a interface. Se ele for acompanhado de super significa que pode ser qualquer supertipo do configurado. Em ambos os casos a própria classe ou interface é uma escolha válida. Outro fato importante no exemplo da Listagem 5 é que, nesse caso, como o parâmetro não tem um tipo genérico definido, nenhum método que recebe o tipo genérico como parâmetro pode ser invocado, a não ser passando null. De forma mais concreta, o método add(), que recebe o tipo genérico da lista, não poderia ser invocado nesse caso. Sendo assim, seria como se a lista fosse read-only. Outro caso em que isso pode ser muito útil é para restringir o tipo de classe que pode ser configurada em uma anotação. Por mais que possa parecer estranho, a classe Class possui um tipo genérico que é o tipo da própria classe que está representando. Sendo assim, a classe String retorna no método getclass() uma instância de Class<String>. Sendo assim, para tanto um método ou uma anotação que recebe uma classe como parâmetro, é possível definir apenas um subconjunto de classes que podem ser passadas como parâmetro. Imagine, por exemplo, uma anotação que configura qual a classe DAO que precisa ser utilizada para uma determinada entidade. Devido a própria descrição, só faz sentido a configuração de classes que implementem uma interface chamada DAO. A Listagem 6 mostra como seria essa anotação. Listagem 6. Anotação que restringe a Class configurada em RelatedDAO { Class<? extends DAO> value(); Para finalizar essa parte de restrição de tipos, uma classe também pode restringir os tipos genéricos que podem ser utilizados para parametrizá-la. Imagine que ao invés de criar um método para guardar uma lista em um arquivo, eu decida criar uma lista serializável. Observe na Listagem 7 que é possível, mesmo implementando outra interface, restringir na declaração do tipo genérico qual classe ou interface ele precisa ter como supertipo. Nesse caso, ao invés do wildcard?, utiliza-se o próprio parâmetro genérico. Listagem 7. Exemplo de método que usa tipos genéricos para inferência de retorno. public class SerializableList<E extends Serializable> implements List<E> {... Uma das vantagens desse tipo de restrição é que se 7 \
4 você define que um tipo genérico deve implementar uma interface, então é possível invocar os métodos daquela interface mesmo que o tipo não esteja definido. Esse tipo de definição também é útil para evitar que erros de tipagem ocorram na definição dos tipos genéricos. Ok! Eu sei que essa seção não impressionou tanto quem conhecia um pouco mais sobre tipos genéricos! Mas prepare-se que na próxima seção as coisas ficam mais interessantes! Definindo o Tipo da Exceção pelo Cliente Qualquer desenvolvedor Java aprende ao lidar com exceções que um método pode declarar as exceções que podem ser lançadas durante a sua execução. Mas poderia um cliente definir o tipo da exceção que será lançada por um método que ele invoca? Surpreendentemente utilizando tipos genéricos sim! Muitas vezes acabamos capturando a exceção lançada por um componente para a encapsularmos dentro de uma exceção definida pela aplicação. Nesse cenário seria muito interessante que fosse possível definir para esse componente qual exceção ele deve lançar, pois dessa forma não seria preciso mapear as suas exceções para as da aplicação. O exemplo dessa seção considera uma classe que autentica usuários a partir de definições em um arquivo de propriedades com login e senha. Um dos requisitos é que esse componente lance uma exceção toda vez que um usuário não for autenticado. Para permitir seu reúso, deseja-se então que o cliente possa definir a classe da exceção que será lançada. O segredo dessa solução está na definição de uma interface com tipo genérico para representar uma fábrica de exceções, como a classe FabricaExcecoes na Listagem 8. O tipo genérico dessa interface representa a exceção que é criada por ela. A intenção é que as classes ao implementarem essa interface definam o tipo da exceção que irão criar. Listagem 8. Interface com tipo genérica para criação de exceções. public interface FabricaExcecoes<E extends Exception> { public E criarexcecao(string msg); A Listagem 9 apresenta a classe Autenticador, a qual é responsável pela autenticação dos usuários. No construtor é feito o carregamento do arquivo de propriedades users.prop onde os usuários e suas senhas estão armazenadas (a ideia aqui é apenas ilustrar a técnica, não armazene senhas assim em casa ). O método autenticar() define um tipo genérico E, que é utilizado para um parâmetro do tipo FabricaExcecoes<E> e para o tipo de exceção lançada Cuidado! Os tipos genéricos são invariantes! Uma coisa que confunde muitas pessoas que começam a trabalhar com tipos genéricos é como funciona a herança e o polimorfismo. Os arrays são tipos covariantes, isso significa que um array de um tipo A é considerado por polimorfismo um array do tipo B, se B for um supertipo de A. Por exemplo, se eu tenho uma variável do tipo Integer[] então ela pode ser atribuída para uma do tipo Number[] via polimorfismo. Com os tipos genéricos as regras são diferentes, pois eles são invariantes. Nesse caso, uma classe nunca pode ser convertida por polimorfismo para uma classe com um tipo diferente. Isso significa que uma variável do tipo List<Integer> não pode ser atribuída para uma do tipo List<Number>. Se você quiser receber variáveis com mais de um tipo genérico, é preciso utilizar o wildcard com as palavras super e extends de acordo com a restrição desejada. No caso de métodos que utilizarem um wildcard com extends em um parâmetro, existe a restrição de não ser possível invocar nessa instância métodos que recebem o tipo genérico. De forma equivalente, quando o wildcard com super for utilizado, não pode ser feita a inferência do tipo do retorno, que deverá ser sempre recebido como Object. por ele. Dessa forma, o tipo da exceção lançada irá depender do tipo genérico da fábrica, a qual é definida pelo cliente. Observe que a exceção lançada é criada pela fábrica. Listagem 9. Classe que faz a autenticação de um usuário e declara uma exceção genérica. public class Autenticador { private Properties p; public Autenticador(){ try { p = new Properties(); p.load(new FileInputStream( users.prop )); catch (Exception e) { throw new RuntimeException( Usuarios não encontrados ); public <E extends Exception> void autenticar(string login, String senha, FabricaExcecoes<E> f) throws E { / 8
5 if(!(p.contains(login) && p.get(login).equals(senha))){ throw f.criarexcecao( Login e senha incorretos! ); System.out.println( Autenticação com sucesso ); catch (SecurityException e) { System.out.println(e.getMessage()); Para entender melhor como isso funciona, será mostrado um exemplo concreto. A Listagem 10 apresenta a exceção SecurityException, que no exemplo faz o papel de uma exceção que foi definida para a aplicação. Já na Listagem 11, a classe FabricaSecurityException implementa a interface FabricaExcecoes com o tipo genérico igual a exceção definida, no caso SecurityException. Listagem 10. Exceção definida para ser lançada pelo método. public class SecurityException extends Exception { public SecurityException(String message) { super(message); Listagem 11. Implementação da fábrica de exceções para a exceção definida. public class FabricaSecurityException implements FabricaExcecoes<SecurityException> public SecurityException criarexcecao(string msg) { return new SecurityException(msg); A Listagem 12 apresenta um código cliente que utiliza a classe Autenticador. Observe que uma instância da classe FabricaSecurityException é criada para que o tipo da exceção possa ser definido. Quando essa classe é passada como parâmetro, o tipo da exceção é inferido pelo tipo genérico da fábrica. Sendo assim, observe que o bloco try/catch captura a exceção que é definida pela aplicação. Listagem 12. Código que invoca a classe Autenticador definindo a exceção que ela irá lançar. public class Principal { public static void main(string[] args) { Autenticador a = new Autenticador(); FabricaSecurityException f = new FabricaSecurityException(); try { a.autenticar( admin, admin, f); Outra abordagem nessa solução seria a utilização de um tipo genérico de classe ao invés de um tipo genérico de método. Dessa forma, a fábrica de exceções precisa ser configurada apenas uma vez no construtor e não precisa ser passada todas as vezes como parâmetro. Da outra forma, a mesma instância poderia lançar diferentes exceções de acordo com o parâmetro do método, e nessa solução a exceção é definida no momento da criação. A Listagem 13 mostra como ficaria essa implementação. Listagem 13. Utilizando tipo genérico de classe no Autenticador. public class Autenticador<E extends Exception> { private Properties p; private FabricaExcecoes<E> f; public Autenticador(FabricaExcecoes<E> f){ this.f = f; try { p = new Properties(); p.load(new FileInputStream( users.prop )); catch (Exception e) { throw new RuntimeException( Usuarios não encontrados ); public void autenticar(string login, String senha) throws E { if(!(p.contains(login) && p.get(login).equals(senha))){ throw f.criarexcecao( Login e senha incorretos! ); Recuperando o Tipo Genérico com Reflexão Uma coisa que sempre é comentada sobre os tipos genéricos, é que é são validações realizadas em tempo de compilação e que essa informação não é mantida em tempo de execução. Sendo assim, imagino que talvez você esteja se perguntando: como um tipo genérico pode ser recuperado por reflexão se ele não é mantido pela máquina virtual? Calma! Dado um objeto, não é possível saber o tipo genérico desse objeto em tempo de execução. Porém, em declarações de métodos, atributos ou de classe que utilizam tipos genéricos, é sim possível saber qual o tipo genérico declarado. 9 \
6 Considere, por exemplo, a classe Pessoa apresentada na Listagem 14. Imagine que fosse necessário criar um algoritmo que recuperasse todas as entidades relacionadas com uma determinada classe. Nesse contexto, uma entidade seria toda classe com a Nesse caso, seria necessário varrer os atributos dessa classe e procurar pelos tipos que possuem essa anotação. Porém, por exemplo, o atributo telefones possui uma entidade declarada como um tipo genérico. Como fazer para buscar essa informação? Listagem 14. Classe que possui tipos relacionados declarados em tipos public class Pessoa { private String nome; private int idade; private Endereco endereco; private List<Telefone> telefones; private Set<String> cargos; //getters e setters omitidos Na API de reflexão, a classe Field possui um método chamado getgenerictype(), que não retorna os parâmetros de tipo, mas uma instância de ParameterizedType (apesar do retorno ser do tipo Type e ser necessário fazer o cast). Essa classe possui um método chamado getactualtypearguments() que retorna um array com os parâmetros genéricos configurados. A Listagem 15 mostra o método getentidadesrelacionadas() que recebe uma classe e retorna uma lista com as entidades relacionadas a ela. Primeiramente esse método verifica se a classe do atributo possui a e, em caso positivo, a adiciona a lista que será retornada. Em caso negativo, é verificado se o tipo implementa a interface Collection e, em caso positivo, é recuperado o tipo genérico e no qual também é verificado se possui a Listagem 15. Método que retorna as entidades relacionadas, procurando nos tipos genéricos. public class Relacoes { public static List<Class> getentidadesrelacionadas(class c){ List<Class> list = new ArrayList<>(); for(field f : c.getdeclaredfields()){ Class tipo = f.gettype(); if(tipo.isannotationpresent(entity.class)){ list.add(tipo); else if(collection.class.isassignablefrom(tipo)){ ParameterizedType tipogenerico = (ParameterizedType) f.getgenerictype(); Class parametrogenerico = (Class) tipogenerico.getactualtypearguments()[0]; if(parametrogenerico.isannotationpresent( Entity.class)){ list.add(parametrogenerico); return list; A Listagem 16 apresenta um exemplo de como esse método seria utilizado para retornar as entidades relacionadas na classe Pessoa e imprimir no console. No caso, será impresso o nome das classes Telefone e Endereco que possuem a anotação. Listagem 16. Classe que possui tipos relacionados declarados em tipos genéricos. public class PrincipalReflection { public static void main(string[] args) { List<Class> lista = Relacoes.getEntidadesRelacionadas(Pessoa.class); for(class c : lista){ System.out.println(c.getName()); Outro cenário onde a recuperação do parâmetro genérico por reflexão pode ser muito útil é em relação ao tipo utilizado na superclasse. Imagine o exemplo de uma abstração para a representação de um DAO, como anteriormente apresentado na Listagem 2 deste artigo. Muitas vezes, é preciso saber qual é a classe que será persistida para implementação dos métodos, principalmente se a implementação for JPA. Dessa forma, a superclasse pode disponibilizar um método para a recuperação do parâmetro genérico utilizado na subclasse. A Listagem 17 apresenta como esse método pode ser implementado. A partir da classe do objeto, é feita uma busca nas superclasses até que seja encontrada a superclasse DAO. Então, o método getgenericsuperclass() é utilizado para recuperar uma instância de ParameterizedType e a partir dele serem recuperados os parâmetros genéricos. Listagem 17. Exemplo de uma superclasse com tipo genérico que fornece método para recuperação do parâmetro genérico configurado. public abstract class DAO<E> { / 10
7 public abstract void salvar(e obj); public abstract E recuperar(int id); public abstract List<E> listartodos(); public Class getgenericparameter(){ Class c = this.getclass(); while(!c.getsuperclass().equals(dao.class)){ c = c.getsuperclass(); ParameterizedType tipogenerico = (ParameterizedType) c.getgenericsuperclass(); return (Class) tipogenerico.getactualtypearguments()[0]; Para completar o exemplo, a Listagem 18 mostra a classe DAOPessoa que estende a classe DAO com o tipo genérico Pessoa. O método main() cria uma instância classe e invoca o método getgenericparameter() criado. Com a execução desse código, o nome da classe Pessoa será impresso no console. Listagem 18. Classe que estende a superclasse genérica e retorna a classe do parâmetro genérico. public class PessoaDAO extends DAO<Pessoa> { public static void main(string[] args) { PessoaDAO dao = new PessoaDAO(); System.out.println(dao.getGenericParameter(). getname()); //implementações dos métodos abstratos omitidas Considerações finais Este artigo teve como objetivo fazer uma revisão dos tipos genéricos e apresentar algumas utilizações desse recurso que são pouco exploradas pelos desenvolvedores. Dentre as técnicas apresentadas está a restrição no parâmetro genérico de uma classe ou método, utilização de exceções genéricas e a recuperação do tipo genérico em declarações, como de atributos, de métodos e de classe. Além de ser interessante e curioso a utilização de um recurso de linguagem pouco conhecido, ou mesmo de uma forma que foge do convencional, este artigo também discutiu os cenários em que cada uma dessas técnicas poderiam ser utilizadas. Através dos exemplos, foram mostrados cenários cotidianos de aplicações que ilustraram o contexto para o seu uso. Design Patterns com Java: projeto orientado a objetos guiado por padrões Se você se interessou por este artigo e gosta de estudar sobre técnicas de modelagem de software, acabou de ser lançado pela editora Casa do Código o livro Design Patterns com Java: Projeto orientado a objetos guiado por padrões. Esse livro apresenta, de uma forma didática e moderna, como utilizar os padrões de projeto para um bom design orientado a objetos em Java. Além dos padrões em si, o livro traz exemplos de APIs e frameworks Java que os utilizam. Adicionalmente, também são abordadas técnicas de design modernas, como o uso de interface fluente, componentes plugáveis e criação de frameworks. Dentro do contexto deste artigo, é abordado no último capítulo como os tipos genéricos podem ser utilizados na implementação dos padrões. 11 \
Recapitulando. Construtores: (Overload assinatura) public Circle() {...} public Circle(double x, double y, double r) {... }
Recapitulando Orientação a objetos: programas organizados em torno da definição de classes, instanciação de objetos e troca de mensagens. Declaração de variáveis de referencia: Circle c; Criação/instanciação
Leia maisProgramação Orientada a Objectos - P. Prata, P. Fazendeiro
Quando um programa viola as restrições semânticas da linguagem, a JVM assinala um erro ao programa, sob a forma de exceção. Uma exceção é um erro recuperável O controlo da execução do programa é transferido
Leia maisQuando um programa viola as restrições semânticas da linguagem, a JVM assinala um erro ao programa, sob a forma de exceção.
6 Exceções Quando um programa viola as restrições semânticas da linguagem, a JVM assinala um erro ao programa, sob a forma de exceção. Uma exceção é um erro recuperável - O controlo da execução do programa
Leia maisTRATAMENTO DE EXCEÇÕES
Uma exceção em Java é um sinal que alguma condição excepcional aconteceu; Algo de errado aconteceu! Exemplos: solicitação de abertura de um arquivo não encontrado; índice de um array fora de faixa; uma
Leia maisProgramação Orientada a Objetos. Vagner Luz do Carmo - Vluzrmos
Programação Orientada a Objetos Vagner Luz do Carmo - Vluzrmos Questão 1 Dada a seguinte classe na linguagem JAVA: public class Carro { public String retornacor(){ ; return Azul ; private String retornachassi(){
Leia maisProgramação Orientada a Objectos - P. Prata, P. Fazendeiro. Hierarquia de classes e mecanismo de ligação
4 Conceito de Herança Hierarquia de classes e mecanismo de ligação Herança Uma classe pode herdar operações de uma superclasse e as suas operações podem ser herdadas por subclasses. O mecanismo de herança
Leia maisProgramação Orientada a Objectos - P. Prata, P. Fazendeiro
6 Exceções Quando um programa viola as restrições semânticas da linguagem, a JVM assinala um erro ao programa, sob a forma de exceção. Uma exceção é um erro recuperável O controlo da execução do programa
Leia maisTratamento de Exceções
Tratamento de Exceções Universidade Católica de Pernambuco Ciência da Computação Prof. Márcio Bueno poonoite@marciobueno.com Fonte: Material da Profª Karina Oliveira Introdução Exceções São eventos que
Leia mais4 Conceito de Herança
4 Conceito de Herança Hierarquia de classes e mecanismo de ligação Herança Uma classe pode herdar operações de uma superclasse e as suas operações podem ser herdadas por subclasses. O mecanismo de herança
Leia maisIteradores. Iteradores. Isabel Harb Manssour. Roteiro. Coleções
Implementação de Genéricos, Iteradores Isabel Harb Manssour Porto Alegre, maio de 2006 Roteiro Implementação de Genéricos Coleções Conceito de Genérico Implementação Iteradores Conceito Utilização ForEach
Leia mais22/9/16. Agenda. Erros. Erros. Exceções. Mecanismo de exceções
Agenda Desenvolvimento OO com Java Exceções Vítor E. Silva Souza (vitorsouza@inf.ufes.br) http://www.inf.ufes.br/ ~ vitorsouza Apresentar o mecanismo de tratamento de exceções de Java; Explicar os diferentes
Leia maisNotas de Aula 09: Tratamento de exceções
Notas de Aula 09: Tratamento de exceções Objetivos da aula: Compreender o conceito de exceção Aprender a tratar exceções nos programas Entender a hierarquia das exceções Criar e lançar uma exceção proprietária
Leia maisHerança. Prof. Fernando V. Paulovich 23 de agosto de 2010
Herança SCC0604 - Programação Orientada a Objetos Prof. Fernando V. Paulovich http://www.icmc.usp.br/~paulovic paulovic@icmc.usp.br Instituto de Ciências Matemáticas e de Computação(ICMC) Universidade
Leia maisClasses e Objetos. Sintaxe de classe em Java
Classes e Objetos Classes e Objetos A Programação Orientada a Objetos (POO) é uma técnica de programação que se baseia na construção de classes e utilização de objetos. Os objetos são formados por dados
Leia maisProgramação por Objectos. Java
Programação por Objectos Java Parte 7: Interfaces LEEC@IST Java 1/31 Interfaces revisão (1) Uma interface é um conjunto de protótipos de métodos (sem implementações) que especifica um serviço bem definido:
Leia maisProgramação Orientada a Objectos - P. Prata, P. Fazendeiro
9 Classes Abstractas e Interfaces Classe Abstracta Classe em que pelo menos um dos métodos de instância não é implementado. Exemplo: public abstract class Forma{ public abstract double area(); public abstract
Leia maisProgramação Java. Marco Fagundes. - Herança, Classes Abstratas e Interfaces Marco Fagundes -
Programação Java - Herança, Classes Abstratas e Interfaces - Marco Fagundes mfagundes@tre-pa.gov.br 1 Tópicos Herança Ligação Dinâmica Polimorfismo 2 Herança Herança é um conceito que mapeia as classes
Leia maisINF1636 PROGRAMAÇÃO ORIENTADA A OBJETOS
INF1636 PROGRAMAÇÃO ORIENTADA A OBJETOS Departamento de Informática PUC-Rio Ivan Mathias Filho ivan@inf.puc-rio.br Programa Capítulo 9 Tratamento de Exceções Assertivas 1 Programa Capítulo 9 Tratamento
Leia maisINF1337 LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS
INF1337 LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS Departamento de Informática PUC-Rio Andrew Diniz da Costa andrew@les.inf.puc-rio.br Programa Capítulo 9 Tratamento de Exceções Assertivas Programa Capítulo
Leia maisClasse Abstrata e Interface
Orientação a objetos com Java Classe Abstrata e Interface Byron Leite byron.leite@gmail.com 1 Herança Agenda Geral Parte 04 Encapsulamento Pacotes Modificadores de Acesso private, default, protected, public
Leia maisLinguagem de Programação IV Introdução
Linguagem de Programação IV Introdução Prof. Alessandro Borges 2 Tópicos Orientação a objetos Classe Objeto Abstração Encapsulamento Herança Polimorfismo Plataforma Java 3 4 POO é um paradigma de programação
Leia maisJava para Desktop. Programação Orientada à Objetos 2 JSE
Java para Desktop Programação Orientada à Objetos 2 JSE Encapsulamento significa "ocultar informações, ele define que cada objeto contém todos os detalhes de implementação necessários sobre como ele funciona
Leia mais9 Classes Abstractas e Interfaces
9 Classes Abstractas e Interfaces Classe Abstracta Classe em que pelo menos um dos métodos de instância não é implementado. Exemplo: public abstract class Forma{ public abstract double area(); public abstract
Leia maisHerança. Universidade Católica de Pernambuco Ciência da Computação. Prof. Márcio Bueno.
Universidade Católica de Pernambuco Ciência da Computação Prof. Márcio Bueno poonoite@marciobueno.com Fonte: Material da Profª Karina Oliveira Possibilita o reuso de classes (código-fonte) Usar quando:
Leia maisEsfinge Comparison. Um framework para Comparação de Objetos. esfinge comparison_
esfinge comparison_ Esfinge Comparison Um framework para Comparação de Objetos Customize o algoritmo de comparação utilizando anotações e estendendo as funcionalidades desse framework. comparação entre
Leia mais9 Exceções. Desenvolvimento OO com Java. Vítor E. Silva Souza ~ vitorsouza
Desenvolvimento OO com Java 9 Exceções Vítor E. Silva Souza (vitorsouza@inf.ufes.br) http://www.inf.ufes.br/ ~ vitorsouza Departamento de Informática Centro Tecnológico Universidade Federal do Espírito
Leia maisInterfaces POO. Prof. Marcio Delamaro
Interfaces POO Prof. Marcio Delamaro Programação Orientada a Objetos Prof Marcio Delamaro ICMC/USP 1/41 O que é interface É um template de classe Outras classes podem seguir esse template Chamamos isso
Leia maisTratamento de Erros. Sérgio Luiz Ruivace Cerqueira
Tratamento de Erros Sérgio Luiz Ruivace Cerqueira sergioruivace@gmail.com Agenda Introdução Try, catch, finally Unchecked Exceptions Como levantar exceções Boas práticas O problema Calculadora numero1:
Leia maisAtribuições: Valores, Ponteiros e Referências
Atribuições: Valores, Ponteiros e Referências Estruturas de Dados Prof. Vilson Heck Junior Sobre Variáveis Aprendemos, em introdução à programação, que possuem 3 partes mais importantes: Nome; Tipo de
Leia maisJAVA. Tópicos Especiais de Programação Orientada a Objetos. sexta-feira, 28 de setembro de 12
JAVA Tópicos Especiais de Programação Orientada a Objetos 1 TRY CATCH 2 O que fazer quando algo inesperado acontece? 3 O que fazer quando algo inesperado acontece? Com JAVA podemos nos prevenir!!! 3 O
Leia maisLEIC-T LERC MEIC-T 2011/2012 1º Semestre Programação com Objetos 2012/01/07 11h00m 3/10
2/10 1.1. (1.5 val.) Os mecanismos de herança entre classes e de composição de objetos são, por vezes, apresentados como alternativos, face à disponibilização de funcionalidade a uma classe. Compare-os,
Leia maisExceções AULA 13. Ricardo Massa F. Lima Sérgio C. B. Soares
Introdução a Programação IF669 http://www.cin.ufpe.br/~if669 Exceções AULA 13 Ricardo Massa F. Lima rmfl@cin.ufpe.br Sérgio C. B. Soares scbs@cin.ufpe.br Exceções Objetivo Depois desta aula você será capaz
Leia maisLista 05 Herança. public class PessoaFisica extends Pessoa { private String RG; public PessoaFisica(){ super(); } public String getrg(){ return RG; }
Lista 05 Herança 1. Analisando a classe Java abaixo podemos observar que a mesma possui apenas um atributo, um construtor e dois métodos. Perceba que dentro do método main estão sendo invocados métodos
Leia maisProgramação Orientada a Objetos
Programação Orientada a Objetos Prof. Kléber de Oliveira Andrade pdjkleber@gmail.com Tratamento de Exceções Quem pensa pouco, erra muito Leonardo da Vinci Exceções!!! 12/09/2011 Prof. Kléber de Oliveira
Leia maisComputação II Orientação a Objetos
Computação II Orientação a Objetos Fabio Mascarenhas - 2016.2 http://www.dcc.ufrj.br/~fabiom/java Herança de classes concretas e Object A superclasse que passamos para a cláusula extends não precisa ser
Leia maisLinguagem de Programação II Implementação
Linguagem de Programação II Implementação Prof. Alessandro Borges 2 Tópicos Implementação em Java Variáveis Palavras reservadas Pacotes Identificador this Acessando membros de outros objetos API Java Nossa
Leia maisProgramação Orientada a Objetos JAVA - NETBEANS
Programação Orientada a Objetos JAVA - NETBEANS Agenda Interface Enum Collections Inteface Vamos começar relembrando de herança, polimorfismo e a palavra chave abstract: Inteface Vamos começar olhando
Leia maisUNIVERSIDADE FEDERAL DE MATO GROSSO DO SUL SISTEMAS DE INFORMAÇÃO - CÂMPUS DE COXIM FUNDAMENTOS EM ORIENTAÇÃO A OBJETOS
Data final de entrega 16/09/2014, até às 23h59min Enviar o arquivo de respostas em formato PDF e o arquivozip com códigos fontes para o e-mail motafernandomaia@gmailcom, insira no assunto do e-mail [Lista
Leia maisParadigmas da Programação PPROG GENÉRICOS. (Livro Big Java, Late Objects Capítulo 18) Nelson Freire (ISEP DEI-PPROG 2014/15) 1/23
PPROG Paradigmas da Programação GENÉRICOS (Livro Big Java, Late Objects Capítulo 18) Nelson Freire (ISEP DEI-PPROG 2014/15) 1/23 Genéricos Sumário Noção de Genérico Interesse dos Genéricos Tipos Parametrizados
Leia maisp Imagine que um Sistema de Controle do Banco pode ser acessado, além dos Gerentes, pelos Diretores do Banco
1 Expandindo o Sistema p Imagine que um Sistema de Controle do Banco pode ser acessado, além dos Gerentes, pelos Diretores do Banco class Diretor extends Funcionario { public boolean autentica(int senha)
Leia maisPolimorfismo e Ligação Dinâmica. Alcides Pamplona Polimorfismo e Ligação Dinâmica
Alcides Pamplona Linguagem de Programação CESBD 2010 Alcides Pamplona alcides.pamplona@gmail.com Tópicos Ligação Dinamica Polimorfismo Verificação Dinâmica de Tipos 2 Introdução A vinculação ou ligação
Leia maisLinguagem de Programação Orientada a Objeto Polimorfismo, Classes Abstractas e Interfaces
Linguagem de Programação Orientada a Objeto Polimorfismo, Classes Abstractas e Interfaces Professora Sheila Cáceres Polimorfismo Polimorfismo Polimorfismo é a característica única de linguagens orientadas
Leia maisInterfaces. Universidade Católica de Pernambuco Ciência da Computação. Prof. Márcio Bueno.
Interfaces Universidade Católica de Pernambuco Ciência da Computação Prof. Márcio Bueno poonoite@marciobueno.com Fonte: Material da Profª Karina Oliveira Interfaces É utilizada para agrupar conceitos em
Leia maisProf. Fernando V. Paulovich 8 de novembro de SCC Programação Orientada a Objetos
Coleções a Tipos Genéricos em Java SCC0604 - Programação Orientada a Objetos Prof. Fernando V. Paulovich http://www.icmc.usp.br/~paulovic paulovic@icmc.usp.br Instituto de Ciências Matemáticas e de Computação
Leia maisLaboratório de Programação. Aula 12 Java 5COP088. Aula 12 Exceções Prof. Dr. Sylvio Barbon Junior. Sylvio Barbon Jr
5COP088 Laboratório de Programação Aula 12 Exceções Prof. Dr. Sylvio Barbon Junior 1 Sumário: 1) Manipulação de Exceções; 1) Try e Catch 2) Finally 3) Propagação (Throw e Throws) 2) Erros e Exceções Comuns;
Leia maisProgramação Orientada a Objetos. Professor: André Luis Meneses Silva br.geocities.com/programacao2ufs
Programação Orientada a Objetos Professor: André Luis Meneses Silva andreluis.ms@gmail.com br.geocities.com/programacao2ufs [ Conteúdo ] Objeto Mensagens Classe Encapsulamento Visibilidade Membros de Instância
Leia maisPOO29004 Programação Orientada a Objetos
POO29004 Programação Orientada a Objetos Classe abstrata, interface e polimorfismo Prof. Emerson Ribeiro de Mello Instituto Federal de Santa Catarina IFSC campus São José mello@ifsc.edu.br http://docente.ifsc.edu.br/mello/poo
Leia maisFundamentos Básicos da linguagem Java (Programação Orientada a Objetos) Prof. Responsáveis Wagner Santos C. de Jesus
Curso Disciplina Linguagem de Programação II Curso Engenharia da Computação Fundamentos Básicos da linguagem Java (Programação Orientada a Objetos) Site : http://www1.univap.br/~wagner/ec.html Prof. Responsáveis
Leia maisA Relação de Subtipo e Tipos Genéricos
O tipo List representa as listas que declaram ter elementos do tipo Object O tipo que representa as listas que declaram ter elementos de um tipo qualquer é List Este tipo é definido à custa
Leia maisTratamento de Exceções. LPG II Java. Tratamento de Exceções. Conceito de Exceções. Exemplo
Tratamento de Exceções LPG II Java Tratamento de Exceções Introdução Princípios do tratamento de exceções em Java Cláusula try Cláusula catch Cláusula finally Hierarquia de exceções em Java Considerações
Leia maisComputação II Orientação a Objetos
Computação II Orientação a Objetos Fabio Mascarenhas - 2016.2 http://www.dcc.ufrj.br/~fabiom/java Classes abstratas Até agora, usamos interfaces toda vez que queríamos representar algum conceito abstrato
Leia maisProgramação Orientada a Objetos II
Programação Orientada a Objetos II Prof. Walter Gima walter.gima@anhanguera.com 1 Interfaces Polimorfismo 2 Agenda Interfaces Interfaces x Classes Abstratas Polimorfismo Herança Múltipla 3 Interfaces São
Leia maisTipos, Literais, Operadores
Tipos, Literais, Operadores Identificadores São palavras utilizadas para nomear variáveis, métodos e classes Na linguagem Java, o identificador sempre começa por letra, sublinhado(_) ou cifrão ($) Não
Leia maisTipos, Literais, Operadores
Tipos, Literais, Operadores Identificadores São palavras utilizadas para nomear variáveis, métodos e classes Na linguagem Java, o identificador sempre começa por letra, sublinhado(_) ou cifrão ($) Não
Leia maisComputação II Orientação a Objetos
Computação II Orientação a Objetos Fabio Mascarenhas - 2014.1 http://www.dcc.ufrj.br/~fabiom/java Tratamento de Erros Até agora não nos preocupamos com erros em nosso programa, apenas assumimos que tudo
Leia maisProgramação Orientada a Objectos - P. Prata, P. Fazendeiro
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 maisProgramação OO em Java. Profa Andréa Schwertner Charão DELC/CT/UFSM
Programação OO em Java Profa Andréa Schwertner Charão DELC/CT/UFSM Sumário Herança Visibilidade de atributos e métodos Extensão e sobreposição Uso de super Referências para objetos Polimorfismo Conceitos
Leia maisPROGRAMAÇÃO ORIENTADA A OBJETOS -TRATAMENTO DE EXCEÇÕES. Prof. Angelo Augusto Frozza, M.Sc.
PROGRAMAÇÃO ORIENTADA A OBJETOS -TRATAMENTO DE EXCEÇÕES Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br ROTEIRO 4. Sistemas de Tratamento de Exceções Exceções genéricas Classes de exceções
Leia maisPadrão de projeto de software
Padrão de projeto de software Paulo Venancio Lopes e Daniel Sguillaro Nome Roupa Suja Se Lava Em Casa. Intenção Dar maior capacidade e flexibilidade ao conceito de entidade (no contexto de persitência
Leia maisTratamento de Exceções cont. Profa. Thienne Johnson EACH/USP
Tratamento de Exceções cont. Profa. Thienne Johnson EACH/USP Java, como programar Deitel & Deitel Capítulo 14 continuação Todas as classes de exceção de Java herdam, direta ou indiretamente, da classe
Leia maisProf. Fernando V. Paulovich 8 de novembro de SCC Programação Orientada a Objetos
Tratamento de Exceções SCC0604 - Programação Orientada a Objetos Prof. Fernando V. Paulovich http://www.icmc.usp.br/~paulovic paulovic@icmc.usp.br Instituto de Ciências Matemáticas e de Computação (ICMC)
Leia maisProgramação Orientada a Objetos
Programação Orientada a Objetos Engenharia da Computação Professor: Rosalvo Ferreira de Oliveira Neto Dados Pessoais Rosalvo Ferreira de Oliveira Neto MSc. em ciência da computação (UFPE) rosalvo.oliveira@univasf.edu.br
Leia maisConceitos de Programação Orientada a Objetos
Conceitos de Programação Orientada a Objetos Tatyana Bitencourt Com as técnicas de orientação a objeto, é possível obter resultados considerados impossíveis pensando de maneira estruturada. Como Java não
Leia maisProgramação Java. - Herança e Polimorfismo - Marco Fagundes Marco Fagundes -
Programação Java - Herança e Polimorfismo - Marco Fagundes mfagundes@tre-pa.gov.br 1 Tópicos Herança Ligação Dinâmica Polimorfismo 2 Herança Herança é um conceito que mapeia as classes relacionadas entre
Leia maisInterfaces e Classes Abstratas
Interfaces e Classes Abstratas José Gustavo de Souza Paiva Problema Método obterarea()? Classes Abstratas Classes que funcionam como um molde Declarada com comando abstract Contém um ou mais métodos abstratos
Leia maisPadrão de Projeto State
padrão state_ cinto de utilidades MÁQUINAS DE ESTADO COM O Padrão de Projeto State Desenvolver software é trabalhar com abstrações o tempo todo, pois estas nos ajudam a gerenciar a complexidade nos sistemas
Leia maisINF1636 PROGRAMAÇÃO ORIENTADA A OBJETOS
INF1636 PROGRAMAÇÃO ORIENTADA A OBJETOS Departamento de Informática PUC-Rio Ivan Mathias Filho ivan@inf.puc-rio.br Programa Capítulo 5 Conversão de Tipos Polimorfismo O Modificador final O Modificador
Leia maisUniversidade Federal de Uberlândia Faculdade de Computação Programação Orientada a Objetos II Prof. Fabiano Dorça. Padrão Observer (Observador)
Universidade Federal de Uberlândia Faculdade de Computação Programação Orientada a Objetos II Prof. Fabiano Dorça Problema: Definir uma dependência um-para-muitos entre objetos, de forma quando o estado
Leia maisUnidade: sobrecarga, construtores e herança
Unidade: sobrecarga, construtores e herança 0 Unidade: sobrecarga, construtores e herança Sobrecarga Sobrecarregar (do inglês overload) um método é criar mais métodos com o mesmo nome, porém com assinaturas
Leia mais1. Por que não utilizar a notação de composição da UML para mostrar que um cachorro é composto de altura, peso, cor e data de nascimento?
1. Por que não utilizar a notação de composição da UML para mostrar que um cachorro é composto de altura, peso, cor e data de nascimento? 2. Esboce um diagrama de classes para um capítulo de livro com
Leia maisProgramação Orientada a Objectos - P. Prata, P. Fazendeiro. Hierarquia de classes e mecanismo de ligação
4 Conceito de Herança Hierarquia de classes e mecanismo de ligação Herança Uma classe pode herdar operações de uma superclasse e as suas operações podem ser herdadas por subclasses. O mecanismo de herança
Leia maisThreads. O que é uma Thread? Paralelismo
Threads em Java 1 O que é uma Thread? Paralelismo Threads Multi- threading é o mecanismo de concorrência suportado explicitamente pela linguagem Java. Os mecanismos de gerenciamento e sincronização de
Leia maisProgramação OO em Java. Profa Andréa Schwertner Charão DLSC/CT/UFSM
Programação OO em Java Profa Andréa Schwertner Charão DLSC/CT/UFSM Sumário Herança Visibilidade de atributos e métodos Extensão e sobreposição Uso de super Referências para objetos Polimorfismo Conceitos
Leia maisTratamento de Exceção. Programação Orientada a Objetos Java (Rone Ilídio)
Tratamento de Exceção Programação Orientada a Objetos Java (Rone Ilídio) Tratamento de exceção Exceção é uma contração de Evento de Exceção Evento de exceção impede a execução normal de um programa Quando
Leia maisProgramação. Orientada a Objetos: Herança. Objetos. Relacionamento entre classes. Análise e Projeto Orientados a. Objetos
Programação Orientada a Objetos: Herança Alexandre César Muniz de Oliveira Análise e Projeto Orientados a Objetos A análise orientada a objetos Determina o que o sistema deve fazer: Quais os atores envolvidos?
Leia maisPadrões de Projeto. Padrões de Projeto. Além dos 23 Padrões GoF. Os 23 Padrões de Projeto. Documentação de um Padrão. Classificação dos Padrões
DCC / ICEx / UFMG Padrões de Projeto Padrões de Projeto Eduardo Figueiredo http://www.dcc.ufmg.br/~figueiredo Um padrão é uma descrição do problema e a essência da sua solução Documenta boas soluções para
Leia maisProgramação OO em Java
Programação OO em Java Baseado nos materiais de Profa. Andréa S. Charão Prof. Guilherme D. Juraszek (rev. de Alexandre G. Silva, 09/2017) Sumário Classes abstratas Interfaces Tipos genéricos Coleções Classes
Leia maisHerança e Polimorfismo
Herança e Polimorfismo 2013 O que veremos hoje? Herança e polimorfismo Transparências baseadas no material do Prof. Gilbert Azevedo e Prof. Jailton Carlos Objetivos Conceito de Polimorfismo em POO Mais
Leia maisComputação II - Java - Prova 1 Prof. Adriano Joaquim de Oliveira Cruz /05/13. Questão: Total Pontos: Gráu:
Computação II - Java - Prova 1 Prof. Adriano Joaquim de Oliveira Cruz - 2015/05/13 Questão: 1 2 3 4 5 6 Total Pontos: 20 15 15 10 10 30 100 Gráu: 1. Defina os termos listados a seguir: (a) (10 Pontos)
Leia maisClasses e Objetos INTRODUÇÃO À ORIENTAÇÃO A OBJETOS COM JAVA - MÓDULO II. Classes. Objetos. Um modelo para a criação de objetos
INTRODUÇÃO À ORIENTAÇÃO A OBJETOS COM JAVA - MÓDULO II Classes e Objetos Objetos Um conjunto de estados e comportamentos Classes Um modelo para a criação de objetos 1 Pacotes e Java API Pacotes Um conjunto
Leia maisVejamos o seguinte exemplo public class Exemplo private int testada = 20; public void testapalavra(int testada) JOptionPane.showMessageDialog(null,"Pa
Palavra reservada this Em Java podemos ter um parâmetro de um método e um atributo de uma classe com o mesmo nome. Caso façamos uma referência a esta variável, pelo princípio da localidade estaremos referenciando
Leia maisOrientação a Objetos AULA 09
Orientação a Objetos AULA 09 Prof. Fabrício Martins Mendonça Conteúdo da Aula ü Coleções ü Coleções lista de objetos ü Coleções conjuntos 2 Coleções Podemos armazenar vários objetos em um array e este
Leia maisHerança. Fátima L. S. Nunes Luciano A. Digiampietri Norton T. Roman SISTEMAS DE INFORMAÇÃO 1
Herança Fátima L. S. Nunes Luciano A. Digiampietri Norton T. Roman 1 1 1 Motivação Você está desenvolvendo um sistema de gerenciamento de pessoal para a USP Precisa fazer: Cadastro de alunos e professores
Leia maisPROGRAMAÇÃO I INTRODUÇÃO À ORIENTAÇÃO A OBJETOS
PROGRAMAÇÃO I INTRODUÇÃO À ORIENTAÇÃO A OBJETOS Prof. Dr. Daniel Caetano 2017-1 Objetivos Compreender os conceitos classe e objeto Compreender a função dos métodos e atributos e o conceito de encapsulamento
Leia maisSingleton e Adapter. Professor: Nazareno Andrade (baseado no material de Hyggo Almeida e Jacques Sauvé)
e Adapter Professor: Nazareno Andrade (baseado no material de Hyggo Almeida e Jacques Sauvé) O que vimos na última aula? Factory Method Abstract Factory 2 O que veremos hoje? (padrão de criaçã) Adapter
Leia maisProgramação por Objectos. Java
Programação por Objectos Java Parte 6: Herança e Polimorfismo LEEC@IST Java 1/50 Herança revisão (1) A herança é um mecanismo em que a subclasse constitui uma especialização da superclasse. A superclasse
Leia maisPalavras Reservadas da Linguagem Java
Palavras Reservadas da Linguagem Java Palavras Reservadas da Linguagem Java: Categorias Tipos de dados primitivos Literais Pseudo-variáveis Desvio e controle de fluxo Pacotes Exceções Modificadores de
Leia mais[Desenvolvimento OO com Java] Exceções e controle de erros
Centro Tecnológico Departamento de Informática Prof. Vítor E. Silva Souza http://www.inf.ufes.br/~vitorsouza [Desenvolvimento OO com Java] Exceções e controle de erros Este obra está licenciada com uma
Leia maisNOVIDADES DO JAVA PARA PROGRAMADORES C
PROGRAMAÇÃO SERVIDOR EM SISTEMAS WEB NOVIDADES DO JAVA PARA PROGRAMADORES C Prof. Dr. Daniel Caetano 2011-2 Visão Geral 1 2 4 5 Classes Objetos Herança Tratamento de Erros Material de Estudo Material Notas
Leia maisTÉCNICAS DE ORIENTAÇÃO A OBJETOS
TÉCNICAS DE ORIENTAÇÃO A OBJETOS APLICAÇÃO EM: C# E JAVA Sumário INTRODUÇÃO... 4 PARADIGMAS DE PROGRAMAÇÃO... 5 PROGRAMAÇÃO PROCEDURAL... 5 PROGRAMAÇÃO ESTRUTURADA... 5 PROGRAMAÇÃO ORIENTADA A OBJETOS...
Leia maisProgramação Orientada a Objectos - P. Prata, P. Fazendeiro
7 Classes Abstractas e Interfaces Classe Abstracta Classe em que pelo menos um dos métodos de instância não é implementado. Exemplo: public abstract class Forma{ public abstract double area(); public abstract
Leia maisTratamento de Exceções. Java Avançado. Tratamento de Exceções. Conceito de Exceções. Exemplo
Tratamento de Exceções Java Avançado Tratamento de Exceções Roberto Vedoato vedoato@joinville.udesc.br Introdução Princípios do tratamento de exceções em Java Cláusula try Cláusula catch Cláusula finally
Leia maisExemplo de Aplicação Distribuída Serviço de Nomes Gerente de Segurança. Callbacks. Prof a Ana Cristina B. Kochem Vendramin DAINF / UTFPR
n n n n Exemplo de Aplicação Distribuída Serviço de Nomes Gerente de Segurança Callbacks Prof a Ana Cristina B. Kochem Vendramin DAINF / UTFPR Introdução Estende o modelo de objeto Java para fornecer suporte
Leia maisExceções. SCC0504 Programação Orientada a Objetos. Luiz Eduardo Virgilio da Silva ICMC, USP
SCC0504 Programação Orientada a Objetos Exceções Luiz Eduardo Virgilio da Silva ICMC, USP Parte do material foi obtido com os professores: José Fernando Junior (ICMC/USP) Sumário Introdução Tipos de exceção
Leia maisTratamento de Exceção. Tratamento de Exceções. Vantagens de TE. Exemplos de Exceções. Exemplo: Divide1 (sem TE)
DCC / ICEx / UFMG Tratamento de Exceção Tratamento de Exceções Eduardo Figueiredo http://www.dcc.ufmg.br/~figueiredo Uma exceção é uma indicação de problema na execução do programa Exceção foge ao fluxo
Leia mais1. Estude e implemente a classe Exemplo1 apresentada abaixo:
P. Fazendeiro & P. Prata POO FP09/1 Exceções Uma exceção (Exception) é um sinal gerado pela máquina virtual de Java em tempo de execução indicando uma situação de erro da qual é possível recuperar. O objectivo
Leia maisParadigmas de Programação. Java First-Tier: Aplicações. Orientação a Objetos em Java (I) Nomenclatura. Paradigma OO. Nomenclatura
Java First-Tier: Aplicações Orientação a Objetos em Java (I) Paradigmas de Programação Programação Funcional Programação Procedural Programação Orientada por Objetos Grupo de Linguagens de Programação
Leia mais