[RESOLVIDO] Dúvida para chamar metódo e melhorar a OO
6 respostas
Onimatsu
E aí moçada!
Eu sei que o problema deve ser fácil mais eu travei.
Estou fazendo um exercício onde não tenho dúvida alguma a dúvida ficou em um procedimento extra que tentei fazer sem o exercício pedir. Eu vou explicar:
1- Primeiro criei uma classe Conta
publicclassConta{/** ATRIBUTOS **/doublesaldo;doublelimite;Stringtitular;/** METÓDO **/voidimprimeArray(int[]array){// primeira forma de resolver o metódo com lengthfor(inti=0;i<array.length;i++){System.out.println(array[i]);}// segunda forma de resolver o metódo sem length "Java 5.0"for(intx:array){System.out.println(x);}}}
Eu sei o que um metódo imprimeArray está fazendo dentro de uma classe conta, não têm nada a ver. Eu bem que queria o metódo imprimeArray em uma classe separada mas só consegui chama-lo quando eu coloco junto com os atributos da Conta.
2- Criei uma classe com main para usá-la estou fazendo alguns testes com arrays;
Eu sei que a OO ficou muito ruim minhas dúvidas são:
Como eu faço para usar o metódo imprimeArray dentro da classe principal onde eu criei as arrays para substituir aquele system.out.print?
Eu posso separar tudo isso em três classes para ficar com orientação melhor?
Eu sei que você precisa de um monte de métodos que não se encaixam em nenhuma classe porque são utilitários. Eu sempre, em meus programas, crio uma classe “Util” e ponho dentro dela todos os métodos estáticos que posso usar de um programa para outro - um deles é a impressão de um array, conforme você deve ter entendido. Para ficar mais organizado, é sempre mais bonitinho escrever um comentário javadoc, até para você não se perder depois. Explique para que serve e como se usa.
publicclassUtil{/** * Imprime na saída-padrão um array de inteiros, um int por linha. * @param array O array de int a ser impresso. */publicstaticvoidimprimirArray(int[]array){for(intx:array){System.out.println(x);}}}
Então você usa esse método nas suas classes. Por exemplo,
Essa classe util é organizada isso muito bom já resolveu o meu problema com a orientação a objetos. Só que ainda estou com problemas para imprimir array a do seu exemplo funcionou mas já a minha array do tipo conta... Meu código ficou assim em resumo:
Eu consigo chamar o Util dentro da classe CriandoArrays sem problema porque o metódo está statico, mas na hora de colocar o agumento ele não aceita. Util.imprimeArray(array); O argumento array é minhasContasA Certo? Só que posição ele vai imprimir a [1] e [2] ou tenho que escolher uma das duas?
O pior de tudo é que o eclipse dá sugestões para mudar array para minhasContasA dentro da classe Util e essa não seria minha intenção porque quero deixar generalizado se eu fosse criar uma nova array com nome minhasContasB eu teria que criar outro metódo só para as minhasContasB veja como ficou:
Para você conseguir imprimir como você quer, é necessário sobrescrever o metodo toString(), informando como você quer a visualização da impressão de seu objeto Conta.
Segue abaixo sua classe conta com esta alteração.
OBS: Deixei seus atributos como "private", e utilizei metodos de acesso a seus atributos (gets, sets).
Att
Onimatsu
Astork fiz essa modificação na classe Conta exatamente como no seu exemplo eu posso fazer a inclusão dos dados através dos metódos get e set sem acessar diretamente o atributo isso é legal mas minha dúvida seria em usar a classe Util para imprimir a array inteira e não trazer os valores dos atributos individualmente
marcelo.bellissimo
Mas é isso que tá fazendo… imprimindo o array inteiro, mostrando todos os atributos de cada objeto que existe nela…
Onimatsu
Pessoal fiz alguns testes com toString tanto sozinho como combinado com a classe Util imprime todas as informações da array como no exemplo de Astork.
Um outro post que me ajudou bastante foi http://www.guj.com.br/posts/list/49820.java
Desculpa a mancada de não fazer todos os testes obrigado a todos pelas respostas. Abs!