AULA 71-72 Mais Herança Curso: Informática (Subseqüente) Disciplina: Programação Orientada a Objetos Prof. Abrahão Lopes

Slides:



Advertisements
Apresentações semelhantes
Programação orientada a objetos
Advertisements

Iniciação ao Java – Márcio F. Campos
Refatorações Experiência é aquela coisa maravilhosa que permite que você reconheça um erro tão logo o cometa novamente F.P. Jones.
Polimorfismo e Acoplamento Dinâmico
Expressões, controle de fluxo, wrappers e strings Profa
Introdução ao paradigma de programação: Orientado a Objetos
Linguagem de Programação II
Wagner Santos C. de Jesus
Programação orientada a objetos com Java
Herança e Polimorfismo
Classes e objetos P. O. O. Prof. Grace.
JAVA: Conceitos Iniciais
Tipos Agregados Homogêneos e Listas
Programação Orientada a Objetos com Java
Programação Orientada à Objetos
Programação I Aula 2 (Métodos)
Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa This.
Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa Membro Static.
Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa Classes e Objetos em Java.
UTFPR – Campus Curitiba - DAELN Cursos de Eng. Eletrônica/Eng
Orientação a Objetos usando Java
UTFPR – Campus Curitiba - DAELN Cursos de Eng. Eletrônica/Eng
Classes Abstratas P. O. O. Prof. Ângela e Grace.
Aula Prática 4 Monitoria IP/CC (~if669).
Polimorfismo.
1 Marcio de Carvalho Victorino JAVA. 2 Declaração de Atributos [ ] [transient] [volatile] [static] [final] ; controle de acesso –public, package (default),
Classes Abstratas e Interface
Programação I Aula 1 Prof. Gilberto Irajá Müller Última atualização 2/3/2009.
Paradigmas de Programação –Aula 7 Lab 2 Professores: Eduardo Mantovani Fábio Paula Santos.
Herança Modelagem e Programação Orientada a Objetos
Programação II Prof. Mateus Raeder Universidade do Vale do Rio dos Sinos - São Leopoldo -
Bruno Inojosa MCP .NET Framework
Herança.
Classes abstratas São classes das quais não se pode instanciar objetos. São classes das quais não se pode instanciar objetos. Seu objetivo é ser herdada.
2 – Revisão de Programação Orientada a Objetos
UCSal – Bacharelado em Informática Tópicos Especiais em Informática II Profa. Semíramis Assis
Paradigmas da Programação – Semestre 1 – Aula 7 Professor: Eduardo Mantovani )
Array e ArrayList LPOO – 01/09/14.
Prof.: Bruno Rafael de Oliveira Rodrigues. Herança Possibilita a uma classe usar campos ou métodos definidos em outra classe. Assim a classe pai possui.
Curso Básico de Android
Implementação Orientada a Objetos – Aula 08 Herança, sobrescrita de métodos e polimorfismo Prof. Danielle Martin Universidade de Mogi das Cruzes
Java Como Programar, 8/E Deitel/Deitel, 8e. Java – Como programar Copyright © 2010 Pearson Education Slide 1.
Padrões de Projeto 2 – Revisão de Programação Orientada a Objetos.
1. 2 Programação Orientada a Objetos Prof. Maurício Rodrigues de Morais
1 Introdução aos Padrões de Projetos (na prática) Créditos: Lúbia Vinhas Hazel Carvalho Crato Adaptações: Prof. Nécio de Lima Veras.
Tecnologias para Wireles LAN (IEEE ) Aula Computação Úbiqua Prof. Me. Diovani MIlhorim.
Web Application Rafael Muniz e Marcus Vinícius Plugins MAVEN 04/04/2009 Revisão 12/04/2009.
Orientação a Objetos - Programação em C++ Slides 11: Herança et al. (Funções Virtuais, Polimorfismo, Herança Múltipla, Funções Virtuais Puras e Classes.
Programação para Internet Aula 06 Linguagem Java (Orientação a Objetos – Atributos e Métodos)
Classes Abstratas e Interface. 2 Classe Abstrata  Uma classe abstrata serve apenas como modelo para uma classe concreta (classe que comumente usamos);
1 Interface (o termo) » Interface (a palavra reservada): Java estendeu o conceito de interfaces à um nível ainda mais flexível que permite construir entidades.
Polimorfismo com Interfaces Pacotes em Java Prof. Gustavo Wagner (Alterações) Prof. Tiago Massoni (Slides Originais) Desenvolvimento de Sistemas FATEC-PB.
Minicurso Java Básico Cristian Backy | Cristian Costa | Ruddá Beltrão.
Herança em Java Curso: Informática Disciplina: Programação Orientada a Objetos Prof. Abrahão Lopes
Jean Carlo Mendes
Laboratório de Computação Aula 05 – Array Prof. Fábio Dias
HERANÇA Dilvan Moreira (baseado no livro Prog. Orientada a Objetos em Java)
Introdução ao Eclipse 3.2 Prof. Gustavo Wagner (modificações) Slides originais: Prof. Tiago Massoni Java Básico  Centro de Informática, UFPE.
Laboratório de Computação Aula 06 e 07 – Implementação de classes Prof. Fábio Dias
Padrões de Projeto Aula 14 – Padrão Abstract Factory.
Herança e Polimorfismo Prof. Gustavo Wagner (Alterações) Prof. Tiago Massoni (Slides Originais) Desenvolvimento de Sistemas FATEC-PB  Centro de Informática,
INE5408 Estruturas de Dados Estruturas de Dados básicas utilizando Vetores - Listas.
Introdução à Orientação a Objetos em Java Prof. Gustavo Wagner (Alterações) Slides originais: Prof. Tiago Massoni Desenvolvimento de Sistemas FATEC-PB.
Implementação Orientada a Objetos – Aula 02 Introdução ao Java Prof. Danielle Martin Universidade de Mogi das Cruzes.
Laboratório de Computação Aula 06 e 07 – Implementação de classes Prof. Fábio Dias
PROGRAMAÇÃO ORIENTADA A OBJETOS EM C++ PAE: Pedro Shiguihara Professor: Dilvan Moreira.
Hidrodinâmica Aula 06 (1 0 Sem./2016) 1. Introdução à dinâmica do fluidos Equação de Euler: algumas expressões matemáticas complementares 2.
Calculo de Hoare Daniel Soares, Gabriel Alabarse Hernandez(150756) e Vanius Zapalowski(150843)
CLASSES EM JAVA Dilvan Moreira (baseado no livro Big Java)
Aula 5 - Métodos. Desenvolvimento de Programas A melhor forma de construir programas grandes é dividi-los em programas menores que executam tarefas específicas.
Transcrição da apresentação:

AULA Mais Herança Curso: Informática (Subseqüente) Disciplina: Programação Orientada a Objetos Prof. Abrahão Lopes

Conversão de Tipos (casting) Num exemplo anterior vimos que é possível colocar um objeto de uma subclasse em uma variável de superclasse: Item coisa = new CD(...); E dissemos que o inverso não é permitido: CD coisa = new Item(...); // ERRO!

Conversão de Tipos (casting) Porém se observarmos bem, em um objeto de um subtipo existe um objeto do tipo da superclasse e portanto há “espaço” para realizarmos tal operação. Mas o compilador não aceitará uma atribuição direta, é preciso usarmos o seguinte artifício: CD ATRIBUTO1; ATRIBUTO2; METODO1( ); METODO2( ); Obj Item CD coisa = (CD) new Item(...);

Conversão de Tipos (casting) Essa operação é chamada conversão de tipo. Ao colocarmos o parênteses (operador de conversão de tipo) com o tipo de dado de destino, o compilador fará os ajustes necessários para que a informação seja entendida como o subtipo indicado e não retorna erro. Entretanto, esse tipo de conversão deve ser evitado. Em geral, um programa bem estruturado não requer conversão de tipos.

Conversão de Tipos (casting) Obs.: Esse tipo de conversão só funciona entre uma superclasse e uma subclasse. Não é possível converter duas subclasses entre si. Neste exemplo dá pra fazer conversão de veículo em carro ou veículo em bicicleta, porém bicicleta em carro ou carro em bicicleta não dá!

Autoboxing e classes empacotadoras Quando falamos sobre vetores, comentamos que os ArrayLists só podem ser usados para tipos objetos e que tipos primitivos como int, float, double,... não poderiam ser usados em listas dinâmicas. Java resolve esse problema através das Classes Empacotadoras, ou seja, classes que foram criadas a fim de transformar tipos primitivos em tipos objetos.

Autoboxing e classes empacotadoras Para cada tipo primitivo existe uma classe empacotadora: Tipo PrimitivoClasse Empacotadora byteByte shortShort intInteger longLong floatFloat doubleDouble charCharacter Boolean

Autoboxing e classes empacotadoras Inclusive já usamos algumas dessas classes ao converter valores digitados pelo usuário, como em: int x = Integer.parseInt(“100”); Autoboxing é uma operação executada automaticamente pelo Java quando usamos um valor do tipo primitivo onde seria necessário um tipo objeto (ou vice-versa, unboxing).

Autoboxing e classes empacotadoras Exemplo: private ArrayList lista;... public void adicionar(int valor){ lista.add(valor); } O método add( ) requer um OBJETO, então Java converte o int para Integer automaticamente.

Polimorfismo e Sobrescrita Quando escrevemos a classe Item e o método imprimir( ) pertencente a ela, conseguimos exibir todos os dados contidos em suas variáveis. Porém, quando esse método é herdado por uma subclasse, temos um problema...

Polimorfismo e Sobrescrita Onde está o nome do cantor? Onde está o nome do diretor? Onde está a plataforma? Onde está a quantidade de jogadores?

Polimorfismo e Sobrescrita Isso acontece por que apesar das subclasse saber tudo sobre a superclasse, a super classe não sabe nada sobre suas subclasses. A primeira idéia para resolver o problema é mover o método imprimir para as subclasses:

Polimorfismo e Sobrescrita Mas aqui vamos esbarrar em dois problemas:  O método imprimir( ) não vai encontrar as informações da superclasse;  A classe Catalogador não vai encontrar o método imprimir( ). ?

Polimorfismo e Sobrescrita Para resolver o problema usaremos um modelo em que há um método imprimir( ) na superclasse e métodos com mesmo nome nas subclasses.

Polimorfismo e Sobrescrita Nas subclasses iremos sobrescrever os comandos do método da superclasse. Quando chamamos o método imprimir( ) a versão da subclasse será executada primeiro. CDDVD

Polimorfismo e Sobrescrita Observe que adicionamos apenas uma instrução para imprimir o atributo da subclasse (cantor / diretor). As demais informações serão impressas a partir da chamada do método da superclasse através do comando super.imprimir( ); Completando o código das demais classes, a saída ficaria assim:

Polimorfismo e Sobrescrita Olha aí o cantor! Olha aí o diretor! Olha aí plataforma! Olha aí a quantidade de jogadores!

Polimorfismo e Sobrescrita O polimorfismo acontece quando uma mesma chamada de método, em momentos diferentes, invoca métodos diferentes.

Exercício Complete a implementação do sistema de catalogação com métodos imprimir( ) em cada subclasse que sobrescrevem o método da superclasse e exibem todos os atributos do objeto.

Referências BARNES. KOLLING. Programação orientada a objetos com Java. Uma introdução prática usando o BlueJ. 4ed. Pearson, SIERRA, Kathy. BATES, Bert. Use a Cabeça! Java. 2ed. Alta Books, 2007.