Ir ao conteúdo

Posts recomendados

Postado

Tenho o seguinte exercício sobe POO:

Crie uma classe Agenda que pode armazenar 10 pessoas e que seja capaz de realizar as seguintes operações:

* Armazena Pessoa

* Remove Pessoa

* Imprime agenda

* Imprime pessoa

 

Criei esse codigo, gostaria de saber como posso melhorar ele

Classe Main

public class Main {
    public static void main(String[] args) {
        Agenda agenda = new Agenda();
        agenda.cadastrarPessoa("Fabiano", "(49)9.9931-9883", 5);
        agenda.cadastrarPessoa("Marcos", "(46)9.9944-2821", 1);
        agenda.imprimeAgenda();
        agenda.imprimePessoa(5);
        agenda.imprimePessoa(1);
    }
}

 

Classe Pessoa  

import java.util.Scanner;

public class Pessoa {
    Scanner read = new Scanner(System.in);

    private String nome;
    private String numero;
    private int ID;

    public Pessoa(String nome, String numero, int ID) {
        this.nome = nome;
        this.numero = numero;
        this.ID = ID;
    }

    //Nome
    public String getNome() {
        return nome;
    }
    public void setNome(String nome) {
        this.nome = nome;
    }

    //Número
    public String getNumero() {
        return numero;
    }
    public void setNumero(String numero) {
        this.numero = numero;
    }

    //ID
    public int getID() {
        return ID;
    }
    public void setID(int ID) {
        this.ID = ID;
    }
}

 

Classe Agenda

import java.util.Scanner;

public class Agenda {
    Scanner read = new Scanner(System.in);

    Pessoa[] agenda = new Pessoa[10];

    public void cadastrarPessoa(String nome, String numero, int ID){
        while(ID <= 0 || ID > 10){
            System.out.printf("ID inválido, digite novamente: ");
            ID = read.nextInt();
        }
        agenda[ID-1] = new Pessoa(nome, numero, ID);
    }


    public void imprimePessoa(int ID){
        while(ID < 1 || ID > 10 || agenda[ID-1] == null){
            System.out.printf("O ID para imprimir é inválido ou não esta cadastrado, digite novamente: ");
            ID = read.nextInt();
        }
        ID -= 1;
        System.out.println("-----------------------");
        System.out.println("Nome: " + agenda[ID].getNome());
        System.out.println("Número: " + agenda[ID].getNumero());
        System.out.println("ID: " + agenda[ID].getID());
    }

    public void removePessoa(int ID){
        while(ID < 1 || ID > 10 || agenda[ID-1] == null){
            System.out.printf("O ID para remover é inválido ou inexiste, digite novamente: ");
            ID = read.nextInt();
        }
        ID -= 1;
        agenda[ID] = null;
    }

    public void imprimeAgenda(){
        System.out.println("ID cadastrados: ");
        for(int x = 0;x < 10;x++){
            if(agenda[x] != null){
                System.out.println(agenda[x].getID());
            }
        }
    }
}

 

Postado
  • Apague o objeto Scanner da classe Pessoa, essa é uma classe de molagem e não deveria interagir com o usuário.
  • Não use o ID da pessoa como o índice do vetor da classe Agenda, são coisas diferentes.
  • Ainda na classe Agenda, faça o método cadastrarPessoa receber um objeto do tipo Pessoa, afinal essa é a função desse método: cadastrar pessoa, não pegar os dados de uma pessoa, montar e salvar.
  • Siga essa regra de POO: "Uma classe só deve fazer o que ela se propõe a fazer". Essa regra também se aplica aos métodos.

Algo assim: Agenda.zip

  • Amei 1

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...