Buscar

IOO_Aula 7_Herança

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 16 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 16 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 16 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

Implementação Orientada a Objetos - IOO
Marcia Bissaco
Universidade de Mogi das Cruzes
1
1/2021
1
Em um diagrama de classes, podem ser observadas algumas associações entre as classes:
Ver exemplo a seguir
Associação entre classes
2
2
Modelagem de classes de um Sistema para clínica médica
3
Herança, Sobrescrita de métodos e polimorfismo
4
4
Herança (ou generalização), é a possibilidade de definir um objeto que é também (is-a) uma instância da classe mãe
 A classe filha herda todas as características (métodos e atributos que não são privados) da classe mãe, também podendo definir os seus próprios.
A classe mãe é chamada de superclasse ou classe primitiva.
A classe filha é chamada de subclasse ou classe derivada.
Herança
Exemplo
Herança
Exemplo Herança e polimorfismo
Herança
A classe Funcionario herda de Pessoa e também implementa características próprias.
As classes Vendedor, Consultor e Gerente herdam as características de Funcionario e de Pessoa, mas também implementam características próprias.
Existe uma implementação diferente do método calcularSalario para cada uma das classes derivadas.
A classe Vendedor possui 6 atributos e 3 métodos.
Herança, sobrescrita de métodos e polimorfismo
Herança
A classe Funcionario herda de Pessoa e também implementa características próprias.
As classes Vendedor, Consultor e Gerente herdam as características de Funcionario e de Pessoa, mas também implementam características próprias.
Existe uma implementação diferente do método calcularSalario para cada uma das classes derivadas.
A classe Vendedor possui 6 atributos e 3 métodos.
Por que usar herança?
A herança ajuda a remover redundância de dados e comportamentos de classes que têm características em comum.
Também ajuda a deixar o código mais limpo e organizado, e facilita o reuso.
Sem herança, as classes do exemplo anterior ficariam assim:
Herança
A classe derivada deve fazer referência à superclasse usando a palavra reservada extends.
Se a superclasse quiser permitir que as classes derivadas acessem seus atributos, estes devem ter o modificador de acesso protected, ao invés de private.
Se a classe derivada possuir um método com a mesma assinatura da superclasse, este método sobrescreve o método original, ou seja, será chamado em seu lugar (sobrescrita de métodos).
Herança (implementação)
Exemplo
Herança (implementação)
public class Pessoa{
protected String nome;
protected int rg;
public Pessoa () {}
public Pessoa (String n, int r) {
 nome = n;
 rg = r;}
public void setNome(String nome){
 this.nome = nome;}
public void setRg(String Rg){
 this.rg = rg;}
public String getNome() { return nome;}
public int getRg () {return rg;}
public boolean cadastrar() {return true;} //deixa assim por enquanto
}}
public class Funcionario extends Pessoa {
protected double salario;
protected int registro;
public Funcionario () { super();}
public Funcionario (String n, int r, int rf) {
 super (n, r);
 registro = rf;}
public void setRegistro(int registro)
{ this.registro = registro;}
public int getRegistro() {return registro;}
public double getSalario() {return salario;}
public double calcularSalario() {
	return 678; //um valor inicial
}
public boolean cadastrar() {
return true;// deixa assim por enquanto}
public boolean demitir() {
return true; // deixa assim por enquanto}
 }
Herança (implementação)
public class Vendedor extends Funcionario {
private double comissao;
private int numeroVendas;
 
 public Vendedor () { super(); }
 public Vendedor (String n, int r, int rf, double c, int nv) {
 super (n,r, rf);
 comissao = c;
 numeroVendas = nv;}
 // falta codificar os métodos de acesso
 public void setComissao(double comissão){
 this.comissão comissão;}
 public double getComissao(){ return comissao;}
 
 public void setNumeroVendas(int numeroVendas){
 this.numeroVendas = numeroVendas;}
 public int getNumeroVendas(){
 return numeroVendas;}
 public double calcularSalario() {
 return numeroVendas * comissao;}
 }
Herança (implementação)
public class Consultor extends Funcionario {
private double valorHora; 
private int horasTrabalhadas;
 public Consultor () { super(); }
 public Consultor (String n, int r, int rf, double vH, int hT) {
 super (n,r, rf);
 valorHora = vH;
 horasTrabalhadas = hT;}
//falta codificar os métodos de acesso
public double calcularSalario() { 
 return horasTrabalhadas * valorHora;}
 } // fim da classe consultor
 public class Gerente extends Funcionario {
private double bonificacao;
//falta codificar os métodos construtores e métodos de acesso
public double calcularSalario() {
	return super.calcularSalario() * 15 + bonificacao;
} }
13
Os objetos das classes Vendedor, Consultor e Gerente também são objetos da classe Funcionario.
É possível tratar um objeto Vendedor tanto pelo tipo Vendedor quanto pelo tipo Funcionario, o que chamamos de polimorfismo.
Polimorfismo é a capacidade de um objeto identificado por uma classe poder assumir o comportamento definido por outra classe, através da redefinição (sobrescrita) de métodos.
Funcionario obj;		// declara obj do tipo Funcionario
obj = new Vendedor();	// instancia um novo Vendedor em obj
obj.setNome(“Maria”); // chama o setNome da classe Funcionario
obj.calcularSalario();	// chama calcularSalario da classe Vendedor	
Herança e Polimorfismo
15
Herança e Polimorfismo (Implementação)
public class TestaHeranca{
 public static void main (String [] args){
Funcionario obj;		// declara obj do tipo Funcionario
obj = new Vendedor();	// instancia um novo Vendedor em obj
obj.setNome(“Maria”); // chama o setNome da classe Funcionario
obj.calcularSalario();	// chama calcularSalario da classe Vendedor
System.out.println( “nome: ” + obj.getNome()); 
 System.out.println( “nome: ” + obj.getSalario()); 
 Vendedor obj2= new Vendedor(); 
 
 }
}
15
 Desafio: implementar este diagrama.
16
Herança (Implementação)
As classes Medico e Paciente herdam de Pessoa e também implementam características próprias.
Neste diagrama não representa o polimorfismo. Contudo, poderia ser usado o polimorfismo aqui? 
16

Outros materiais