Exercícios Resolvidos de Herança

Ver Teoria

Enunciado

Abaixo temos uma classe P e s s o a com atributos básicos n o m e e d i n h e i r o , e o método básico t r a b a l h a r (   ) que adiciona mais 100 no atributo d i n h e i r o . E a classe filha C o n s u m i d o r que herda a classe pessoa e adiciona o atributo n u m C o m p r a s que contabiliza quantos itens esse consumidor comprou e o método c o m p r a r (   ) que recebe o valor de uma compra e altera a quantidade de dinheiro do consumidor.

As boas práticas de programação dizem que os membros de uma classe devem ser encapsulados como p r i v a t e , p r o t e c t e d ou p u b l i c de acordo com suas características de importância, segurança e nível de acesso.

Modifique as classes para que seus membros estejam devidamente encapsulados como p r i v a t e , p r o t e c t e d ou p u b l i c . Se necessário modifique ou crie métodos.

Passo 1

E aí, pessoal.

A questão já entregou as classes feitas pra gente. O que ela quer é que a gente remodele as classes para que elas fiquem encapsuladas corretamente.

Então, vamos lembrar qual é a função de cada nível de acesso:

  • p u b l i c : Os membros públicos de uma classe podem ser acessados de qualquer lugar.
  • p r i v a t e s : os membros privados só podem ser acessados dentro da própria classe.
  • p r o t e c t e d : os membros protegidos podem ser acessados dentro da própria classe ou de uma classe filha.

Pra resolver essa questão temos que analisar cada membro das classes e decidir qual o nível de acesso adequado. E se necessário, a gente vai ter que criar métodos setters e getters.

Mas antes, vamos escrever o cabeçalho do programa. Vamos precisar incluir a biblioteca < s t r i n g >

Passo 2

Vamos dar uma olhada na classe P e s s o a e vamos definir o nível de acesso de cada membro.

Vamos começar com o atributo n o m e , essa é uma informação cadastral que não deve ser modificada facilmente, por isso não pode ser público, além disso o atributo não precisa ser acessado na classe filha, então pode ser um atributo privado:

Quanto ao atributo d i n h e i r o gente não pode permitir que uma pessoa altere seu dinheiro sem trabalhar, ou seja, não pode ser um atributo público. Contudo, esse atributo precisa ser acessado em um método da classe filha, então não pode ser privado. A solução é definir esse atributo como protegido.

O método t r a b a l h a r   tem que ficar disponível sempre que a pessoa quiser ganhar dinheiro. Então vamos mantê-lo público.

Da forma que está, os atributos n o m e e d i n h e i r o não serão acessados através de um objeto. Então vamos criar métodos setters e getters para permitir que a gente trabalhe com esses atributos:

Passo 3

Vamos seguir para a classe C o n s u m i d o r . Primeiro de tudo, ela é uma classe herdeira. Então na primeira linha devemos herdar a classe P e s s o a

O atributo n u m C o m p r a s será de uso interno da classe, então não tem necessidade de ser público, vamos colocá-lo como privado:

O método c o m p r a r (   ) deve ser de acesso livre, pois assim o consumidor pode efetuar compras com facilidade.

Antes de concluir a classe, nós precisamos de uma forma de inicializar o atributo n u m C o m p r a s . Então vamos criar um método setter

E prontinho! A classe está devidamente modificada. 😊

Resposta