Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Uso de hierarquia

Boa noite! Estava assistindo a vídeo aula, e durante foi falado que o titular, cpf e data de nascimento não pertencem a classe Conta, mas que seria mais pertinente criar uma classe Pessoa para guardar esses dados. No final eu achei que o método main acabou ficando mais complicado do que deveria.

Minha dúvida é se nesse caso, está correto usar a hierarquia de classes, usando o extends?

class Conta extends Pessoa{
    int numero;
    double saldo;
    int agencia;

    void deposita(double valorDepositado){
        this.saldo += valorDepositado;
    }
    void saque(double valorSacado){
        if(valorSacado <= this.saldo)
            this.saldo -= valorSacado;
    }
    void transfere(double valorTransferido, Conta destino){
        this.saldo -= valorTransferido;
        destino.saldo += valorTransferido;
    }
}
class Pessoa{
    String nome;
    String nascimento;
    String cpf;
}
class Programa{
    public static void main(String[] args) {
        Conta fabio = new Conta();
        fabio.nome = "Fabio";
        fabio.nascimento = "01/01/1111";
        fabio.cpf = "123.456.789-00";
        fabio.numero = 76480;
        fabio.saldo = 10000.00;
        fabio.agencia = 221;

        System.out.println("O saldo do "+fabio.nome+" e de: R$ "+fabio.saldo);
    }
}
3 respostas

Acharia melhor tu criar um atributo do tipo Conta na Classe Pessoa ficaria com mais sentindo nesse exemplo . Class Pessoa {

String nome; Conta conta; ... ..... e por ai vai pois poderia ter acesso aos métodos da classe conta do que estender Pessoa dentro da conta

solução!

Bom dia Fabio,

O ideal é você tentar modelar suas classes pensando no mundo real, orientação a objetos é isso. Vamos lá:

Existe um objeto Conta, para representar uma Conta do mundo real, então ele terá atributos como número da conta, agência, saldo, e comportamentos como deposita, saca, etc.

Agora pensando no mundo real, uma Conta pertence sempre a alguma Pessoa certo? Mas será que fica legal na Conta eu colocar os dados da Pessoa? E se essa Pessoa tiver várias Contas? Para cada Conta dela, vou ter que repetir os dados da Pessoa.

Então vamos por outra abordagem, vamos criar o objeto Pessoa também, este terá um nome, um cpf, etc. Agora, que temos Pessoa, vamos pensar:

Se eu fizer Conta extends Pessoa, estou dizendo que Conta é subclasse de Pessoa, logo, é o mesmo que dizer: Conta É UM tipo de Pessoa. Isso faz sentido? Não, afinal Conta não é uma Pessoa, Conta é algo que se relaciona com uma Pessoa. Então nesse caso é incorreto utilizar uma Herança.

O que faria sentido então? Conta pertence a uma Pessoa, então preciso de um meio para saber de qual Pessoa esta Conta é, que tal assim:

public class Conta {
    int agencia;
    int numero;
    double saldo;
    Pessoa titular;
}

public class Pessoa {
    String nome;
    String cpf;
    LocalDate dataNascimento;
}

Com isso, temos um atributo titular na Conta, e este atributo é do tipo Pessoa, ou seja, a Conta tem uma relação com o objeto Pessoa, e através dela poderemos facilmente saber de quem é aquela Conta. Fez sentido? Qualquer coisa estamos ai.

Abraço.

Opa Emerson, tudo bem? Realmente, faz muito sentido se pensarmos que a Conta não é um tipo de Pessoa, estava com essa dúvida batendo na minha cabeça por causa de uma matéria da faculdade hahaha

Obrigado por esclarecer