Estou com o seguinte problema:
"Uma clinica SPA “Sinta Feliz” precisa de um programa monitore a evolução de seus pacientes e gerenciar as atividades do spa. Precisa criar uma classe Pacientes que não pode ser instanciada e com seus atributos protegidos .
Crie uma classe Emagrecimento estendida a Pacientes e que implemente uma interface Atividades Crie uma outra classe Estética estendida a Pacientes e que implemente uma interface Atividades
Na classe Emagrecimento fazer o cadastro pelo construtor o nome ,telefone sexo , tipoAtividade, peso. Sobrescrever o método mostrarDadoscadastro da classe mãe. No construtor chamar o método pesoIdeal() da classe CalculoPeso e atribuir a um atributo pesoIdeal .
Na classe Estetica fazer o cadastro pelo construtor o nome ,telefone sexo ,tipoAtividade, tipo de serviço. Sobrescrever o método mostrarDadosCadastro da classe mãe. Este tipo de paciente tem pavor de falar o peso , nem pense em perguntar !!.
Na classe CalculoPeso criar o pesoIdeal() que calcule conforme as formulas : Para homens: 72.7altura- 58 Para mulheres: 62.1altura- 44.7 E outro metodo chamado porcentagemDoPesoIdeal() com a seguinte formula : (1-pesoIdeal/peso)*100
Crie uma classe PrincipalPacientes
Nesta classe deve ter um menu :
EXERCÍCIOS Inerface Set
Página 2 de 2
Escola SENAI “Prof. Dr. Euryclides de Jesus Zerbini” Impressão 23/10/17
No item 1 Cadastrar: caso o paciente for excesso de peso criar um objeto Emagrecimento utilizando polimorfismo e adicionar na interface Set. Caso o paciente for de estética criar objeto Estética utilizando polimorfismo e adicionar na interface Set.
-
Pesquisar : pesquisar o nome da pessoa e mostrar seus dados peso ideal caso for paciente de emagrecimento e ser for de estética os dados e o serviço
-
Alterar : deve alterar a atividade dos pacientes
4.Remover . remover um paciente da lista
5.Apresentar :invocar os métodos apresentar das classes Emagrecimento e Estética conforme o caso 6. Evolução do peso : mostrar a lista com o nome e a porcentagen de peso ideal que o cliente esta naquele momento.
Na interface Atividades implementar estes metodos : public String caminharBosque(); public String nadarPiscina(); public String exercitarAcademia(); "
Consegui realizar os 4 primeiros métodos. O porém é que, para poder mostrar, tive que jogar minha Set em um ArrayList, chamado lista. No método apresentar, não consigo separar qual objeto é qual dentro da lista. Por exemplo: se quiser mostrar somente um objeto de Emagrecimento, como faço?
E no caso 6, não consigo acessar o meu método EvoluçãoPeso, pois minha lista é de Pacientes, e o método está na classe CalculoPeso();
Segue abaixo meu programa:
package SPA;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Set;
import javax.swing.JOptionPane;
public class PrincipalPacientes {
public static void main(String[] args) {
// TODO Auto-generated method stub
Set<Paciente> lista = new HashSet<Paciente>();
ArrayList<Paciente> mostra = new ArrayList<Paciente>();
int opcao = 0, opcao1 = 0, opcao2 = 0, opcao3=0, opcao4=0;
Object[] opcoes = {"Cadastrar","Pesquisar", "Alterar","Remover","Apresentar", "Evolução do Peso","Sair"};
Object[] opcoes1 = {"Emagrecimento","Estética"};
Object[] opcoes2 = {"Masculino","Feminino"};
Object[] opcoes3 = {"Caminhada no Bosque","Nadar na Piscina", "Se Exercitar na Academia"};
Object[] opcoes4 = {"Drenagem linfática", "Hidratação de pés e mãos", "Limpeza de pele", "Banho de lua", "Peeling", "Cuidados para o cabelo", "Massagem esfoliante facial e corporal"};
do {
opcao = JOptionPane.showOptionDialog(null,"Sinta-se Feliz!","SPA",JOptionPane.DEFAULT_OPTION,
JOptionPane.QUESTION_MESSAGE, null,opcoes,null);
switch(opcao){
case 0:
opcao1 = JOptionPane.showOptionDialog(null,"Qual tratamento deseja receber?","SPA",JOptionPane.DEFAULT_OPTION,
JOptionPane.QUESTION_MESSAGE, null,opcoes1,null);
switch(opcao1){
case 0:
Emagrecimento pess = new Emagrecimento(JOptionPane.showInputDialog("Entre com o nome do paciente"), JOptionPane.showInputDialog("Entre com o o telefone"),JOptionPane.showOptionDialog(null,"Entre com o sexo","SPA",JOptionPane.DEFAULT_OPTION,
JOptionPane.QUESTION_MESSAGE, null,opcoes2,null), Double.parseDouble(JOptionPane.showInputDialog("Entre com o peso do paciente")), Double.parseDouble(JOptionPane.showInputDialog("Entre com a altura do paciente")));
pess.servico="Emagrecimento";
lista.add(pess);
mostra.addAll(lista);
break;
case 1:
Estetica est = new Estetica(JOptionPane.showInputDialog("Entre com o nome do paciente"), JOptionPane.showInputDialog("Entre com o o telefone"), JOptionPane.showOptionDialog(null,"Entre com o sexo","SPA",JOptionPane.DEFAULT_OPTION,
JOptionPane.QUESTION_MESSAGE, null,opcoes2,null), JOptionPane.showOptionDialog(null,"Entre com a atividade","SPA",JOptionPane.DEFAULT_OPTION,
JOptionPane.QUESTION_MESSAGE, null,opcoes3,null), JOptionPane.showOptionDialog(null,"Entre com o tipo de serviço","SPA",JOptionPane.DEFAULT_OPTION,
JOptionPane.QUESTION_MESSAGE, null,opcoes4,null));
est.servico="Estetica";
lista.add(est);
mostra.addAll(lista);
break;
}
break;
case 1:
String nome;
nome=JOptionPane.showInputDialog("Entre com o nome que deseja encontrar: ");
for (int i=0;i<mostra.size();i++) {
if(mostra.get(i).nome.equals(nome))
JOptionPane.showMessageDialog(null, mostra.get(i).mostrarDadosCadastro());;
} break;
case 2:
nome=JOptionPane.showInputDialog("Entre com o nome do paciente: ");
for (int i=0;i<mostra.size();i++) {
if(mostra.get(i).nome.equals(nome)){
opcao3 = JOptionPane.showOptionDialog(null,"Qual a nova atividade desejada?","SPA",JOptionPane.DEFAULT_OPTION,
JOptionPane.QUESTION_MESSAGE, null,opcoes3,null); //"0 - Caminhada no Bosque","1 - Nadar na Piscina", "2 - Se Exercitar na Academia"
String retorno = "";
if(opcao3 == 0)
mostra.get(i).tipoAtiv=0;
JOptionPane.showMessageDialog(null, retorno+="Nova Atividade: Caminhada no Bosque");
if(opcao3 == 1)
mostra.get(i).tipoAtiv=1;
retorno+="Nova Atividade: Nadar na Piscina";
if(opcao3 == 2)
mostra.get(i).tipoAtiv=2;
retorno+="Nova Atividade: Se Exercitar na Academia";
}else{
JOptionPane.showMessageDialog(null, "Pessoa não encontrada");
}
}
break;
case 3:
nome=JOptionPane.showInputDialog("Entre com o nome do paciente: ");
for (int i=0;i<mostra.size();i++) {
if(mostra.get(i).nome.equals(nome)){
JOptionPane.showMessageDialog(null, "Deseja remover este paciente?\n"+mostra.get(i).mostrarDadosCadastro());
mostra.remove(i);
JOptionPane.showMessageDialog(null, "Paciente removido com suceso!");
}else {
JOptionPane.showMessageDialog(null, "Paciente não encontrado");
}
}
break;
case 4:
opcao4 = JOptionPane.showOptionDialog(null,"Qual tratamento deseja mostrar?","SPA",JOptionPane.DEFAULT_OPTION,
JOptionPane.QUESTION_MESSAGE, null,opcoes1,null);
switch(opcao4) {
case 0:
for (int i = 0; i <mostra.size() ;i++) {
if(opcao4==0){
JOptionPane.showMessageDialog(null, mostra.get(i).mostrarDadosCadastro());
}
}
case 1:
for (int i = 0; i <mostra.size() ;i++) {
if(mostra.get(i).servico.equals("Emagrecimento")){
JOptionPane.showMessageDialog(null, mostra.get(i).mostrarDadosCadastro());
}else{
JOptionPane.showMessageDialog(null, mostra.get(i).mostrarDadosCadastro());
}
}
break;
case 5:
if(opcao1==0){
CalculoPeso cp =new CalculoPeso();
for (int i = 0; i <mostra.size() ;i++) {
if(mostra.get(i).servico.equals("Emagrecimento")){
System.out.println();
}
}
}
break;
}
}
} while (opcao!=6);
}
}
package SPA;
public abstract class Paciente {
protected String nome;
protected String telefone;
protected int sexo; //Sexo 0 - Masculino | Sexo 1 - Feminino
protected int tipoAtiv;
protected String servico;
public String mostrarDadosCadastro(){
return null;
}
}
package SPA;
import javax.swing.JOptionPane;
public class Emagrecimento extends Paciente implements Atividades {
//declarando atributos
private double peso, altura, pesoIdeal, porcent;
private String tratamento = “Emagrecimento”;
/-------------------------------------------------------------------------------------------------------/
//Construtor Emagrecimento
public Emagrecimento(String nome, String telefone, int sexo, double peso, double altura){
this.nome=nome;
this.telefone=telefone;
this.sexo=sexo;
this.peso=peso;
this.altura=altura;
//Criando o objeto do Calculo peso para poder chamar o método
CalculoPeso cal = new CalculoPeso();
//Chamando e atribuindo o método peso ideal
pesoIdeal=cal.pesoIdeal(this.sexo, this.altura);
//Chamando e atribuindo o método porcent
porcent=cal.porcent(this.pesoIdeal, this.peso);
JOptionPane.showMessageDialog(null, porcent);
}
/*-------------------------------------------------------------------------------------------------------*/
/*-------------------------------------------------------------------------------------------------------*/
//Sobrescrevendo o método mostrarDadosCadastro() da classe mãe
public String mostrarDadosCadastro(){
String retorno = "Nome: "+this.nome+"\nTelefone: "+this.telefone ;
if(this.sexo == 0)
retorno+= "\n\nSexo: Masculino";
else
retorno+= "\n\nSexo: Feminino";
retorno+="\n\nPeso: "+this.peso+"kg\nTratamento: "+tratamento;
if(this.peso>this.pesoIdeal)
retorno+="\nPeso Ideal: "+this.pesoIdeal+"kg";
return retorno;
}
/*-------------------------------------------------------------------------------------------------------*/
/*-------------------------------------------------------------------------------------------------------*/
//Interfaces
@Override
public String caminharBosque(String nome) {
// TODO Auto-generated method stub
return nome+" foi arejar a cabeça caminhando no bosque!";
}
@Override
public String nadarPiscina(String nome) {
// TODO Auto-generated method stub
return nome+" foi se refrescar na piscina!";
}
@Override
public String exercitarAcademia(String nome) {
// TODO Auto-generated method stub
return nome+" foi ficar maromba na academia!";
}
/*-------------------------------------------------------------------------------------------------------*/
}
package SPA;
public class CalculoPeso {
/*-------------------------------------------------------------------------------------------------------*/
//Método para calcular o peso ideal do paciente
public double pesoIdeal(int sexo, double altura){
double pesoIdeal;
if(sexo==0){
pesoIdeal=(72.7*altura-58);
return pesoIdeal;
}else{
pesoIdeal=(62.1*altura- 44.7);
return pesoIdeal;
}
}
/*-------------------------------------------------------------------------------------------------------*/
/*-------------------------------------------------------------------------------------------------------*/
//Método que calcula a porcentagem do peso Ideal
public double porcent(double pesoIdeal, double peso){
double porcent;
porcent = (1-pesoIdeal/peso)*100;
return porcent;
}
/*-------------------------------------------------------------------------------------------------------*/
}