SlideShare uma empresa Scribd logo
1 de 31
Baixar para ler offline
Herança
Vamos imaginar o funcionamento do sistema acadêmico do
Unipê, que controla o cadastro de alunos, professores e
funcionários.
Herança 4
Vamos imaginar o funcionamento de um sistema acadêmico do Unipê,
que controla o cadastro de alunos, professores e funcionários
Herança 5
Conceito
• Imagine se um dia precisarmos adicionar uma nova
informação(CPF, por exemplo), para todas as Pessoas do
controle acadêmico?
• Precisaríamos ir de classe em classe adicionando a
informação do CPF.
Herança 6
Conceito
• Ao modelar um conjunto de classes, podemos encontrar
classes semelhantes na estrutura e no comportamento.
• Existe uma maneira, em Java, de relacionarmos uma classe
de tal maneira que uma delas herda tudo que a outra tem.
Herança 7
Então, como implementar?
•A ideia central de herança é que novas classes são
criadas a partir de classes já existentes.
• Subclasse herda de uma Superclasse
• Subclasse é mais específica que a Superclasse
•Herança é uma técnica para prover suporte a
especialização
• Classes mais abaixo: especializadas
• Classes mais acima: genéricas
Herança 8
Representação
Pessoa
-nome
-email
-telefone
-idade
-sexo
Herança 9
Professor
-salario
-disciplina
Aluno
-matricula
-notas
Funcionario
-salario
Em todo momento que criarmos um objeto do tipo
Professor, ou Aluno, ou Funcionário, este objeto
possuirá também os atributos e métodos definidos
na classe Pessoa, pois agora ele é umaPessoa
Sobreposição
• Pode-se modificar algum método da minha superclasse?
Sim, através da sobreposição!
• Métodos implementados previamente em uma superclasse podem
ser redefinidos por qualquer subclasse
Herança 10
Para isso, mantém-se a mesma
assinatura do método herdado,
redefinindo apenas o corpo do
método
Tipos de Herança
 Herança pura
 métodos genéricos são sobrepostos
 Extensão
 novos comportamentos são adicionados nas classes de
especialização (métodos genéricos herdados)
• Por exemplo:
Herança 11
Forma
+desenha()
+apaga()
Quadrado
+desenha()
+apaga()
Circulo
+desenha()
+apaga()
+defineRaio()
Herança
Pura
Extensão
Posso herdar de várias Classes?
•Cada subclasse possui uma única superclasse
• A isso, chamamos de herança simples
• Em algumas linguagens, é possível herdar a partir de
diversas superclasses (como em C++)
• Java não permite herança múltipla com classes
Herança 12
Recapitulando...
• Se B é uma subclasse de A, então:
• Os objetos de B suportam todas as operações suportadas
pelos objetos de A, exceto aquelas que foram redefinidas
• Os objetos de B incluem todas as variáveis de instância de
B + todas as variáveis de instância de A
• Métodos declarados como private não serão herdados
• Construtores também não são herdados
• Serão chamados (em cascata) na construção de objetos
especializados(super()).
Herança 13
Como acessar os atributos que
herdamos?
Herança 14
Como acessar os atributos que herdamos?
• Se deixarmos os atributos como public, qualquer um poderia alterar
os atributos dos objetos deste tipo.
• Existe um outro modificador de acesso, o protected, que fica entre
o private e o public. Um atributo protected só pode ser acessado
(visível) pela própria classe e por suas subclasses .
Herança 15
Como implementar nosso
primeiro exemplo?
Herança 16
Antes de aplicar Herança
Herança 17
Depois
Herança 18
Exercício 1
A) Seguindo o modelo do exemplo, vamos criar uma classe
chamada Pessoa. Ela deverá ter as características nome,
email, telefone, idade, sexo.
B) Teremos também 3 tipos de pessoas, como: Aluno que terá
ainda Matricula e a Nota. Professor terá como atributos
adicionais seu Salário e Disciplina. E a Secretária terá como
adicional apenas o salário. Crie uma classe para cada um.
C) Por ultimo, vamos criar uma classe para testar cada um dos
atributos.
Herança 19
• Vamos supor um sistema de um banco, que controle
seus clientes e suas contas...
Estudo de Caso 2 > Sistema Bancário
Conta Poupança
• Cliente
• Número
• DataAbertura
• Saldo
• TaxaRendimento
• Creditar
• Debitar
• CreditarRendimento
Conta Corrente
• Cliente
• Número
• DataAbertura
• Saldo
• TaxaManutencao
• TaxaOperacao
• Creditar
• Debitar
• DebitarManutenção
Sistema Bancário > SisBank
Conta Poupança Conta Corrente
Sistema Bancário > SisBank
O que existe de semelhante entre estes
dois?
R: São Contas!
Conta Poupança
• Cliente
• Número
• DataAbertura
• Saldo
• TaxaRendimento
Creditar
Debitar
CreditarRendimento
Conta Corrente
• Cliente
• Número
• DataAbertura
• Saldo
• TaxaManutencao
• TaxaOperacao
Creditar
Debitar
DebitarManutenção
Sistema Bancário > SisBank
• Com a herança é possível
identificar que as classes
ContaCorrente e
ContaPoupança irão aproveitar
tudo que está na classe Conta!
Implementando Herança
•Mas e o Construtor da subclasse, Como
fica?
•Precisamos chamar o construtor da
superclasse!
• Operador: super
Implementando Herança
•Detalhe importante:
• A classe Conta pode existir no nosso
sistema bancário?
SisBank
•Detalhe importante:
• A classe Conta pode “existir” no nosso
sistema bancário?
•R: Não, essa é uma classe que apenas reúne
características semelhantes entre
ContaCorrente e ContaPoupanca. A classe
Conta não pode ser instanciada!
SisBank
•Como implementar para que a classe Conta não
possa ser instanciada?
•R: Definindo-a como “classe abstrata”!
Classe Abstrata
•O que é uma classe Abstrata?
•É uma classe que não pode ser instanciada, ou
seja, não gera objetos;
•É utilizada apenas como superclasse em
hierarquia de heranças;
•Também é conhecida como “superclasse
abstrata”;
•Reúne características semelhantes de classes.
•Operador: abstract
Classe Abstrata
• No nosso sistema bancário, o método debitar irá se
comportar de maneira diferente para as
implementações em ContaCorrente e
ContaPoupanca:
• Corrente: ao solicitar para se debitar um valor, deve-se também
debitar o valor da taxa de operação da conta;
• Poupança: ao solicitar para se debitar um valor, deve-se verificar
se a conta já possui mais de um ano de abertura;
SisBank
•Como garantir que as classes herdeiras
irão implementar um método?
• R: Métodos abstratos!
• Não possui implementação;
• Toda classe herdeira direta deverá obrigatoriamente
implementar.
• Esse é um conceito do Polimorfismo: o mesmo nome e
assinatura de método podem ser utilizados para realizar
diferentes ações, dependendo da implementação do
método da classe!
Métodos Abstratos
Exercício 2
A) Vamos criar uma classe Conta, que possua um saldo, os
métodos para pegar saldo, creditar e debitar
B) Adicione um método na classe Conta, que atualiza essa
conta de acordo com uma taxa percentual fornecida
C) Crie duas subclasses da classe Conta: ContaCorrente e
ContaPoupanca. Ambas terão o método atualiza
sobrescrito: A ContaCorrente deve atualizar-se com o dobro
da taxa e a ContaPoupanca deve atualizar-se com o triplo da
taxa
• D) Além disso, a ContaCorrente deve reescrever o método
creditar, a fim de retirar uma taxa bancária de dez centavos
de cada depósito
32Herança

