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

Ver Teoria

Enunciado

Crie a classe C a r r o P a s s e i o , derivada das classes V e i c u l o e M o t o r . Inclua atributos do tipo string m o d e l o e c o r . Crie um construtor para esta classe que chame explicitamente o construtor das classes base e um método print, que imprime o conteúdo da classe. Teste sua classe.

Passo 1

E aí, pessoal, vamos resolver a questão

Essa é uma questão de herança dupla! Vamos desenvolver uma classe chamada C a r r o P a s s e i o com base em duas classes mães M o t o r e V e i c u l o .

A classe C a r r o P a s s e i o vai herdar duas classes, e adicionar dois atributos do tipo string e um novo método. Então, vamos escrever o cabeçalho do código incluindo < s t r i n g >

Também vamos precisar escrever o código de cada uma das classes mães dentro do nosso código. Vamos aproveitar para entender essas classes enquanto digitamos elas no nosso código.

A classe M o t o r possui dois atributos protegidos: N u m C i l i n d r o s e P o t e n c i a . E para inicializar os atributos é utilizado um método construtor

A classe V e í c u l o é bem similar. Também possui dois atributos protegidos: P e s o e V e l o c M a x , e também utiliza um método construtor para inicializar os atributos.

Vixi! Mal começamos a questão é já temos mais de 20 linhas de código 🙃. Mas está tranquilo, porque até aqui a gente só copiou o enunciado.

Passo 2

Agora sim, vamos de fato pra questão: desenvolver a classe C a r r o P a s s e i o .

Aqui nós vamos executar uma herança dupla. Mas não é nada difícil, pra efetuar herança múltipla é assim:

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

No nosso caso temos apenas duas mães, então fica assim:

E prontinho. Agora a classe C a r r o P a s s e i o tem acesso a todos os atributos e métodos das classes mães.

Continuando, temos que declarar dois novos atributos para representar a cor e modelo do carro:

Agora vem a parte mais interessante da questão. Para inicializar todos os atributos da nossa classe nós podemos fazer um construtor. E não só isso, a gente pode fazer chamada aos construtores de todas as classes mães:

F i l h a     t i p o s   p a r a m s     : M a e 1   p a r a m s ,   M a e 2   p a r a m s   , … ,   M a e N (   p a r a m s   )

Aqui a gente tem apenas duas classes mães, então fica assim:

E sem dificuldade nós já inicializamos todos os parâmetros herdados! Agora é só a gente inicializar a cor e o modelo do carro:

E está quase acabando. A questão também pede que a classe possua um método que imprima o conteúdo. Então vamos criar o método P r i n t ( ) que simplesmente utiliza o c o u t para imprimir todos os atributos.

Passo 3

Agora é hora de testar! Vamos criar um objeto do tipo carro e inicializar com alguns atributos. E depois utilizamos o método P r i n t ( )

E o resultado é:

E prontinho. Questão concluída!

Resposta