1
resposta

[Projeto] O dilema do escopo de "uma coisa só"

Eu estava tentando criar métodos pequenos, então tinha criado //CalcularMediaNotas, CalcularAprovacao e ExibirInformacoes//, mas o código tava quebrando, então acabei juntando CalcularAprovacao em ExibirInformacoes e funcionou. Acho que é tempo e prática pra pegar o jeito do que é "uma coisa só".

public class Alunos {

    String nome;
    double nota1;
    double nota2;
    double media;


    public void CalcularMediaNotas()
    {
        media = (nota1 + nota2)/2;
    }

//    public void CalcularAprovacao()
//    {
//           if (media >= 7)
//        {
//            System.out.println("Situação: aprovado");
//        }
//            else
//        {
//            System.out.println("Situação: reprovado");
//        }
//    }

    public void ExibirInformacoes()
    {
        System.out.println("Nome: " + nome);
        System.out.println("Nota 1: " + nota1);
        System.out.println("Nota 2: " + nota2);
        System.out.printf("Média: %.1f%n", media);

        if (media >= 7)
        {
            System.out.println("Situação: aprovado");
        }
        else
        {
            System.out.println("Situação: reprovado");
        }

    }

}
public class Main {
    public static void main(String[] args) {

        Alunos aluno1 = new Alunos();
        aluno1.nome = "Diogo de Souza Medeiros";
        aluno1.nota1 = 9.8;
        aluno1.nota2 = 7.5;

        aluno1.CalcularMediaNotas();
     //   aluno1.CalcularAprovacao();
        aluno1.ExibirInformacoes();
    }
}
1 resposta

Oi Diogo! Tudo bem?

Essa prática é excelente para manter o código organizado e fácil de entender. No entanto, como você mencionou, às vezes pode ser desafiador decidir o que deve ser responsabilidade de cada método.

No seu caso, você tentou separar a lógica de cálculo da aprovação em um método diferente, mas encontrou dificuldades. Isso pode ter ocorrido porque o método CalcularAprovacao depende do valor da média, que precisa ser calculada antes. Uma abordagem que pode ajudar é garantir que o método CalcularMediaNotas seja sempre chamado antes de CalcularAprovacao.

Aqui está uma sugestão de como você poderia estruturar seu código:

public class Alunos {

    String nome;
    double nota1;
    double nota2;
    double media;

    public void CalcularMediaNotas() {
        media = (nota1 + nota2) / 2;
    }

    public void CalcularAprovacao() {
        if (media >= 7) {
            System.out.println("Situação: aprovado");
        } else {
            System.out.println("Situação: reprovado");
        }
    }

    public void ExibirInformacoes() {
        System.out.println("Nome: " + nome);
        System.out.println("Nota 1: " + nota1);
        System.out.println("Nota 2: " + nota2);
        System.out.printf("Média: %.1f%n", media);
        CalcularAprovacao(); // Chama o método para exibir a situação
    }
}

public class Main {
    public static void main(String[] args) {

        Alunos aluno1 = new Alunos();
        aluno1.nome = "Diogo de Souza Medeiros";
        aluno1.nota1 = 9.8;
        aluno1.nota2 = 7.5;

        aluno1.CalcularMediaNotas();
        aluno1.ExibirInformacoes();
    }
}

Neste exemplo, ExibirInformacoes chama CalcularAprovacao para exibir a situação do aluno. Assim, você mantém a lógica separada, mas ainda garante que tudo funcione corretamente.

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.