Mais conteúdo relacionado

Mais procurados

Java: Heranca e polimorfismo
Java: Heranca e polimorfismoJava: Heranca e polimorfismo
Java: Heranca e polimorfismoArthur Emanuel
 
Encapsulamento em Orientação a Objetos
Encapsulamento em Orientação a ObjetosEncapsulamento em Orientação a Objetos
Encapsulamento em Orientação a ObjetosDaniel Brandão
 
Programação orientada a objetos
Programação orientada a objetosProgramação orientada a objetos
Programação orientada a objetosCleyton Ferrari
 
Introdução a JavaScript
Introdução a JavaScriptIntrodução a JavaScript
Introdução a JavaScriptBruno Catão
 
POO - Unidade 2 (parte 1) - Diagrama de Classe - Associação (versão 2)
POO   - Unidade 2 (parte 1) - Diagrama de Classe - Associação (versão 2)POO   - Unidade 2 (parte 1) - Diagrama de Classe - Associação (versão 2)
POO - Unidade 2 (parte 1) - Diagrama de Classe - Associação (versão 2)Marcello Thiry
 
Introdução a poo
Introdução a pooIntrodução a poo
Introdução a pooSedu
 
Introdução básica ao JavaScript
Introdução básica ao JavaScriptIntrodução básica ao JavaScript
Introdução básica ao JavaScriptCarlos Eduardo Kadu
 
Aula 04 PHP - Utilizando Funções e Manipulando Arquivos
Aula 04 PHP - Utilizando Funções e Manipulando ArquivosAula 04 PHP - Utilizando Funções e Manipulando Arquivos
Aula 04 PHP - Utilizando Funções e Manipulando ArquivosDaniel Brandão
 
Programação Orientada a objetos em Java
Programação Orientada a objetos em JavaProgramação Orientada a objetos em Java
Programação Orientada a objetos em JavaDenis L Presciliano
 
Minicurso de JavaScript (Portuguese)
Minicurso de JavaScript (Portuguese)Minicurso de JavaScript (Portuguese)
Minicurso de JavaScript (Portuguese)Bruno Grange
 
JAVA - ENCAPSULAMENTO
JAVA - ENCAPSULAMENTOJAVA - ENCAPSULAMENTO
JAVA - ENCAPSULAMENTOAndré Victor
 
