Repositorio

11 respostas
java
R

Boas pessoal,

Estou entre mãos com um projeto de licenciatura,

Eu tenho class’s Maquina e Peca e estou a utilizar um Repositorio para fazer as funcoes, isto é, para fazer o adicionaMaquina, adicionaPeca, ArrayList, etc, etc, nas class Maquina e Peca so estou a implementar os parametros que quero, por exemplo em Maquina, codigo_numerico, nome, etc
Agora o problema é que no Repositorio estou com erros porque nao reconhece os parametros de Maquina e Peca como o codigo_numerico etc, alguem me consegue ajudar ?

Cumprimentos,
RXCSousa

11 Respostas

M

Posta o código, para termos uma noção melhor do que está acontecendo.

FearX

Eu acredito que você esteja confundindo o padrão Repository com as obrigações de uma interface…

R

Eu tenho por exemplo a class Maquina ::

import java.util.ArrayList;
import java.io.Serializable;

/**

  • Escreva a descrição da classe Maquina aqui.

  • @author (seu nome)

  • @version (número de versão ou data)
    
    */
    
    public class Maquina implements Serializable
    
    {
    
    private static int numero;
    
    public static String codigo_numerico;
    
    public static int capacidade;
    
    public static String estado;
    
    private ArrayList maquinas;
    
    private ArrayList pecas;
    
    public ArrayList pecasTerminadas;
    

    /**

    • COnstrutor para objetos da classe Maquina
      */
      public Maquina(int capacidade)
      {
      numero = numero +1;
      this.codigo_numerico = “MQ_” + numero;
      this.capacidade = capacidade;
      this.estado = “Espera”;
      maquinas = new ArrayList();
      pecas = new ArrayList();
      pecasTerminadas = new ArrayList();
      System.out.println(“Cod::” + codigo_numerico + " Nova maquina adicionada com capacidade para " + capacidade + “pecas.”);
      }
    public Maquina()
    
    {
    
    numero = numero +1;
    
    this.codigo_numerico = MQ_ + numero;
    
    this.capacidade = 2;
    
    this.estado = Espera;
    
    maquinas = new ArrayList();
    
    pecas = new ArrayList();
    
    pecasTerminadas = new ArrayList();
    
    System.out.println(Cod:: + codigo_numerico + "Nova maquina adicionada com capacidade para " + capacidade + pecas);
    
    }
    
    public String getCodigo_numerico()
    
    {
    
    return codigo_numerico;
    
    }
    
    public int getCapacidade()
    
    {
    
    return capacidade;
    
    }
    
    public void setCapacidade (int novaCapacidade)
    
    {
    
    capacidade = novaCapacidade;
    
    System.out.println(Cod:: + codigo_numerico + " Nova capacidade de " +capacidade);
    
    }
    
    public String getEstado()
    
    {
    
    return this.estado;
    
    }
    
    public int getTotalPecas()
    
    {
    
    return this.pecas.size();
    
    }
    
    public int getTotalTerminadas()
    
    {
    
    return this.pecasTerminadas.size();
    
    }
    
    public void mostrarMaquina()
    
    {
    
    System.out.println("/Cod.:" + codigo_numerico + /Estado: + estado + /Capaciadade: + capacidade + /Stock: + pecas.size() + /Produção: + pecasTerminadas.size());
    
    }
    
    public int getTotalmaquinas()
    
    {
    
    return this.maquinas.size();
    
    }
    

}

e depois uso a classe repositorio para fazer por exemplo ::

import java.util.ArrayList;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.io.File;

import java.io.ObjectInputStream;

import java.io.ObjectOutputStream;

