[AJUDA] Programa de cadastro (Consultório)


Menu Principal

1 - Cadastrar classe-Pai
2 - Buscar Obj classe-pai
3 - Escrever dados classe-pai E SEUS FILHOS
4 - Alterar classe-pai
5 - Excluir classe-pai
6 - Buscar objeto classe-filho
7 - Listar objetos-filhos
8 - Alterar objeto-filho específico
9 - excluir objeto-filho específico
10 - Sair

1 - CONSULTÓRIO
PACIENTE E CONSULTAS

Eu sou aluno de um curso técnico em informática, estou no último semestre, faltando 2 semanas de aula. Bem, esse último semestre é DESENVOLVIMENTO. É a primeira vez que estou tendo contato com POO. No ínicio do ano teve um concurso para novo professor que seria para esse meu último semestre. Bem, deu início ao semestre e o professor não assumiu o CARGO, passou um mês sem aula de POO. agora faltando um mês para o término do curso a professora assumiu, porém, ela não está nos ensinando a progamar, ela põe os códigos e eu como toda turma está tendo dificuldade. para concluir o curso, ela passou um projeto para cada aluno, o meu foi o do consultório, onde eu tenho que criar um programa que cadastre o paciente e seu problema. Bem, eu estou me esforçando para aprender JAVA, mas, estou sem saber começar… A minha intenção não é que alguém faça o trabalho para mim, mas, que me acompanhasse para me dá uma mão. Eu sei criar o MENU, mas, me atrapalho com quantas classes devo usar, essa questão de herança e não consigo formular um algoritimo para entender o que devo fazer na parte de códigos… Eu seria bastante grato se alguém pudesse me dá uma introdução quanto ao meu trabalho… Se eu for reprovado, não poderei me formar com a turma, e só poderei pagar POO no fim do próximo ano. Já estou passado em Análise de sistema, banco de dados e HTML. Programação é bastante complexo para se aprender em 1 mês, mas, é isso aí, vamos a luta.

Não estamos trabalhando com interface gráfica.

bom, eu não vou usar o seu trabalho como exemplo.

Como você deve saber, a Programação Orientada a Objetos, veio para facilitar e muito a vida do programador, antes dela você era obrigado a escrever várias vezes, a mesma coisa, além dos inevitáveis bugs, como por exemplo, acessar os dados do usuário por exemplo sem passar pela função que validava o tipo de usuário no sistema.
Um dos maiores ganhos (senão o maior) da programação orientada a objetos é a reutilização de código, ou seja, você não tem que escrever uma coisa que já está pronta, você só vai chamá-la, a herança é assim, você não precisa reescrever tudo de novo, você pode acessar aquele método ou atributos, sem precisar declarar na sua classe, é só usar o método ou atributo da classe pai. Também podemos redefinir métodos da classe pai.

Vejamos um exemplo:

Eu vou colocar duas classes a primeira a classe pessoa, e depois a classe funcionário.

   public class Pessoa{
      //aqui eu vou colocar somente alguns atributos e métodos.

       
       private String Nome;
       private String RG;
       private String CPF;

       

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


      public String getNome(){
          return this.Nome;
      }

     public void setRG(String RG){
         this.RG = RG;
     }

     public String getRG(){
        return this.RG;
     }
     
    public void setCPF(String CPF){
         this.CPF = CPF;
    }

    
   public String getCPF(){
       return this.CPF;
   }


   
   }//fim da classe pessoa

Bom, na classe Pessoa, eu coloco os atributos comuns a toda Pessoa, toda Pessoa tem um nome, endereço, etc…

Agora eu vou escrever a classe Funcionário, todo funcionário É UMA Pessoa, Médico também É UMA Pessoa, se ligou? Quando a relação entre duas classes for do tipo, É UM, significa que é aí que acontece a Herança.