Prática de laboratório utilizando views, stored procedures e triggers
Prática de laboratório   utilizando views, stored procedures e triggersPrática de laboratório   utilizando views, stored procedures e triggers
Prática de laboratório utilizando views, stored procedures e triggersDaniel Maia
 

Mais procurados (20)

Java: Heranca e polimorfismo
Java: Heranca e polimorfismoJava: Heranca e polimorfismo
Java: Heranca e polimorfismo
 
Encapsulamento em Orientação a Objetos
Encapsulamento em Orientação a ObjetosEncapsulamento em Orientação a Objetos
Encapsulamento em Orientação a Objetos
 
Curso de Desenvolvimento Web - Módulo 03 - JavaScript
Curso de Desenvolvimento Web - Módulo 03 - JavaScriptCurso de Desenvolvimento Web - Módulo 03 - JavaScript
Curso de Desenvolvimento Web - Módulo 03 - JavaScript
 
Programação orientada a objetos
Programação orientada a objetosProgramação orientada a objetos
Programação orientada a objetos
 
Introdução a JavaScript
Introdução a JavaScriptIntrodução a JavaScript
Introdução a JavaScript
 
POO - Unidade 2 (parte 1) - Diagrama de Classe - Associação (versão 2)
POO   - Unidade 2 (parte 1) - Diagrama de Classe - Associação (versão 2)POO   - Unidade 2 (parte 1) - Diagrama de Classe - Associação (versão 2)
POO - Unidade 2 (parte 1) - Diagrama de Classe - Associação (versão 2)
 
Introdução a poo
Introdução a pooIntrodução a poo
Introdução a poo
 
POO - 19 - Elementos Estáticos
POO - 19 - Elementos EstáticosPOO - 19 - Elementos Estáticos
POO - 19 - Elementos Estáticos
 
POO - 10 - Herança
POO - 10 - HerançaPOO - 10 - Herança
POO - 10 - Herança
 
Introdução básica ao JavaScript
Introdução básica ao JavaScriptIntrodução básica ao JavaScript
Introdução básica ao JavaScript
 
JAVA - Herança
JAVA - HerançaJAVA - Herança
JAVA - Herança
 
Aula 04 PHP - Utilizando Funções e Manipulando Arquivos
Aula 04 PHP - Utilizando Funções e Manipulando ArquivosAula 04 PHP - Utilizando Funções e Manipulando Arquivos
Aula 04 PHP - Utilizando Funções e Manipulando Arquivos
 
Programação Orientada a objetos em Java
Programação Orientada a objetos em JavaProgramação Orientada a objetos em Java
Programação Orientada a objetos em Java
 
POO - Aula 10 - Polimorfismo
POO - Aula 10 - PolimorfismoPOO - Aula 10 - Polimorfismo
POO - Aula 10 - Polimorfismo
 
Linguagem C - Vetores
Linguagem C - VetoresLinguagem C - Vetores
Linguagem C - Vetores
 
Minicurso de JavaScript (Portuguese)
Minicurso de JavaScript (Portuguese)Minicurso de JavaScript (Portuguese)
Minicurso de JavaScript (Portuguese)
 
JAVA - ENCAPSULAMENTO
JAVA - ENCAPSULAMENTOJAVA - ENCAPSULAMENTO
JAVA - ENCAPSULAMENTO
 
Prática de laboratório utilizando views, stored procedures e triggers
Prática de laboratório   utilizando views, stored procedures e triggersPrática de laboratório   utilizando views, stored procedures e triggers
Prática de laboratório utilizando views, stored procedures e triggers
 
Diagrama de Classes
Diagrama de ClassesDiagrama de Classes
Diagrama de Classes
 
POO - 07 - Operadores do Java
POO - 07 - Operadores do  JavaPOO - 07 - Operadores do  Java
POO - 07 - Operadores do Java
 

Destaque

Aula 03 - Definições da linguagem Java
Aula 03 - Definições da linguagem JavaAula 03 - Definições da linguagem Java
Aula 03 - Definições da linguagem JavaDaniel Brandão
 
Fórmulas Condicionais em Excel
Fórmulas Condicionais em ExcelFórmulas Condicionais em Excel
Fórmulas Condicionais em ExcelDaniel Brandão
 
Aula 1 - Programação Dinâmica para Web
Aula 1 - Programação Dinâmica para WebAula 1 - Programação Dinâmica para Web
Aula 1 - Programação Dinâmica para WebDaniel Brandão
 
PHP Aula 06 - Include, Require e Querystring
PHP Aula 06 - Include, Require e QuerystringPHP Aula 06 - Include, Require e Querystring
PHP Aula 06 - Include, Require e QuerystringDaniel Brandão
 
Arrays (vetores) em Java
Arrays (vetores) em JavaArrays (vetores) em Java
Arrays (vetores) em JavaDaniel Brandão
 
Aula 02 - Sistemas, Dados, Informação
Aula 02 - Sistemas, Dados, InformaçãoAula 02 - Sistemas, Dados, Informação
Aula 02 - Sistemas, Dados, InformaçãoDaniel Brandão
 
