Advertisement

[Exercícios] Polimorfismo #1



1 - Defina o que é polimorfismo e qual sua importância no mundo Orientado a Objetos?

O polimorfismo permite que os programadores definam comportamentos diferentes para um mesmo método, tornando o código mais legível e facilitando a manutenção. Além disso, dados os tipos de polimorfismo é possível que dentro de uma herança um comportamento seja reescrito a medida que a classe se torna mais específica. Isso permite que seja criada uma abstração mais próxima mundo real facilitando a compreensão do código como um todo.

2 - Quais são os tipos de polimorfismos que existem em Orientação a Objetos

Existem dois tipos de polimorfismo: vertical e horizontal. O Polimorfismo horizontal acontece quando um método é sobrecarregado com diferentes formas.
Por exemplo:

    public void andar(int passos){}
    public void andar(int passos, String direcao){}
    
Já o polimorfismo vertical acontece dentro de uma herança, ou seja, um método que foi escrito na classe pai pode ser sobrescrito na classe filha. Isso permite que sejam definidos comportamentos específicos para cada classe a medida que ela se especializa.

    public class carro{
        public void trocarMarcha(){
        	// comportamento básico
        }
    }
    
    
    public class gol extends carro{
        public void trocarMarcha(){
        	// comportamento especializado
        }
    }
    

3 - Considere a classe:


public carro() {

    private int velocidade = 1;

    public void acelera() {
        velocidade += 1;
    }

    public void acelera(int aceleracao) {
        velocidade += aceleracao;
    }

}
a) Qual tipo de polimorfismo é apresentado?

Polimorfismo horizontal

b) Quais são os sinais que indicam a presença de Polimorfismo?

Os métodos Acelera() possuem o mesmo nome e estão na mesma classe.



4 - Considere as seguintes assinaturas de métodos:


  	public String calculaSalario(int diasTrabalhados, String Cargo){
         ...
    }
    
	public double calculaSalario(int diasTrabalhados, String Cargo){
         ...
    }

  
Estes métodos podem ser considerados polimórficos? Por quê?

Não podem. A mudança no tipo de retorno não torna um método sobrecarregável


5 - Considere o seguinte diagrama de classes:


 

a) Se considerarmos ainda a existência de um método denominado calculaSalario() em ambas as classes. Que tipo de polimorfismo foi aplicado?

Polimorfismo vertical

b) Construa um software que implementa a classe funcionário com: 

Funcionário: 
  • id; 
  • nome; 
  • alocacao; 

Gerente 
  • id;
  • nome;
  • alocacao;
  • quantidadeDeSubordinados;

c) De acordo com o diagrama, um gerente também é um funcionário. Implemente o método calcula Salario() para que um gerente ganhe uma bonificação de 40% do seu salário utilizando o polimorfismo?



    
	public class Funcionario(){
       public int id;
       public String nome;
       public String alocacao;
       public double salario;
       
    }
    
    public class Gerente(){
       public int id;
       public String nome;
       public String alocacao;
       public double salario;
       public int quantidadeDeSubordinados;
       
       public double calculaSalario(){
           return salario * 1.40;
       }
    }
    
    

Nenhum comentário

Conta pra mim sua opinião!

Fale comigo