Calculo imc utilizando poo

N entendi um exercicios se alguem puder me ajudar a resolver, nao estou pegando muito bem poo e esse exercicio foi a gota d’agua

Descrição:
Você esta programando um sistema sobre pacientes em uma clinica de nutrição. Entre outras
partes do software, deve ser programado a Classe Paciente. Seguem os requisitos da classe:
atributos encapsulados: nome (string), peso e altura (double)
construtor: um construtor que receba os três parâmetros (nome, altura e peso)
métodos:
• getters e setters para os 3 atributos. Para os dois atributos numéricos, não se deve
alterar os valores quando os valores passados por parâmetro não forem positivos
(mesmo deve ser validado no construtor).
• getImc –> retorna o valor do IMC do paciente, considerando a fórmula:
IMC = Peso/ Altura²
• getImcStatus –> retorna uma string com o status do paciente baseado no seu IMC,
conforme a tabela abaixo:
Valor IMC Status IMC
IMC < 18,5 kg/m² “Magreza”
18,5 kg/m² <= IMC < 24,9 kg/m² “Normal”
24,9 kg/m² <= IMC < 30 kg/m² “Sobrepeso”
IMC >= 30 kg/m² “Obesidade”

Mas qual é a dúvida?

n faço ideia nem de como começar

Você pode criar na “Main” a regra para não aceitar valores negativos.
Criar variáveis e depois vai aplicando e se aceitar coloca no Construtor e dele você pode ter métodos que retornam o Imc e informar qual tipo e por aí vai.

Segue o código, ver se te auxilia, fiz também com Construtor:
//Paciente.java
package entities;

public class Paciente {

//Atributos 
private String nome;
private float altura;
private float peso;
private float imc;
private String imcStatus;
//

public Paciente(String nome, float altura, float peso) {
    this.nome = nome;
    if (altura < 0.0f) {
        this.altura = altura * (- 1);
    } else {
        this.altura = altura;
    }
    if (peso < 0.0f) {
        this.peso = peso * (- 1);
    } else {
        this.peso = peso;
    }
    setImc(peso, altura);
    imc = (float) (peso / Math.pow(altura, 2));
    setImcStatus(imc);
}

public String getNome() {
    return nome;
}

public void setNome(String nome) {
    this.nome = nome;
}

private float getAltura() {
    return altura;
}

private void setAltura(float altura) {
    this.altura = altura;
}

private float getPeso() {
    return peso;
}

private void setPeso(float peso) {
    this.peso = peso;
}

public float getImc() {
    return imc;
}

public void setImc(float peso, float altura) {
    this.imc = imc;
}

public String getImcStatus() {
    return imcStatus;
}

public void setImcStatus(float res) {
    if (res <= 18.5f) {
        this.imcStatus = " kg/m² Magreza";
    } else if (res < 24.9f) {
        this.imcStatus = "kg/m² Normal";
    } else if (res < 30.0f) {
        this.imcStatus = "kg/m² Sobrepeso";
    } else {
        this.imcStatus = "kg/m² Obesidade";
    }
}

@Override
public String toString() {
    return "Paciente{" + "Nome=" + nome
            + "\nAltura=" + String.format("%.1f", altura) + "m"
            + "\nPeso=" + String.format("%.1f", peso) + "kg"
            + "\nimc=" + String.format("%.1f", imc)
            + "" + imcStatus + '}';
}

}
//Depois é só instanciar na Main como
//public class Main {

public static void main(String[] args) {

    Paciente p = new Paciente("Paulo", 1.75f,70);
    System.out.println(p);
    
}

}//
Tem uma regra com relação a converter de negativos em positivos no próprio construtor. vlw!!!

1 curtida