Introdução à informática
Introdução à informáticaIntrodução à informática
Introdução à informáticaDaniel Brandão
 
Palestra - Profissão: Desenvolvedor
Palestra - Profissão: DesenvolvedorPalestra - Profissão: Desenvolvedor
Palestra - Profissão: DesenvolvedorDaniel Brandão
 
Excel - Fórmulas Básicas
Excel -  Fórmulas BásicasExcel -  Fórmulas Básicas
Excel - Fórmulas BásicasDaniel Brandão
 
Aula 01 - Introdução ao Sistema de Informação
Aula 01 - Introdução ao Sistema de InformaçãoAula 01 - Introdução ao Sistema de Informação
Aula 01 - Introdução ao Sistema de InformaçãoDaniel Brandão
 
Aula 04 Sistema de Informação - Processo e Requisitos de Sistemas
Aula 04 Sistema de Informação - Processo e Requisitos de SistemasAula 04 Sistema de Informação - Processo e Requisitos de Sistemas
Aula 04 Sistema de Informação - Processo e Requisitos de SistemasDaniel Brandão
 
Incluir para evoluir - Palestra
Incluir para evoluir - PalestraIncluir para evoluir - Palestra
Incluir para evoluir - PalestraDaniel Brandão
 
Aula 02 - Introdução ao PHP
Aula 02 - Introdução ao PHPAula 02 - Introdução ao PHP
Aula 02 - Introdução ao PHPDaniel Brandão
 
PHP Aula 05 - E-mails, Cookies e Sessoes
PHP Aula 05 - E-mails, Cookies e SessoesPHP Aula 05 - E-mails, Cookies e Sessoes
PHP Aula 05 - E-mails, Cookies e SessoesDaniel Brandão
 
Aula03 PHP - Estruturas Condicionais
Aula03 PHP - Estruturas CondicionaisAula03 PHP - Estruturas Condicionais
Aula03 PHP - Estruturas CondicionaisDaniel Brandão
 
Tipos de dados do MySQL 5
Tipos de dados do MySQL 5Tipos de dados do MySQL 5
Tipos de dados do MySQL 5Daniel Brandão
 
Apostila xp programação ágil
Apostila xp   programação ágilApostila xp   programação ágil
Apostila xp programação ágilDaniel Brandão
 
Apostila Multimidia Aplicada a Educação
Apostila Multimidia Aplicada a EducaçãoApostila Multimidia Aplicada a Educação
Apostila Multimidia Aplicada a EducaçãoDaniel Brandão
 
Notas sobre Sistemas Operacionais
Notas sobre Sistemas Operacionais Notas sobre Sistemas Operacionais
Notas sobre Sistemas Operacionais Daniel Brandão
 
Sistemas operacionais de redes II
Sistemas operacionais de redes IISistemas operacionais de redes II
Sistemas operacionais de redes IIDaniel Brandão
 

Destaque (20)

Aula 03 - Definições da linguagem Java
Aula 03 - Definições da linguagem JavaAula 03 - Definições da linguagem Java
Aula 03 - Definições da linguagem Java
 
Fórmulas Condicionais em Excel
Fórmulas Condicionais em ExcelFórmulas Condicionais em Excel
Fórmulas Condicionais em Excel
 
Aula 1 - Programação Dinâmica para Web
Aula 1 - Programação Dinâmica para WebAula 1 - Programação Dinâmica para Web
Aula 1 - Programação Dinâmica para Web
 
PHP Aula 06 - Include, Require e Querystring
PHP Aula 06 - Include, Require e QuerystringPHP Aula 06 - Include, Require e Querystring
PHP Aula 06 - Include, Require e Querystring
 
Arrays (vetores) em Java
Arrays (vetores) em JavaArrays (vetores) em Java
Arrays (vetores) em Java
 
Aula 02 - Sistemas, Dados, Informação
Aula 02 - Sistemas, Dados, InformaçãoAula 02 - Sistemas, Dados, Informação
Aula 02 - Sistemas, Dados, Informação
 
Introdução à informática
Introdução à informáticaIntrodução à informática
Introdução à informática
 
Palestra - Profissão: Desenvolvedor
Palestra - Profissão: DesenvolvedorPalestra - Profissão: Desenvolvedor
Palestra - Profissão: Desenvolvedor
 
Excel - Fórmulas Básicas
Excel -  Fórmulas BásicasExcel -  Fórmulas Básicas
Excel - Fórmulas Básicas
 
Aula 01 - Introdução ao Sistema de Informação
Aula 01 - Introdução ao Sistema de InformaçãoAula 01 - Introdução ao Sistema de Informação
Aula 01 - Introdução ao Sistema de Informação
 
Aula 04 Sistema de Informação - Processo e Requisitos de Sistemas
Aula 04 Sistema de Informação - Processo e Requisitos de SistemasAula 04 Sistema de Informação - Processo e Requisitos de Sistemas
Aula 04 Sistema de Informação - Processo e Requisitos de Sistemas
 
