Exercícios Resolvidos de Herança

Ver Teoria

Enunciado

Faça um programa que representa formas geométricas utilizando herança simples, seguindo o modelo proposto.

Se necessário, crie novos métodos para facilitar o código.

Crie um programa que instancie objetos das duas classes.

Passo 1

E aí, galera!

Essa é uma questão de herança. O diagrama mostra que temos a classe mãe F o r m a e a classe filha Q u a d r i l a t e r o .

A melhor forma de resolver exercícios de herança é desenvolver primeiro a classe mãe, e posteriormente a classe filha.

A classe F o r m a possui três atributos privados, a string n o m e , e os inteiros p o s X e p o s Y que representam a posição da forma. Já a classe Q u a d r i l a t e r o possui todos os atributos e métodos herdados da classe mãe além de possuir mais dois atributos inteiros l a r g u r a e c o m p r i m e n t o e mais dois métodos p e r i m e t r o (   ) e a r e a (   )

Depois de crias das duas classes, vamos precisar instanciar um objeto de cada classe para testar o nosso código. Então vamos precisar de métodos extras para acessar os atributos privados e protegidos a partir da m a i n ( )

Mas antes, vamos escrever o cabeçalho. Como temos um atributo do tipo string então será necessário o incluir a biblioteca < s t r i n g >

Passo 2

Beleza, então vamos construir a classe F o r m a .

A classe F o r m a possui três atributos protegidos, a string n o m e e os inteiros p o s X e p o s Y . Então usaremos a palavra chave p r o t e c t e d para encapsular esses atributos corretamente.

O esquema de classe proposto no enunciado da questão termina aqui. Porém, para acessar esses atributos protegidos através de um objeto a gente vai precisar criar métodos públicos.

O primeiro vai ser o s e t F o r m a (   ) que vamos usar para inicializar os três atributos protegidos. Então essa função recebe como parâmetro os valores dos três atributos, e em seguida inicializa os atributos:

E também vamos criar uma função p r i n t F o r m a (   ) que não recebe nenhum atributo, e apenas exibe um texto que fala o nome e posição da forma:

Show! Classe mãe pronta!

Passo 3

Beleza! Com a classe mãe concluída podemos desenvolver a classe filha.

Pra começar, vamos declarar a classe Q u a d r i l a t e r o e informar que queremos herdar a classe F o r m a . Fazemos isso assim:

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

No código:

E prontinho! Agora a classe filha possui todos os métodos e atributos da classe mãe.

Vamos desenvolver agora os detalhes exclusivos da classe filha. Primeiro, ela possui dois atributos privados: l a r g u r a e c o m p r i m e n t o

Belezinha. A classe também possui dois métodos públicos. O primeiro é um método que retorna inteiros que calcula o perímetro.

E um segundo método chamado a r e a   que retorna inteiros e calcula a área do quadrilátero:

Show. Mas a gente não tem nenhuma forma de preencher os atributos privados. Então vamos criar o método s e t Q u a d r i l a t e r o que inicializa os atributos o c o m p r i m e n t o e l a r g u r a .

E agora sim, a classe está pronta.

Passo 4

Agora vamos testar as classes. Primeiro vamos instanciar um objeto de cada classe.

Para o objeto f o r m a vamos utilizar o método s e t F o r m a (   ) para iniciar os atributos, e em seguida vamos imprimir o conteúdo com o método p r i n t F o r m a (   )

Já no objeto q u a d r a d o nós temos acesso aos atributos e métodos da classe mãe e também aos atributos e métodos exclusivos da classe filha.

Então podemos começar inicializado o objeto q u a d r a d o . Primeiro usando o método herdado s e t F o r m a e em seguida utilizando o método s e t Q u a d r i l a t e r o

E depois, podemos utilizar o método herdado p r i n t F o r m a para exibir informações sobre o q u a d r a d o e depois podemos usar os métodos p e r i m e t r o (   ) e a r e a (   ) :

E teremos o seguinte resultado

E prontinho! Questão concluída.

Resposta