Exercícios Resolvidos de Mais herança e mais polimorfismo

Ver Teoria

Enunciado

De acordo com a classe I n g r e s s o que possui um valor em reais e um método i m p r i m e V a l o r ( )

  1. Crie uma classe V I P , derivada de I n g r e s s o , que herda Ingresso e possui um valor adicional. Crie um método que retorne o valor do ingresso V I P (com o adicional incluído).
  2. Crie uma classe C a m a r o t e , que herda de V I P , possui a localização do ingresso, e mais um valor adicional.

Passo 1

Bora lá, galera.

Essa é uma questão de hierarquia de classes. A questão fornece a classe I n g r e s s o que é herdada pela classe V I P que depois é herdada pela classe C a m a r o t e .

A questão já entregou pra gente a classe ingresso prontinha, com um atributo v a l o r para armazenar o valor do ingresso, um método construtor para inicializar o atributo, e o método i m p r i m e V a l o r .

Um detalhe, é que na classe I n g r e s s o nós temos um método virtual i m p r i m e V a l o r . É importante que esse método seja virtual, pois em cada classe o valor do ingresso irá mudar, e a frase que acompanha o método também, ou seja, em cada classe vamos executar polimorfismo.

Mas antes de tudo, vamos escrever o código do enunciado no nosso programa

Passo 2

Belezinha, agora vamos desenvolver a classe V I P . Primeiro vamos efetuar a herança.

c l a s s   N o m e F i l h a   : p u b l i c   N o m e M a e

E prontinho. Agora temos acesso a todos os métodos e atributos da classe mãe.

O ingresso VIP possui um valor adicional, então vamos criar um atributo a d i c i o n a l V I P para conter esse valor.

Em seguida vamos desenvolver o construtor da classe V I P . Uma ideia legal é a gente invocar o construtor da classe mãe.

C o n s t r u t o r F i l h a   t i p o s   p a r a m e t r o s     :   C o n s t r u t o r M a e (   p a r a m e t r o s   )

Então definimos o construtor da classe mãe para receber os parâmetros V a l o r e a d d V I P , e em seguida passamos o parâmetro V a l o r pro construtor da classe mãe. Dentro das chaves, vamos inicializar o atributo a d i c i o n a l V I P e atualizar o valor do ingresso

Beleza, agora vamos dar uma olhada no método i m p r i m e V a l o r ( ) . Usando polimorfismo, vamos reescrever o método imprime valor para atualizar a mensagem impressa:

E terminamos a classe V I P .

Passo 3

Vamos começar efetuando a herança. A classe C a m a r o t e é filha da classe V i P :

Essa classe possui um novo atributo que representa mais um valor adicional a d i c i o n a l S u p e r i o r .

Show, em seguida vamos cuidar do construtor da classe C a m a r o t e . Precisamos receber os três parâmetros V a l o r , a d d V I P e a d d C a m a r o t e . Em seguida, vamos passar os parâmetros V a l o r e a d d V i p para o construtor da classe V I P

E é aqui que a magica acontece! O construtor da classe C a m a r o t e S u p e r i o chama o construtor da classe V I P que em seguida chama o construtor da classe I n g r e s s o 🤯. Essa reação em cadeia deve ser considerada na hora de desenvolver os construtores.

Leve em consideração que o construtor da classe VIP já faz a inicialização do atributo herdado a d i c i o n a l V I P , e também já atualiza o atributo v a l o r . Então, o que precisamos fazer é inicializar o atributo a d i c i o n a l S u p e r i o r , e fazer uma nova atualização no atributo v a l o r com o valor adicional do camarote

E pra finalizar a classe é só a gente

E assim finalizamos a classe C a m a r o t e .

Resposta