Incluir para evoluir - Palestra
Incluir para evoluir - PalestraIncluir para evoluir - Palestra
Incluir para evoluir - Palestra
 
Aula 02 - Introdução ao PHP
Aula 02 - Introdução ao PHPAula 02 - Introdução ao PHP
Aula 02 - Introdução ao PHP
 
PHP Aula 05 - E-mails, Cookies e Sessoes
PHP Aula 05 - E-mails, Cookies e SessoesPHP Aula 05 - E-mails, Cookies e Sessoes
PHP Aula 05 - E-mails, Cookies e Sessoes
 
Aula03 PHP - Estruturas Condicionais
Aula03 PHP - Estruturas CondicionaisAula03 PHP - Estruturas Condicionais
Aula03 PHP - Estruturas Condicionais
 
Tipos de dados do MySQL 5
Tipos de dados do MySQL 5Tipos de dados do MySQL 5
Tipos de dados do MySQL 5
 
Apostila xp programação ágil
Apostila xp   programação ágilApostila xp   programação ágil
Apostila xp programação ágil
 
Apostila Multimidia Aplicada a Educação
Apostila Multimidia Aplicada a EducaçãoApostila Multimidia Aplicada a Educação
Apostila Multimidia Aplicada a Educação
 
Notas sobre Sistemas Operacionais
Notas sobre Sistemas Operacionais Notas sobre Sistemas Operacionais
Notas sobre Sistemas Operacionais
 
Sistemas operacionais de redes II
Sistemas operacionais de redes IISistemas operacionais de redes II
Sistemas operacionais de redes II
 

Semelhante a Implementando herança em Java para modelar um sistema bancário

Programação Orientada a Objetos parte 1
Programação Orientada a Objetos parte 1Programação Orientada a Objetos parte 1
Programação Orientada a Objetos parte 1Elaine Cecília Gatto
 
Java: Classes Abstratas, Anônimas, Interface
Java: Classes Abstratas, Anônimas, InterfaceJava: Classes Abstratas, Anônimas, Interface
Java: Classes Abstratas, Anônimas, InterfaceArthur Emanuel
 
Aula 4 herança, sobrescrita de métodos, construtor
Aula 4   herança, sobrescrita de métodos, construtorAula 4   herança, sobrescrita de métodos, construtor
Aula 4 herança, sobrescrita de métodos, construtorRafael Pinheiro
 
Programação C - Aula 1
Programação C - Aula 1Programação C - Aula 1
Programação C - Aula 1Filipo Mór
 
2009_2Sem.POOII.Ciencia Aula2 Revisao De Classes E Objetos
2009_2Sem.POOII.Ciencia Aula2   Revisao De Classes E Objetos2009_2Sem.POOII.Ciencia Aula2   Revisao De Classes E Objetos
2009_2Sem.POOII.Ciencia Aula2 Revisao De Classes E Objetosguest9b4c7f
 
Java: Introdução à Orientação a Objetos
Java: Introdução à Orientação a ObjetosJava: Introdução à Orientação a Objetos
Java: Introdução à Orientação a ObjetosArthur Emanuel
 
Aprendizado de máquina
Aprendizado de máquinaAprendizado de máquina
Aprendizado de máquinaparasite
 
Java Básico :: Orientação a objetos
Java Básico :: Orientação a objetosJava Básico :: Orientação a objetos
Java Básico :: Orientação a objetosWesley R. Bezerra
 
Java e Orientação a Objetos - Aula 1 Aceleradora
Java e Orientação a Objetos - Aula 1 AceleradoraJava e Orientação a Objetos - Aula 1 Aceleradora
Java e Orientação a Objetos - Aula 1 AceleradoraJulio Farah
 
Design Patterns on Rails
Design Patterns on RailsDesign Patterns on Rails
Design Patterns on Railstchandy
 
Java - Visão geral e Exercícios
Java - Visão geral e ExercíciosJava - Visão geral e Exercícios
Java - Visão geral e ExercíciosArthur Emanuel
 
Paradigmas de Programação - Imperativo, Orientado a Objetos e Funcional
Paradigmas de Programação - Imperativo, Orientado a Objetos e FuncionalParadigmas de Programação - Imperativo, Orientado a Objetos e Funcional
Paradigmas de Programação - Imperativo, Orientado a Objetos e FuncionalGustavo Coutinho
 
Desenvolvimento Web com PHP - Aula 3
Desenvolvimento Web com PHP - Aula 3Desenvolvimento Web com PHP - Aula 3
Desenvolvimento Web com PHP - Aula 3Thyago Maia
 
Java & orientação a objetos
Java & orientação a objetosJava & orientação a objetos
Java & orientação a objetosMateus Parente
 

Semelhante a Implementando herança em Java para modelar um sistema bancário (20)

POO - Aula 003
POO - Aula 003POO - Aula 003
POO - Aula 003
 
