Buscar

Slides 02 - Herança e Polimorfismo

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 39 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 39 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 39 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

HERANÇA
Programação Orientada a Objeto em JAVA
Prof. Alysson Ramirez
Situação-problema da Aula 01:
2
Abstrair um problema é parte importante do processo de
desenvolvimento de software, dessa forma, quanto mais próximo da
realidade de um programador, que é um ser humano, o problema a ser
resolvido possa ser representado, melhor será o seu entendimento e
consequentemente, a implementação torna-se mais simples e inteligível
para todos os envolvidos no processo de desenvolvimento, inclusive do
cliente para o qual o programa está sendo desenvolvido.
Vamos analisar a seguinte situação: Um programador é contratado para
desenvolver um software para uma empresa de produtos de beleza, e o
software em questão possui vários módulos, como:
Responsável pelo Recursos Humanos da Empresa;
Controle de estoque;
Controle de marketing;
Controle da frota de caminhões.
Situação-problema da Aula 01:
3
Todos esses módulos funcionam como peças de um todo,
mesmo sendo independentes; sendo assim, diversos
programadores poderiam trabalhar de forma independente
em cada um dos módulos. Além disso, seria possível adquirir
módulos prontos sem ao menos conhecer a implementação
deles, utilizando apenas interfaces de comunicação.
Quais as vantagens você enxerga nesse tipo de abordagem
em relação ao paradigma estruturado?
Levante questões em relação ao tempo de
desenvolvimento, custos, reuso entre outras que achar
pertinente.
Atividade verificadora de aprendizagem:
Identifiquem as classes e atributos para cada uma das
situações citadas abaixo:
A) Em uma turma de um curso de graduação temos
disciplinas ministradas em salas diferentes.
B) A transportadora "Super Cometa" monitora seus
caminhões e motoristas através de um controlador
embutido. Por meio dele é possível saber a localização de
cada veículo.
Atividade Autônoma Aura:
1) O paradigma de programação orientada a objetos nasceu da necessidade
de trazer o entendimento de problemas computacionais para mais próximo
do mundo real. Levando em consideração os conceitos de programação
orientada a objetos, julgue os itens a seguir:
I - Classes e objetos possuem atributos e métodos, no entanto, uma classe é
apenas um modelo que é usado para criar objetos diferentes do mesmo tipo.
II - Os atributos de um objeto são o que ele sabe fazer e o métodos são o que
ele sabe.
III - Uma classe é capaz de armazenar estados através de seus atributos e reagir
a mensagens enviadas a ela, assim como se relacionar e enviar mensagens a
outras classes.
Está(ão) correta(s):
A) I D) II e III
B) I e II E) III
C) I, II e III
Atividade Autônoma Aura:
2) Os paradigmas de orientação a objeto e estruturado tem aplicações diversas na
computação pois apresentam características distintas que os tornam adequados a aplicações
específicas. Por exemplo, para desenvolver um programa para uma empresa de Recursos
Humanos que irá ajudar a selecionar candidatos para um perfil de vaga específico e será
modificado e atualizado constantemente, o paradigma mais adequado seria o orientando a
objetos, mas se você irá desenvolver um software para o controle do freio ABS de um
automóvel, o qual irá executar em um microcontrolador que possui diversas restrições de
memória e processamento, seria mais adequado a utilização do paradigma estruturado.
Diante dessas duas situações motivadoras e de seus conhecimentos em relação aos
paradigmas orientado a objetos e estruturado, relacione as características com os respectivos
paradigmas.
I - Orientado a objetos
II - Estruturado
( ) Reutilização de código
( ) Tratamento de dados misturados com o comportamento do programa
( ) utiliza um conjunto de procedimentos para resolver um problema
( ) representação de problemas de forma abstrata
A) I, I, II, II D) I,I,II,I
B) II,I,II,I E) I, II, I, II
C) II,II,I,II
Situação-problema da Aula 02:
7
Sistemas computacionais muitas vezes acabam reutilizando
componentes em vários pontos do programa. Por exemplo, interfaces
gráficas utilizam muitos botões, os quais possuem atributos e
características muito parecidas, como forma retangular, método de
execução quando clicado entre outros.
Supondo que em um ambiente específico seja necessário utilizar um
botão de formar circular para representar o botão de um elevador.
Notamos que todos os outros comportamentos e atributos do botão
"retangular" serão utilizadas pelo botão "circular".
Então, não seria interessante que o botão "circular" herdasse as
características do botão "retangular" realizando apenas as alterações
necessárias ou acréscimo de atributos e métodos?
Esse mecanismo traria que tipos de vantagens no desenvolvimento de
sistemas?
HERANÇA
• É uma forma de reutilização de software na qual
uma nova classe é criada, absorvendo membros de
uma classe existente e aprimorada com
capacidades novas ou modificadas.
• Permite enconomia de tempo no desenvolvimento
de programas, reutilizando software de alta
qualidade, testado e depurado
HERANÇA
• SUPERCLASSE: CANETA OU PESSOA
• Quando uma nova classe herda MEMBROS de 
uma classe existente
• SUBCLASSE: CANETA AZUL / VERMELHA
ALUNO / PROFESSOR
CALOURO / VETERANO OU AUX / ADJ
• Nova classe criada com herança de MEMBROS
• Uma subclasse pode se tornar uma superclasse 
para outras subclasses
HERANÇA
• SUBCLASSE:
• Tem seus próprios métodos e classes
• É mais específica que a superclasse
• Representa um grupo mais ESPECIALIZADO de 
objetos
• Possui comportamentos da SUPERCLASSE mais 
os adicionais específicos a ela
HERANÇA
• SUPERCLASSE DIRETA:
• É a superclasse a partir da qual a subclasse herda 
explicitamente
• SUPERCLASSE INDIRETA:
• Qualquer superclasse acima da classe direta na 
HIERARQUIA DE CLASSE
• HIERARQUIA DE CLASSE:
• Define os relacionamentos de herança entre as 
classes
HERANÇA
• HIERARQUIA DE CLASSE:
• Inicia com a classe OBJECT (pacote java.lang)
• TODA classe JAVA EXTENDS (“herda de”) direta 
ou indiretamente a classe OBJECT!
• HIERARQUIA SIMPLES:
• Uma classe é derivada de uma superclasse direta
• JAVA NÃO SUPORTA HERANÇA MULTIPLA
HERANÇA
• HERANÇA MULTIPLA:
• Ocorre quando uma classe é derivada de mais de 
uma superclasse direta
• RELACIONAMENTO É UM:
• Representa a herança
• Um objeto de uma subclasse também pode ser 
tratrado como um objeto da sua superclasse
• Exemplo: um carro É UM veículo
HERANÇA
• RELACIONAMENTO TEM UM:
• Representa a composição
• Um objeto contém uma ou mais referências de 
objeto como membros
• Exemplo:
• um carro TEM UMA direção
• um objeto carro TEM UMA referência a um 
objeto direção
SUPERCLASSES E SUBCLASSES
• Um objeto de uma classe frequentemente também 
É UM objeto de outra classe
• EXEMPLO:
• Um retangulo É UM quadrilátero
• Um quadrado É UM quadrilátero
• Um paralelogramo É UM quadrilátero
• Um trapezóide É UM quadrilátero
SUPERCLASSES E SUBCLASSES
• Um retangulo HERDA DE um quadrilátero
• Quadrilatero é uma SUPERCLASSE
• Retangulo é uma SUBCLASSE
• Um retangulo é um tipo específico de quadrilatero
• MAS um quadrilatero NÃO É UM retangulo
• Um quadrilatero PODER SER:
• Um paralelogramo
• Um quadrado
• Etc
SUPERCLASSES E SUBCLASSES
• Superclasses são mais gerais
• Subclasses são mais específicas
• Cada objeto de SUBCLASSE é um objeto de sua 
SUPERCLASSE
• Uma SUPERCLASSE pode ter várias SUBLCLASSES
• Exemplo:
• Uma superclasse VEÍCULO representa todos os 
veículos
• Uma subclasse CARRO representa um 
subconjunto de veículo menor e mais específico
SUPERCLASSES E SUBCLASSES
• Relacionamentos de herança formam estruturas
hierarquicas do tipo ARVORE
• Há situações em que uma classe pode ser ao
mesmo tempo uma subclasse e também uma
superclasse
• HIERARQUIA DE CLASSE = HIERARQUIA DE
HERANÇA
SUPERCLASSES E SUBCLASSES
• EXEMPLO:
SUPERCLASSES E SUBCLASSES
• EXEMPLO:
DIRETAINDIRETA
INDIRETA
SUPERCLASSES E SUBCLASSES
• EXEMPLO:
• A leitura do diagrama é feita da seguinte forma: de 
baixo para cima, seguindo as setas:
• Um Administrador é um membro do Corpo 
Docente• Um Professor é um membro do Corpo Docente
• Um Corpo Docente é um membro de Empregado
SUPERCLASSES E SUBCLASSES
• EXEMPLO:
• Um Funcionário é membro de Empregado
• Um Empregado é membro da comunidade
• Um Aluno é membro da comunidade
• Um Graduado é membro da comunidade
• Membro da Comunidade é a superclasse direta de 
Empregado, Aluno e Graduados
SUPERCLASSES E SUBCLASSES
• EXEMPLO:
• Membro da Comunidade é a superclasse indireta
de todas as outras subclasses no diagrama
• Um administrador é um membro do corpo docente
que é um membro de empregado que é um
membro da comunidade
SUPERCLASSES E SUBCLASSES
• EXEMPLO:
SUPERCLASSES E SUBCLASSES
• Nem todo relacionamento de classe é um 
relacionamento de herança
• Relacionamento TEM UM:
• As classes têm membros que são referencias a 
objetos de outras classes
• Criam classes compondo classes existentes
SUPERCLASSES E SUBCLASSES
• EXEMPLO:
• Classe empregado
• Classe dataDeNascimento
• Classe numeroDeTelefone
• Um empregado é uma dataDeNascimento?????
• Um empregado TEM UMA dataDeNascimento!
• Um empregado é um numeroDeTelefone?
• Um empregado TEM UM numeroDeTelefone!
SUPERCLASSES E SUBCLASSES
• Importante:
• Objetos de superclasse não podem ser tratados 
como objetos de suas subclasses
• Exemplo:
• Todos os carros são veículos, mas nem todos os 
veículos são carros
SUPERCLASSES E SUBCLASSES
• Desvantagem da herança:
• Uma subclasse pode herdar métodos que ela não 
necessita ou que não deveria ter
• Às vezes a subclasse precisa de uma versão 
personalizada do método
• SOBRESCREVER:
• A subclasse pode redefinir o método da
superclasse com uma implementação mais
adequada para ela (@OVERRIDE)
Herança
◼ É a capacidade de se definir novas classes com
base em classes já existentes;
◼ Permite ao programador criar uma nova classe
programando apenas as diferenças entre a nova
classe e a classe anterior (classe-pai);
◼ A herança pode ser:
 Simples: atributos e métodos herdados de
