Quero saber como faz o método resultIMC , pois não sei como retornar uma instância da classe String
Crie a classe Pessoa com os campos, nome e dataNascimento. A classe Pessoa deve conter:
O método toString, que não recebe parâmetros e retorna um objeto da classe String na
seguinte forma:
Nome:
Data de Nascimento:
Crie a classe abstrata PessoaIMC que herde da classe Pessoa e contenha tenha os campos
peso e altura, ambos do tipo double. A classe PessoaIMC deve conter os seguintes métodos:
calculaIMC() que recebe como parâmetros dois valores do tipo double que são a altura e o peso
e retorna um valor do tipo double correspondente ao IMC (Índice de Massa Corporal = peso /
altura ao quadrado) calculado.
o método abstrato resultIMC() que não recebe parâmetros e retorna uma instância da classe
String.
O método toString() desta classe deve retornar uma string da seguinte forma:
Nome:
Data de Nascimento:
Peso:
Altura:
Crie as classes Homem e Mulher, herdeiras de PessoaIMC. Cada uma deve implementar o método
abstrato resultIMC() para realiza o calculo do IMC e exibe uma mensagem de resultado acordo
com o valor obtido.
Para Homem:
IMC < 20.7 : Abaixo do peso ideal
20.7 < IMC < 26.4: Peso ideal
IMC > 26.4 : Acima do peso ideal
Para Mulher:
IMC < 19 : Abaixo do peso ideal
19 < IMC < 25.8: Peso ideal
IMC > 25.8 : Acima do peso ideal
Crie uma classe teste que apresenta as seguintes opções:
e na classe Principal você vai instanciar um objeto Pessoa, e chamar a função calcularIMC(), com isso o resultado dela será uma String.
Posta aí o código que você fez até agora, para podermos ajudar de forma específica.
Seja bem vindo ao fórum!
staroski2 likes
Esse é tipo de exercício que me decepciona, um IMC não é uma Pessoa, mas segundo o exercício, é sim.
E o pior, o exercício vai adiante estruturando que Homem e Mulher são IMCs.
Por isso que tem tanto estudante com raiva de POO, os caras ensinam absurdos…
IMC deveria ser uma classe independente, capaz de calcular o IMC de qualquer Pessoa e avaliar o IMC de Homems e Mulheres, simples assim:
publicclassIMC{publicdoublecalcular(Pessoapessoa){doublepeso=pessoa.getPeso();doublealtura=pessoa.getALtura();returnpeso/(altura*altura);}publicStringavaliar(Homemhomem){doubleimc=calcular(homem);if(imc>26.4){return"Acima do peso ideal";}if(imc>20.7){return"Peso ideal";}return"Abaixo do peso ideal"}publicStringavaliar(Mulhermulher){doubleimc=calcular(mulher);if(imc>25.8){return"Acima do peso ideal";}if(imc>19){return"Peso ideal";}return"Abaixo do peso ideal"}}
Ryan_Victor
Valeu pela sugestão ,amigo. Mas quero saber como implementar o método resultIMC.
Ryan_Victor
Mas eu quero saber como implementar o método resultIMC.
Ryan_Victor
Valeu pela sugestão , amigo. Mas quero saber como implementar o método resultIMC. Pois ele pede para retornar a instância de uma String.
package classe.abstrata.pkg2;
import java.util.Date;
/**
*
@author constantino
*/
public abstract class PessoaIMC extends Pessoa {
Segundo o seu enunciado, na classe Homem vai ser assim:
publicStringresultIMC(){
doubleimc=calculaIMC(getPeso(),getAltura());if(imc>26.4){
return"Acima do peso ideal";}
if(imc>20.7){
return"Peso ideal";}
return"Abaixo do peso ideal"
}
E na classe Mulher vai ser assim:
publicStringresultIMC(){
doubleimc=calculaIMC(getPeso(),getAltura());if(imc>25.8){
return"Acima do peso ideal";}
if(imc>19){
return"Peso ideal";}
return"Abaixo do peso ideal"
}
Tenho perguntas acerca de sua implementação de PessoaIMC:
Você declarou os atributos peso e altura como sendo do tipo double.
No construtor da classe você está recebendo eles como Double ao invés de double.
Nos métodos getPeso e getAltura também está retornando Double ao invés de double.
No método CalculaIMC (em maiúsculo?) você recebe eles como sendo novamente do tipo double.
A pergunta é: Tem algum motivo para misturar Double e double?
Você sabe que são tipos de dados diferentes né?
Ryan_Victor
Sim , sei. Mas às vezes não me importo muito na hora de usar.
Ryan_Victor
Est
“staroski:
Segundo o seu enunciado, na classe Homem vai ser assim:
publicStringresultIMC(){
doubleimc=calculaIMC(getPeso(),getAltura());if(imc>26.4){
return"Acima do peso ideal";}
if(imc>20.7){
return"Peso ideal";}
return"Abaixo do peso ideal"
}
E na classe Mulher vai ser assim:
publicStringresultIMC(){
doubleimc=calculaIMC(getPeso(),getAltura());if(imc>25.8){
return"Acima do peso ideal";}
if(imc>19){
return"Peso ideal";}
return"Abaixo do peso ideal"
}
Tenho perguntas acerca de sua implementação de PessoaIMC:
Você declarou os atributos peso e altura como sendo do tipo double.
No construtor da classe você está recebendo eles como Double ao invés de double.
Nos métodos getPeso e getAltura também está retornando Double ao invés de double.
No método CalculaIMC (em maiúsculo?) você recebe eles como sendo novamente do tipo double.
A pergunta é: Tem algum motivo para misturar Double e double?
Você sabe que são tipos de dados diferentes né?
Estava duvidando da minha implementação , achava que tinha que fazer uma instância da classe String na classe abstrata. Mas fiz igualzinho ao seu. Obrigado , amigo.
staroski
Não, o enunciado diz que sua classe abstrata vai ter um método abstrato que retorna uma String.
Se o método é abstrato, quem vai fornecer a implementação concreta e retornar a instância de String será uma subclasse.
Nesse caso a subclasse Homem e a subclasse Mulher.
hugokotsubo1 like
Mas deveria
Quando você faz cálculos com os wrappers (Double, Integer, etc), é feito o autoboxing e unboxing , ou seja, há conversões implícitas de/para os respectivos tipos primitivos.
Claro que para programas pequenos como este exercício, a diferença será imperceptível, mas dependendo da aplicação, isso pode causar sim problemas de desempenho.
No caso deste exercício, não tem motivo - e nem ganho - nenhum em usar Double. Pode ser tudo double mesmo.