Programação Orientada a Objetos parte 1
Programação Orientada a Objetos parte 1Programação Orientada a Objetos parte 1
Programação Orientada a Objetos parte 1
 
Java: Classes Abstratas, Anônimas, Interface
Java: Classes Abstratas, Anônimas, InterfaceJava: Classes Abstratas, Anônimas, Interface
Java: Classes Abstratas, Anônimas, Interface
 
Aula 3.ppt
Aula 3.pptAula 3.ppt
Aula 3.ppt
 
Atividade 3
Atividade 3Atividade 3
Atividade 3
 
POO.pdf
POO.pdfPOO.pdf
POO.pdf
 
Aula 4 herança, sobrescrita de métodos, construtor
Aula 4   herança, sobrescrita de métodos, construtorAula 4   herança, sobrescrita de métodos, construtor
Aula 4 herança, sobrescrita de métodos, construtor
 
Programação C - Aula 1
Programação C - Aula 1Programação C - Aula 1
Programação C - Aula 1
 
2009_2Sem.POOII.Ciencia Aula2 Revisao De Classes E Objetos
2009_2Sem.POOII.Ciencia Aula2   Revisao De Classes E Objetos2009_2Sem.POOII.Ciencia Aula2   Revisao De Classes E Objetos
2009_2Sem.POOII.Ciencia Aula2 Revisao De Classes E Objetos
 
Java: Introdução à Orientação a Objetos
Java: Introdução à Orientação a ObjetosJava: Introdução à Orientação a Objetos
Java: Introdução à Orientação a Objetos
 
Aprendizado de máquina
Aprendizado de máquinaAprendizado de máquina
Aprendizado de máquina
 
Aula Herança
Aula HerançaAula Herança
Aula Herança
 
Java Básico :: Orientação a objetos
Java Básico :: Orientação a objetosJava Básico :: Orientação a objetos
Java Básico :: Orientação a objetos
 
Java e Orientação a Objetos - Aula 1 Aceleradora
Java e Orientação a Objetos - Aula 1 AceleradoraJava e Orientação a Objetos - Aula 1 Aceleradora
Java e Orientação a Objetos - Aula 1 Aceleradora
 
Design Patterns on Rails
Design Patterns on RailsDesign Patterns on Rails
Design Patterns on Rails
 
Java - Visão geral e Exercícios
Java - Visão geral e ExercíciosJava - Visão geral e Exercícios
Java - Visão geral e Exercícios
 
Paradigmas de Programação - Imperativo, Orientado a Objetos e Funcional
Paradigmas de Programação - Imperativo, Orientado a Objetos e FuncionalParadigmas de Programação - Imperativo, Orientado a Objetos e Funcional
Paradigmas de Programação - Imperativo, Orientado a Objetos e Funcional
 
Sistema acadêmico
Sistema acadêmicoSistema acadêmico
Sistema acadêmico
 
Desenvolvimento Web com PHP - Aula 3
Desenvolvimento Web com PHP - Aula 3Desenvolvimento Web com PHP - Aula 3
Desenvolvimento Web com PHP - Aula 3
 
Java & orientação a objetos
Java & orientação a objetosJava & orientação a objetos
Java & orientação a objetos
 

Mais de Daniel Brandão

Aula 2 - POO: Fundamentos da linguagem Java
Aula 2 - POO: Fundamentos da linguagem JavaAula 2 - POO: Fundamentos da linguagem Java
Aula 2 - POO: Fundamentos da linguagem JavaDaniel Brandão
 
Sapiens - Feedback de Prática Docente com Google Forms
Sapiens - Feedback de Prática Docente com Google FormsSapiens - Feedback de Prática Docente com Google Forms
Sapiens - Feedback de Prática Docente com Google FormsDaniel Brandão
 
{Palestra} Criação Web com Frameworks Front-end
{Palestra} Criação Web com Frameworks Front-end{Palestra} Criação Web com Frameworks Front-end
{Palestra} Criação Web com Frameworks Front-endDaniel Brandão
 
Aula 3 Sistemas de Informação - Tipos de SI
Aula 3 Sistemas de Informação - Tipos de SIAula 3 Sistemas de Informação - Tipos de SI
Aula 3 Sistemas de Informação - Tipos de SIDaniel Brandão
 
Criação Web com Bootstrap e Material Design
Criação Web com Bootstrap e Material DesignCriação Web com Bootstrap e Material Design
Criação Web com Bootstrap e Material DesignDaniel Brandão
 
Banco de dados - Aula 1 SQL
Banco de dados - Aula 1 SQLBanco de dados - Aula 1 SQL
Banco de dados - Aula 1 SQLDaniel Brandão
 
Banco de dados - Mapeamento MER - Relacional
Banco de dados - Mapeamento MER - RelacionalBanco de dados - Mapeamento MER - Relacional
Banco de dados - Mapeamento MER - RelacionalDaniel Brandão
 
Introdução a Informática
Introdução a InformáticaIntrodução a Informática
Introdução a InformáticaDaniel Brandão
 