uma única classe;
 Múltipla: atributos e métodos herdados de
várias classes.
29
Herança
30
Polimorfismo
31
◼ É a propriedade de usar o mesmo nome
para métodos diferentes, implementados
em níveis diferentes de uma hierarquia de
classes;
◼ Permite que métodos herdados por uma
classe sejam alterados (sobrescritos) para
adaptar-se a peculiaridades próprias da
classe derivada.
Polimorfismo
32
◼ Tipos clássicos de polimorfismo:
 De operadores: distinção pelo tipo de operandos,
por exemplo soma de inteiros ou soma de reais;
 Redefinição de operadores: criar operações não
embutidas na linguagem, por exemplo a soma
de matrizes;
 Dois métodos iguais na mesma classe: distinção
pelo número e/ou tipo dos parâmetros.
EXEMPLO 1
package br.com.exemploheranca;
public class pessoa {
String nome, idade, endereco = "R: Java ,501";
public void ImprimeNome() { 
System.out.println("o nome é:"); 
System.out.println("Endereco: " + endereco);
}
}
EXEMPLO 1
package br.com.exemploheranca;
public class fornecedor extends pessoa{ 
String cnpj;
public void ImprimeNome() {
do fornecedor é :System.out.println("O nome 
" + nome + "\n Cnpj: " + cnpj);
}
}
EXEMPLO 1
package br.com.exemploheranca;
public class cliente extends pessoa { 
String cpf;
public void ImprimeNome() {
System.out.println("Nome do
nome + "\n Nº CPF: " + cpf + "\n Seu endereco
cliente é : " +
:" +
endereco);
}
}
EXEMPLO 1
package br.com.exemploheranca;
public class principal {
public static void main(String[] args) { 
cliente c = new cliente();
c.nome = "Luiz";
c.cpf = "073.777.796-21";
c.ImprimeNome();
fornecedor f = new fornecedor(); 
f.nome = "Deltatronic";
f.cnpj = "073.856.9856.52-10";
f.ImprimeNome();
}
}
EXERCÍCIOS
• Desenhe uma hierarquia 
alunos universitários.
de herança 
Utilize ALUNO
superclasse então
para
como
herde
ALUNO com
da hierarquia, 
as classes ALUNODEGRADUAÇÃO
ALUNOGRADUADO. Continue
e 
a estender a
hierarquia o mais profundo que conseguir
(vários níveis). Depois de desenhar a
os relacionamentosdiscuta 
classes.
hierarquia, 
entre as 
classes e crie um
Em seguida, 
programa
crie as 
Java que
demonstre sua utilização.
EXERCÍCIOS
• Desenhe uma hierarquia de herança para
QUADRILATERIO, TRAPEZIO, PARALELOGRAMO, RETANGULO e
QUADRADO. Utilize QUADRILATERO como a superclasse da
Faça a hierarquia 
(com muitos níveis). Especifique
hierarquia. 
conseguir 
variáveis de instância
classe. As variáveis
e os métodos para 
de instância private
o mais profundo que
as 
cada
de
QUADRILATERO devem ser os pares x e y de coordenadas
para os quatro Pontos que delimitam o QUADRILATERO.
Escreva um programa em Java que instancia os objetos
de suas classes e gera saída da área de cada objeto
– menos o QUADRILATERO.
Situação-problema da Aula 03:
39
Um programador foi contratado para desenvolver um
bloco de notas que deve funcionar da seguinte forma:
o usuário pode criar um conjunto de objetos notas que
possui os seguintes atributos: nome, data de criação e
informação. Nesse caso, verificamos que o Bloco de
Notas é composto por um agrupamento de várias
notas.
Como podemos organizar esse agrupamento?
Existe apenas uma forma de agrupá-los?

Continue navegando