Suponha que ambas as classes Pessoa e Funcionário pertencem ao mesmo pacote, eu não sei se você sabe o que é isso. Então vou partir do pressuposto que você saiba, mas se não souber você me fala que eu te ensino.

   public class Funcionario extends Pessoa{
     
         public int NumCarTrabalho;//Número da Carteira de Trabalho.
         public String Login;
         public String Senha;
         

         public void setNumCarTrabalho(int Value){
         }
  

         public int getNumCarTrabalho(){
         }


        public void setLogin(String Login){
        }


       public String getLogin(){
       }


      public void setSenha(String Senha){
      }


     public String getSenha(){
     }



     @Override
      //aqui nessa linha vou redefinir os métodos que estão na classe pai Pessoa, e se eu quiser posso acrescentar algumas coisas.


     public void setRG(String RG){
          if(!RG.equals("")){
              super.setRG(RG);//aqui a palavra super acessa qualquer atributo ou método definido na classe Pai.
          }//Como eu estou sobreescrevendo o método setRG da classe Pai, eu estou colocando a seguinte condição se o RG for igual a nulo ele não vai atribuir nada.
     }

    @Override
    public String getRG(){
         return super.getRG();//aqui novamente eu usei a palavra super para acessar ao método da minha classe Pai (ou SuperClasse).
   }
   }

Bom, espero que tenha ajudado, qualquer dúvida você coloca a mensagem aqui, que quando eu acessar eu vou dar uma olhada aqui.

Cara, obrigado de verdade. Sua explicação foi de uma grande ajuda. :smiley:

Bem, eu hoje de manhã comecei a fazer o programa, mas, estou enganchado aqui… Não sei mais qual é o próximo passo.


CLASSE PRINCIPAL

[code]

import java.util.Scanner;

public class Principal {

public static void main(String[] args) {

	int op;
	String nome,cpf, endereco, sexo, idade;
	Scanner sc = new Scanner(System.in);

	Paciente p = new Paciente();

	System.out.println("-------------------------");
	System.out.println("MENU PRINCIPAL");
	System.out.println("-------------------------");
	System.out.println("1 - CADASTRAR PACIENTE");
	System.out.println("2 - BUSCAR PACIENTE");
	System.out.println("3 - EXCLUIR PACIENTE");
	System.out.println("4 - ALTERAR DADOS PACIENTE");
	System.out.println("5 - EXCLUIR PACIENTE");
	System.out.println("6 - BUSCAR CONSULTA");
	System.out.println("7 - LISTAR CONSULTAS");
	System.out.println("8 - ALTERAR CONSULTA ESPECÍFICA");
	System.out.println("9 - EXCLUIR CONSULTA ESPECÍFICA");
	System.out.println("SAIR");
	System.out.println("Digite sua opção: ");
	op = sc.nextInt();

	if (op == 1) {
		System.out.println("Digite o nome: ");
		nome = sc.next();
		p.setNome(nome);
		
		System.out.println("Digite o CPF do paciente: ");
		cpf = sc.next();
		p.setCpf(cpf);
		
		System.out.println("Digite o endereço do paciente: ");
		endereco = sc.next();
		p.setEndereco(endereco);
		
		System.out.println("Qual o sexo: ");
		sexo = sc.next();
		p.setSexo(sexo);
		
		System.out.println("Qual a idade: ");
		idade = sc.next();
		p.setIdade(idade);
		
		
		
		
		
		
		
		

	}

}

}[/code]


CLASSE PACIENTE

[code]
public class Paciente {

private String nome;
private String cpf;
private String endereco;
private String sexo;
private String idade;

public String getCpf() {
	return cpf;
}
public void setCpf(String cpf) {
	this.cpf = cpf;
}
public String getEndereco() {
	return endereco;
}
public void setEndereco(String endereco) {
	this.endereco = endereco;
}
public String getIdade() {
	return idade;
}
public void setIdade(String idade2) {
	this.idade = idade2;
}
public String getNome() {
	return nome;
}
public void setNome(String nome) {
	this.nome = nome;
}
public String getSexo() {
	return sexo;
}
public void setSexo(String sexo) {
	this.sexo = sexo;
}

}[/code]


CLASSE CONSULTA

[code]

public class Consulta {
private String procedimento;
private int data;
private String dentista;
private String voltaconsulta;

public int getData() {
	return data;
}
public void setData(int data) {
	this.data = data;
}
public String getDentista() {
	return dentista;
}
public void setDentista(String dentista) {
	this.dentista = dentista;
}
public String getProcedimento() {
	return procedimento;
}
public void setProcedimento(String procedimento) {
	this.procedimento = procedimento;
}
public String getVoltaconsulta() {
	return voltaconsulta;
}
public void setVoltaconsulta(String voltaconsulta) {
	this.voltaconsulta = voltaconsulta;
}

}[/code]