Funções e Fórmulas em Excel 2010
Funções e Fórmulas em Excel 2010Funções e Fórmulas em Excel 2010
Funções e Fórmulas em Excel 2010Daniel Brandão
 
Heurística, Principios e Usabilidade na web
Heurística, Principios e Usabilidade na webHeurística, Principios e Usabilidade na web
Heurística, Principios e Usabilidade na webDaniel Brandão
 

Mais de Daniel Brandão (11)

Aula 2 - POO: Fundamentos da linguagem Java
Aula 2 - POO: Fundamentos da linguagem JavaAula 2 - POO: Fundamentos da linguagem Java
Aula 2 - POO: Fundamentos da linguagem Java
 
Sapiens - Feedback de Prática Docente com Google Forms
Sapiens - Feedback de Prática Docente com Google FormsSapiens - Feedback de Prática Docente com Google Forms
Sapiens - Feedback de Prática Docente com Google Forms
 
{Palestra} Criação Web com Frameworks Front-end
{Palestra} Criação Web com Frameworks Front-end{Palestra} Criação Web com Frameworks Front-end
{Palestra} Criação Web com Frameworks Front-end
 
Aula 3 Sistemas de Informação - Tipos de SI
Aula 3 Sistemas de Informação - Tipos de SIAula 3 Sistemas de Informação - Tipos de SI
Aula 3 Sistemas de Informação - Tipos de SI
 
Criação Web com Bootstrap e Material Design
Criação Web com Bootstrap e Material DesignCriação Web com Bootstrap e Material Design
Criação Web com Bootstrap e Material Design
 
Banco de dados - Aula 1 SQL
Banco de dados - Aula 1 SQLBanco de dados - Aula 1 SQL
Banco de dados - Aula 1 SQL
 
Banco de dados - Mapeamento MER - Relacional
Banco de dados - Mapeamento MER - RelacionalBanco de dados - Mapeamento MER - Relacional
Banco de dados - Mapeamento MER - Relacional
 
Servlets e JSP
Servlets e JSPServlets e JSP
Servlets e JSP
 
Introdução a Informática
Introdução a InformáticaIntrodução a Informática
Introdução a Informática
 
Funções e Fórmulas em Excel 2010
Funções e Fórmulas em Excel 2010Funções e Fórmulas em Excel 2010
Funções e Fórmulas em Excel 2010
 
Heurística, Principios e Usabilidade na web
Heurística, Principios e Usabilidade na webHeurística, Principios e Usabilidade na web
Heurística, Principios e Usabilidade na web
 

