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 ?
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.”);
}
publicMaquina(){numero=numero+1;this.codigo_numerico=“MQ_”+numero;this.capacidade=2;this.estado=“Espera”;maquinas=newArrayList();pecas=newArrayList();pecasTerminadas=newArrayList();System.out.println(“Cod::”+codigo_numerico+"Nova maquina adicionada com capacidade para "+capacidade+“pecas”);}
for(Maquinama:this.maquinas){if(m.getCodigo_numerico().equals(this.getCodigo_numerico())){thrownewMaquinaExistenteException("Maquina já existe, adicione nova Maquina!");}else{maquinas.add(m);}totalMaquinas++;}
}
dá-me erro no ::
equals(this.getCodigo_numerico()))
M
matheusYudi
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
RXCSousa
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
matheusYudi
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:
Ajustar o tipo da variavel maquinas, é preciso adicionar o generics, ArrayList. Dica prefira usar a interface List a implementação do ArrayList.
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
RXCSousa
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
matheusYudi
Ok, por isso mesmo n fazia sentido a classe repositorio extender da classe maquina.
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
matheusYudi
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
RXCSousa
Sim, irei fazer isso futuramente, para o projeto que tenho de entregar já não fará diferença, mas obrigado na mesma !