/**

  • Escreva a descrição da classe Repositorio aqui.

  • @author (seu nome)

  • @version (número de versão ou data)
    
    */
    
    public class Repositorio
    
    {
    
    private static Repositorio baseDados = null;
    
    public int totalMaquinas;
    
    public int totalPecas;
    
    private boolean manutencao;
    
    private boolean trabalho;
    
    private boolean espera;
    
    /<em>private boolean manutencao;
    
    private boolean espera;
    
    private boolean trabalho;</em>/
    
    public static Repositorio getbaseDados()
    
    {
    
    if(baseDados == null) baseDados = new Repositorio();
    
    return baseDados;
    
    }
    

    private ArrayList maquinas;

    private ArrayList pecas;

    private Repositorio()
    
    {
    
    maquinas = new ArrayList();
    
    pecas = new ArrayList();
    
    }
    
    e por exemplo na seguinte função ::
    
    public void addMaquina (Maquina m) throws IllegalArgumentException, MaquinaExistenteException
    
    {
    
    totalMaquinas = 0;
    
    if(m==null) throw new IllegalArgumentException (Maquinas não pode ser vazia!);
    
    for(Maquina ma : this.maquinas)
     {
         if(m.getCodigo_numerico().equals(this.getCodigo_numerico()))
         {
             throw new MaquinaExistenteException ("Maquina já existe, adicione nova Maquina!");
         }
         else
         {
             maquinas.add(m);
         }
         totalMaquinas++;
     }
    

    }

dá-me erro no ::

equals(this.getCodigo_numerico()))

M

Referente ao erro. ta acontecendo porque o “this” é referente a classe repositorio. E essa classe não tem um método getCodigo_numerico().
Como esse método vem do objeto Maquina, para chamá-lo precisa vir de uma instância de Maquina

R

Faco entao .equals(maquina.getCodigo_numerico())) ou Maquina?

Dá-me erro que o metodo é não estatic mas eu fiz ::
public static String codigo_numerico;

Ao fazer Repositorio extends Maquina resolvo 97% dos problemas, encontro-me só com um problema

M

Cara não adianta você resolver os problemas se não faz sentido. Vc tem q entender o q vc quer fazer e o q está fazendo.

Eu li bem por cima o código, mas se vc quer resolver o problema tem resolver os seguintes passos da sua classe Repositorio:

  1. Ajustar o tipo da variavel maquinas, é preciso adicionar o generics, ArrayList. Dica prefira usar a interface List a implementação do ArrayList.

  2. Como vc está fazendo uma iteração da lista de maquinas pelo for each, se eu entendi bem vc deve usar a variavel ma.getCodigo_numerico(), se isso te atende só vc vai poder responder.

R

Eu entendo, para mim fazia sentido fazer a maior parte das funções e metodos referentes a maquinas dentro da propria class Maquina, por conselho disseram-me para fazer assim, apenas definir metodos e fazer os getters e setters de Maquina na classe Maquina e igual em Peca e fazer tudo em Repositorio .

1.Não estou a entender o passo do interface List ?

2.Sim resolveu o problema e até faz sentido eu já estou a passar a ma Maquina por isso faz sentido que seja ma.

M

Ok, por isso mesmo n fazia sentido a classe repositorio extender da classe maquina.

Esse link deve dar uma ideia de como fazer isso.

R

matheusYudi, sim eu entendo +/- bem o funcionamento disso, a minha dúvida é quando chamo e assim, mas neste momento não é o meu problema…
Este foi um projeto que fiz ontem desse modo, porque no meu projeto inicial tinha cada coisa no seu sitio, addMaquina em Maquina e tudo o que tivesse a ver com isso, etc etc … Consegui por esse programa a funcionar, agora a minha dúvida é na minha class “Teste” onde faco os try e catch das excepcoes

M

Vc chegou a ler todo link que eu te enviei? se vc n entendeu alguma coisa sobre esse assunto provavelmente deve ter outros tópicos no próprio guj sobre listas, interfaces e generics. É importante que esse conhecimento esteja bem fixado, pois ele é a base do java.

Essa é uma pergunta muito genérica, tudo vai depender de cada caso e de como está a estrutura do seu código. Esse é um assunto mto extenso para se colocar em um fórum, tente procurar cursos ou video aulas na internet sobre excessões

R

Sim, irei fazer isso futuramente, para o projeto que tenho de entregar já não fará diferença, mas obrigado na mesma !

Criado 23 de janeiro de 2020
Ultima resposta 23 de jan. de 2020
Respostas 11
Participantes 3