Implementando herança em Java para modelar um sistema bancário

  • 1.
  • 3. Vamos imaginar o funcionamento do sistema acadêmico do Unipê, que controla o cadastro de alunos, professores e funcionários. Herança 4
  • 4. Vamos imaginar o funcionamento de um sistema acadêmico do Unipê, que controla o cadastro de alunos, professores e funcionários Herança 5
  • 5. Conceito • Imagine se um dia precisarmos adicionar uma nova informação(CPF, por exemplo), para todas as Pessoas do controle acadêmico? • Precisaríamos ir de classe em classe adicionando a informação do CPF. Herança 6
  • 6. Conceito • Ao modelar um conjunto de classes, podemos encontrar classes semelhantes na estrutura e no comportamento. • Existe uma maneira, em Java, de relacionarmos uma classe de tal maneira que uma delas herda tudo que a outra tem. Herança 7
  • 7. Então, como implementar? •A ideia central de herança é que novas classes são criadas a partir de classes já existentes. • Subclasse herda de uma Superclasse • Subclasse é mais específica que a Superclasse •Herança é uma técnica para prover suporte a especialização • Classes mais abaixo: especializadas • Classes mais acima: genéricas Herança 8
  • 8. Representação Pessoa -nome -email -telefone -idade -sexo Herança 9 Professor -salario -disciplina Aluno -matricula -notas Funcionario -salario Em todo momento que criarmos um objeto do tipo Professor, ou Aluno, ou Funcionário, este objeto possuirá também os atributos e métodos definidos na classe Pessoa, pois agora ele é umaPessoa
  • 9. Sobreposição • Pode-se modificar algum método da minha superclasse? Sim, através da sobreposição! • Métodos implementados previamente em uma superclasse podem ser redefinidos por qualquer subclasse Herança 10 Para isso, mantém-se a mesma assinatura do método herdado, redefinindo apenas o corpo do método
  • 10. Tipos de Herança  Herança pura  métodos genéricos são sobrepostos  Extensão  novos comportamentos são adicionados nas classes de especialização (métodos genéricos herdados) • Por exemplo: Herança 11 Forma +desenha() +apaga() Quadrado +desenha() +apaga() Circulo +desenha() +apaga() +defineRaio() Herança Pura Extensão
  • 11. Posso herdar de várias Classes? •Cada subclasse possui uma única superclasse • A isso, chamamos de herança simples • Em algumas linguagens, é possível herdar a partir de diversas superclasses (como em C++) • Java não permite herança múltipla com classes Herança 12
  • 12. Recapitulando... • Se B é uma subclasse de A, então: • Os objetos de B suportam todas as operações suportadas pelos objetos de A, exceto aquelas que foram redefinidas • Os objetos de B incluem todas as variáveis de instância de B + todas as variáveis de instância de A • Métodos declarados como private não serão herdados • Construtores também não são herdados • Serão chamados (em cascata) na construção de objetos especializados(super()). Herança 13
  • 13. Como acessar os atributos que herdamos? Herança 14
  • 14. Como acessar os atributos que herdamos? • Se deixarmos os atributos como public, qualquer um poderia alterar os atributos dos objetos deste tipo. • Existe um outro modificador de acesso, o protected, que fica entre o private e o public. Um atributo protected só pode ser acessado (visível) pela própria classe e por suas subclasses . Herança 15
  • 15. Como implementar nosso primeiro exemplo? Herança 16
  • 16. Antes de aplicar Herança Herança 17
  • 18. Exercício 1 A) Seguindo o modelo do exemplo, vamos criar uma classe chamada Pessoa. Ela deverá ter as características nome, email, telefone, idade, sexo. B) Teremos também 3 tipos de pessoas, como: Aluno que terá ainda Matricula e a Nota. Professor terá como atributos adicionais seu Salário e Disciplina. E a Secretária terá como adicional apenas o salário. Crie uma classe para cada um. C) Por ultimo, vamos criar uma classe para testar cada um dos atributos. Herança 19
  • 19. • Vamos supor um sistema de um banco, que controle seus clientes e suas contas... Estudo de Caso 2 > Sistema Bancário
  • 20. Conta Poupança • Cliente • Número • DataAbertura • Saldo • TaxaRendimento • Creditar • Debitar • CreditarRendimento Conta Corrente • Cliente • Número • DataAbertura • Saldo • TaxaManutencao • TaxaOperacao • Creditar • Debitar • DebitarManutenção Sistema Bancário > SisBank
  • 21. Conta Poupança Conta Corrente Sistema Bancário > SisBank O que existe de semelhante entre estes dois? R: São Contas!
  • 22. Conta Poupança • Cliente • Número • DataAbertura • Saldo • TaxaRendimento Creditar Debitar CreditarRendimento Conta Corrente • Cliente • Número • DataAbertura • Saldo • TaxaManutencao • TaxaOperacao Creditar Debitar DebitarManutenção Sistema Bancário > SisBank
  • 23. • Com a herança é possível identificar que as classes ContaCorrente e ContaPoupança irão aproveitar tudo que está na classe Conta! Implementando Herança
  • 24. •Mas e o Construtor da subclasse, Como fica? •Precisamos chamar o construtor da superclasse! • Operador: super Implementando Herança
  • 25. •Detalhe importante: • A classe Conta pode existir no nosso sistema bancário? SisBank
  • 26. •Detalhe importante: • A classe Conta pode “existir” no nosso sistema bancário? •R: Não, essa é uma classe que apenas reúne características semelhantes entre ContaCorrente e ContaPoupanca. A classe Conta não pode ser instanciada! SisBank
  • 27. •Como implementar para que a classe Conta não possa ser instanciada? •R: Definindo-a como “classe abstrata”! Classe Abstrata
  • 28. •O que é uma classe Abstrata? •É uma classe que não pode ser instanciada, ou seja, não gera objetos; •É utilizada apenas como superclasse em hierarquia de heranças; •Também é conhecida como “superclasse abstrata”; •Reúne características semelhantes de classes. •Operador: abstract Classe Abstrata
  • 29. • No nosso sistema bancário, o método debitar irá se comportar de maneira diferente para as implementações em ContaCorrente e ContaPoupanca: • Corrente: ao solicitar para se debitar um valor, deve-se também debitar o valor da taxa de operação da conta; • Poupança: ao solicitar para se debitar um valor, deve-se verificar se a conta já possui mais de um ano de abertura; SisBank
  • 30. •Como garantir que as classes herdeiras irão implementar um método? • R: Métodos abstratos! • Não possui implementação; • Toda classe herdeira direta deverá obrigatoriamente implementar. • Esse é um conceito do Polimorfismo: o mesmo nome e assinatura de método podem ser utilizados para realizar diferentes ações, dependendo da implementação do método da classe! Métodos Abstratos
  • 31. Exercício 2 A) Vamos criar uma classe Conta, que possua um saldo, os métodos para pegar saldo, creditar e debitar B) Adicione um método na classe Conta, que atualiza essa conta de acordo com uma taxa percentual fornecida C) Crie duas subclasses da classe Conta: ContaCorrente e ContaPoupanca. Ambas terão o método atualiza sobrescrito: A ContaCorrente deve atualizar-se com o dobro da taxa e a ContaPoupanca deve atualizar-se com o triplo da taxa • D) Além disso, a ContaCorrente deve reescrever o método creditar, a fim de retirar uma taxa bancária de dez centavos de cada depósito 32Herança