Cara, até então está dando certo o programa, mas, eu não sei mais o que fazer… Qual é o próximo passo. Espero que eu consiga até, faltam 9 dias. rsrsrs!!! Obrigado de verdade pela atenção. :smiley:

Se você prestou bem atenção no que o colega acime falou e fez, ele criou um classe Pessoa e uma Funcionario, na classe Funcionario ele extendeu a classe Pessoa porque nessa classe tem atributos que também tem em Funcionario, então para não ter que criar novamente os mesmos atributes e à extendeu.
Agora eu pergunto, porque você com a classe Paciente não extendeu a classe Pessoa, já que em paciente existe os atributos nome e cpf que também constam na classe Pessoa?
Reveja isso!

Mas eu não estou usando a classe “Pessoa” no meu projeto. Ele usou para me explixar como funciona herança… As classes que eu estou usando é CONSULTA, PACIENTE e a PRINCIPAL…

Paciente = Pessoa, concorda ?

Por que nao fazer:

class Paciente extends Pessoa

??

a idéia dos colegas é q vc crie uma classe pai (mais genérica) chamada Pessoa e q a classe Paciente (mais específica) herde atributos e os métodos dessa classe. Porém, ñ vejo necessidade disso, exceto se o seu projeto exigir q se implemente herança, caso afirmativo, a idéia dos colegas é uma boa!

Para a continuidade do seu trabalho, fiz alguns ajuste em sua classe principal e implementei a opção 2 do seu menu, com isso acho q vc vai conseguir fazer o resto.

[code]
import java.util.Scanner;

public class Principal {

public static void main(String[] args) {

	int op;
	String nome,cpf, endereco, sexo, idade;
	Scanner sc = new Scanner(System.in);
	int nPacientes=0; //conta o n° de paciente cadastrados

	Paciente[] p= null; //Array q armazena os pacientes

	System.out.println("-------------------------");
	System.out.println("MENU PRINCIPAL");
	System.out.println("-------------------------");
	System.out.println("1 - CADASTRAR PACIENTE");
	System.out.println("2 - BUSCAR PACIENTE");
	System.out.println("3 - EXCLUIR PACIENTE");
	System.out.println("4 - ALTERAR DADOS PACIENTE");
	System.out.println("5 - EXCLUIR PACIENTE"); //igual ao item 3 do seu menu
	System.out.println("6 - BUSCAR CONSULTA");
	System.out.println("7 - LISTAR CONSULTAS");
	System.out.println("8 - ALTERAR CONSULTA ESPECÍFICA");
	System.out.println("9 - EXCLUIR CONSULTA ESPECÍFICA");
	System.out.println("SAIR");
	System.out.println("Digite sua opção: ");
	op = sc.nextInt();

	if (op == 1) {
		System.out.println("Digite o nome: ");
		nome = sc.next();
		p[nPacientes].setNome(nome);
		
		System.out.println("Digite o CPF do paciente: ");
		cpf = sc.next();
		p[nPacientes].setCpf(cpf);
		
		System.out.println("Digite o endereço do paciente: ");
		endereco = sc.next();
		p[nPacientes].setEndereco(endereco);
		
		System.out.println("Qual o sexo: ");
		sexo = sc.next();
		p[nPacientes].setSexo(sexo);
		
		System.out.println("Qual a idade: ");
		idade = sc.next();
		p[nPacientes].setIdade(idade);
		
		nPacientes++; //incrementa o n° de pacientes
		
		if (op == 2) {
			System.out.println("Digite o CPF do paciente: "); //busca o paciente pelo CPF
			cpf = sc.next();
			for (int i=0; i<nPacientes;i++){
				if (p[i].getCpf().equals(cpf)){
					System.out.println("CPF: "+p[i].getCpf());
					System.out.println("Nome: "+p[i].getNome());
					System.out.println("Idade: "+p[i].getIdade());
					System.out.println("Endereço: "+p[i].getEndereco());
					System.out.println("Sexo: "+p[i].getSexo());
					return; //sai do laço de repetição
				}
			}
		}
	}
}

}[/code]

espero ter ajudado!

