Ir para conteúdo
Fórum Script Brasil
  • 0

Ajuda com "abstração de locadora"


Almiro Batista

Pergunta

Olá, sou do primeiro semestre e estou tendo problemas com um trabalho em que deve ser feito um sistema de uma locadora.

Devo implementar pelo menos as seguintes funcionalidades:

Aluguel de filmes com o código de cliente e de filme

Devolução de filmes com o código do filme

Consulta do filme com o título ou parte dele.

Consulta de filme com o código

Histórico de locação de um cliente com o código do cliente

Há ainda umas outras coisas, como:

5 melhores filmes de 1 ator e 5 melhores filmes de 1 diretor

Filme mais locado

Cliente com mais locações

Indicar os 2 filmes com as melhores notas que têm coincidência de diretor ou ator mais locado para

um cliente

Mas as primeiras funcionalidades ali são mais importantes, o professor disse que a maioria das implementações devem ser feitas por arraylist. Quem puder dar uma ajudada e fazer pelo menos um método e explicar a lógica, eu agradeço, e espero poder ajudar mais pessoas daqui no futuro! Um abraço!

Diagrama de classes do BlueJ

public class CadastroDeAstros {
    // private ArrayList<Astro> lista;
    private HashMap<String, Astro> lista;

    // Construtor de CadastroDeAstros
    public CadastroDeAstros() {
        lista = new HashMap<String, Astro>();
        // lista = new ArrayList<Astro>();
    }

    //
    public boolean cadastrar(Astro novo) {
        lista.put(novo.getNome(), novo);
        return true;
        // return lista.add(novo);
    }

    public int size() {
        return lista.size();
    }

    public Astro buscaPorNome(String nome) {
        return lista.get(nome);
        /*
         * for(Astro a: lista) if(a.getNome().equals(nome)) return a; return
         * null;
         */
    }

    public String toString() {
        int cont = 1;
        String aux = "";
        for (Astro a : lista.values()) {
            aux += String.format("%5d. %s\n", cont, a.getNome());
            cont++;
        }
        return aux;
    }
}
public class Astro implements Comparable<Astro> {
    private String nome;

    public Astro(String nome) {
        this.nome = nome;
    }

    public String getNome() {
        return nome;
    }

    public String toString() {
        return nome;
    }

    public int compareTo(Astro outro) {
        return nome.compareTo(outro.nome);
    }
}
public class Personagem {
    private Astro astro;
    private String nome;

    public Personagem(Astro astro, String nome) {
        this.astro = astro;
        this.nome = nome;
    }

    public Astro getAstro() {
        return astro;
    }

    public String getNome() {
        return nome;
    }

    public String toString() {
        return astro.toString() + "/" + nome;
    }
}
public class CadastroDeFilmes {
    private ArrayList<Filme> lista;

    public CadastroDeFilmes() {
        lista = new ArrayList<Filme>();
    }

    public boolean cadastrar(Filme novo) {
        return lista.add(novo);
    }

    public int size() {
        return lista.size();
    }

    public String toString() {
        return lista.toString();
    }
}
public class Filme {
    private String codigo;
    private String titulo;
    private Astro diretor;
    private int ano;
    private double votos;
    private double nota;
    private ArrayList<Personagem> elenco;

    public Filme(String codigo, String titulo, Astro diretor, int ano, double votos,
            double nota) {
        this.codigo = codigo;
        this.titulo = titulo;
        this.diretor = diretor;
        this.ano = ano;
        this.votos = votos;
        this.nota = nota;
        elenco = new ArrayList<Personagem>();
    }

    public String getCodigo() {
        return codigo;
    }

    public String getTitulo() {
        return titulo;
    }

    public Astro getDiretor() {
        return diretor;
    }

    public int getAno() {
        return ano;
    }

    public double getVotos() {
        return votos;
    }

    public double getNota() {
        return nota;
    }

    public ArrayList<Personagem> getElenco() {
        return elenco;
    }

    public boolean addElenco(Personagem p) {
        return elenco.add(p);
    }

    public String toString() {
        return String.format("%s (%d): %s %.1f %.0f", titulo, ano,
                diretor, nota, votos);
    }

}
public class Locacao {
    private Cliente locador;
    private Filme locado;
    private Date retirada;
    private Date devolucao;

    public Locacao(Cliente locador, Filme locado) {
        this.locador = locador;
        this.locado = locado;
        retirada = new Date();
        devolucao = null;
    }

    public void encerrar() {
        if (devolucao == null) {
            devolucao = new Date();
        }
    }

    public Cliente getLocador() {
        return locador;
    }

    public Filme getLocado() {
        return locado;
    }

    public Date getRetirada() {
        return retirada;
    }

    public Date getDevolucao() {
        return devolucao;
    }

    public boolean isEncerrada() {
        return devolucao != null;
    }
}
public class CadastroDeClientes {
    private ArrayList<Cliente> lista;

    public CadastroDeClientes() {
        lista = new ArrayList<Cliente>();
        cadastrarTestes();
    }

    public void cadastrarTestes() {
        lista.add(new Cliente("Dilma Roussef"));
        lista.add(new Cliente("Michel Temer"));

        lista.add(new Cliente("Ivan Pinheiro"));
        lista.add(new Cliente("Edmilson Costa"));

        lista.add(new Cliente("Ze Maria"));
        lista.add(new Cliente("Claudia Durans"));

        lista.add(new Cliente("Jose Maria Eymael"));
        lista.add(new Cliente("Jose Paulo da Silva Neto"));

        lista.add(new Cliente("Jose Serra"));
        lista.add(new Cliente("Indio da Costa"));

        lista.add(new Cliente("Levy Fidelix"));
        lista.add(new Cliente("Luis Eduardo Ayres Duarte"));

        lista.add(new Cliente("Marina Silva"));
        lista.add(new Cliente("Guilherme Leal"));

        lista.add(new Cliente("Plinio de Arruda Sampaio"));
        lista.add(new Cliente("Hamilton Assis"));

        lista.add(new Cliente("Rui Costa Pimenta"));
        lista.add(new Cliente("Edson Dorta Silva"));

    }

    public String toString() {
        return lista.toString();
    }

    public int size() {
        return lista.size();
    }
}
public class Cliente {

    private String nome;

    public String getNome() {
        return nome;
    }

    public Cliente(String nome) {
        this.nome = nome;
    }
}

Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...