Ainda em tempo: não testei a minha implementação, + acho q tah tdo certo, testa aew e vê se encontra algum erro, caso tenha jah tenha corrigir, ou entra em contato aki pelo fórum! :wink:

Pra ñ ficar incompleto resolvi testar (ainda bem q fiz isso… :lol: ) tava cheio d erros bobos. Ai vai um certo

[code]import java.util.ArrayList;
import java.util.Scanner;

public class Principal {

public static void main(String[] args) {

	int op;
	String nome,cpf, endereco, sexo, idade;
	Scanner sc = new Scanner(System.in);		

	ArrayList<Paciente> p = new ArrayList<Paciente>(); //Array q armazena os pacientes
	
	do{ //repete o menu até q seja selecionado a opção 10 - sair
		System.out.println("-------------------------");
		System.out.println("MENU PRINCIPAL");
		System.out.println("-------------------------");
		System.out.println("1 - CADASTRAR PACIENTE");
		System.out.println("2 - BUSCAR PACIENTE");
		System.out.println("3 - EXCLUIR PACIENTE");
		System.out.println("4 - ALTERAR DADOS PACIENTE");
		System.out.println("5 - EXCLUIR PACIENTE"); //igual ao item 3 do seu menu
		System.out.println("6 - BUSCAR CONSULTA");
		System.out.println("7 - LISTAR CONSULTAS");
		System.out.println("8 - ALTERAR CONSULTA ESPECÍFICA");
		System.out.println("9 - EXCLUIR CONSULTA ESPECÍFICA");
		System.out.println("10 - SAIR");
		System.out.println("Digite sua opção: ");
		op = sc.nextInt();
			
		switch (op) {//essa opção de escolha é a correta e ñ o "if"
		
		case 1:
			Paciente p1 = new Paciente(); //buffer de paciente
			System.out.println("Digite o nome: ");
			System.out.flush(); //limpa o buffer do teclado
			nome = sc.next();
			p1.setNome(nome);
				
			System.out.println("Digite o CPF do paciente: ");
			System.out.flush();
			cpf = sc.next();
			p1.setCpf(cpf);
				
			System.out.println("Digite o endereço do paciente: ");
			System.out.flush();
			endereco = sc.next();
			p1.setEndereco(endereco);
				
			System.out.println("Qual o sexo: ");
			System.out.flush();
			sexo = sc.next();
			p1.setSexo(sexo);
				
			System.out.println("Qual a idade: ");
			System.out.flush();
			idade = sc.next();
			p1.setIdade(idade);
				
			p.add(p1);//adiciona o paciente atual à nossa lista de pacientes
				
			break;
			
		case 2:
			System.out.println("Digite o CPF do paciente: "); //busca o paciente pelo CPF
			System.out.flush();
			cpf = sc.next();
			boolean find=false;
			for (int i=0; i<p.size();i++){
				Paciente currentPaciente = (Paciente) p.get(i);
				if (currentPaciente.getCpf().equals(cpf)){
					System.out.println("CPF: "+currentPaciente.getCpf());
					System.out.println("Nome: "+currentPaciente.getNome());
					System.out.println("Idade: "+currentPaciente.getIdade());
					System.out.println("Endereço: "+currentPaciente.getEndereco());
					System.out.println("Sexo: "+currentPaciente.getSexo());						
					find=true;
					//insira uma função para pausar até que o usuário leia...
					break; //sai do laço de repetição
					}
				}
			if (!find){
				System.out.println("Paciente não encontrado!");					
			}								
			break;
			
		case 3:
			//implementação
			break;
			
		case 10:
			System.out.println("Saindo..");
			System.exit(0);
			break;
		
		default:
			System.out.println("Opção inválida!");
			
			break;
			
		}			
	}while (op!=10);	
}

}[/code]

Agora ficou fácil d vc terminar!
Espero ter ajudado…

Omi, primeira de luxo!!! Obrigado de verdade!!!

O problema é que dessa maneira que você tá fazendo eu fico perdido… kkkkkkkkkkkkk

A gente só teve 5 aulas de JAVA, nunca tinha visto programação. rsrs Todo dia tô tentando aqui pra ver se termino. Preciso de 11,7 pra passar… A nota desse projeto + a prova de recuperação que provavelmente será a mesma nota do trabalho. rsrsrs

Obrigadão mesmo!

Abraço!