Número por extenso - Trabalho  XML
Índice dos Fóruns » Java Básico
Autor Mensagem
Soruji
JavaGuru

Membro desde: 02/01/2012 05:58:19
Mensagens: 245
Offline

Bom dia pessoal,
Estou postando um trabalho que fiz de java, onde um usuário digita um número de 0 a 1000 e numa caixa de diálogo o número é retornado por extenso. Foi meu primeiro "grande projeto" em java, mas agora que eu estou tentando estudar melhor a linguagem vi que posso aperfeiçoar esse código, até para ficar bem mais legível. Vcs poderiam me ajudar postando códigos do mesmo programa mostrando o que eu poderia estar melhorando (talvez usando herança, polimorfismo, não sei)?

Ficaria muito grato.

Desculpe se o código ficou muito grande. Foi meu primeiro contato com a linguagem. rsrs


jaboot
Virtual Machine Man

Membro desde: 01/07/2005 14:25:37
Mensagens: 749
Localização: São Paulo
Offline

Cara, te falar que o https://github.com/caelum/caelum-stella já faz isso.
[MSN] [ICQ]
Soruji
JavaGuru

Membro desde: 02/01/2012 05:58:19
Mensagens: 245
Offline

Vcs poderiam me ajudar, pessoal? Juro que não faço mais . kkkkk
regis_hideki
Debugger

Membro desde: 29/03/2010 19:22:50
Mensagens: 51
Offline

Soruji wrote:Bom dia pessoal,
Estou postando um trabalho que fiz de java, onde um usuário digita um número de 0 a 1000 e numa caixa de diálogo o número é retornado por extenso. Foi meu primeiro "grande projeto" em java, mas agora que eu estou tentando estudar melhor a linguagem vi que posso aperfeiçoar esse código, até para ficar bem mais legível. Vcs poderiam me ajudar postando códigos do mesmo programa mostrando o que eu poderia estar melhorando (talvez usando herança, polimorfismo, não sei)?

Ficaria muito grato.

Desculpe se o código ficou muito grande. Foi meu primeiro contato com a linguagem. rsrs




Primeiramente, algumas sugestões. Prefira trocar isso:

int num; // declaração da variável num para capturar o numero digitado;
String U[]; // declaração do vetor unidade;
String d[]; // declaração do vetor dezena;
String c[]; // declaração do vetor centena;
String conv; // declaração da variável de conversão;

Por algo mais ou menos assim:

int nuumeroDigitado;
String unidade[];
String dezena[];
String centena[];
String variavelconversao;

A vantagem do segundo, é que, ao contrário do comentário, é carregado durante todo o código. Se há comentários demais, é porque o código não está muito claro.

Segundo, o nome dos dois primeiros vetores não estão muito sugestivos do que eles fazem. do jeito que está, parece que o primeiro representa apenas o ultimo dígito da direita (unidades), e o segundo, apenas o penúltimo (dezenas), o que não ocorre.

Terceiro, por que você carregou os arrays com mais posições do que o necessário? No primeiro, você carregou 21 posições e usou 20. No segundo, você carregou 11 e usou 10.
Soruji
JavaGuru

Membro desde: 02/01/2012 05:58:19
Mensagens: 245
Offline

Muito obrigado pelas dicas.

Então, como eu disse no começo, foi meu primeiro contato com a linguagem. Na verdade, estou buscando uma forma de aperfeiçoar o código usando melhor os conceitos de programação orientada a objetos, como encapsulamento, polimorfismo,herança. Creio que se eu conseguir dominar bem essas técnicas, meu código ficará naturalmente mais legível.

Com relação ao uso dos arrays, eu não entendi. Acho que se o código for testado, dá pra ver que nenhum array foi desnecessário.


Obrigado.
regis_hideki
Debugger

Membro desde: 29/03/2010 19:22:50
Mensagens: 51
Offline

Soruji wrote:Muito obrigado pelas dicas.

Então, como eu disse no começo, foi meu primeiro contato com a linguagem. Na verdade, estou buscando uma forma de aperfeiçoar o código usando melhor os conceitos de programação orientada a objetos, como encapsulamento, polimorfismo,herança. Creio que se eu conseguir dominar bem essas técnicas, meu código ficará naturalmente mais legível.

Com relação ao uso dos arrays, eu não entendi. Acho que se o código for testado, dá pra ver que nenhum array foi desnecessário.


Obrigado.


Quando você fez isso:

U = new String[21]; // atribui a variável U um objeto String de 21 posições;
d = new String[11]; // atribui a variável d um objeto String de 11 posições;

Criou um array U de 21 posições, ou seja, de 0 a 20, mas o U[20] não foi utilizado. O mesmo acontece com o d[10].

Não sei se daria para mudar muuuuuita coisa com esse código a fim de treinar práticas de OO. Eu sugeriria procurar outro tipo de problema.
regis_hideki
Debugger

Membro desde: 29/03/2010 19:22:50
Mensagens: 51
Offline

Estou enviando um exercício que tive no segundo semestre, e que mexe com herença e polimorfismo. Muita coisa nele poderia ser melhorada, mas para por em prática esses fundamentos, acho válido.
 Nome do arquivo EP1.PDF [Disk] Download
 Descrição Descrição
 Tamanho 64 Kbytes
 Baixado:  12 vez(es)

 Nome do arquivo EP1 - Início.zip [Disk] Download
 Descrição Esqueleto das classes
 Tamanho 4 Kbytes
 Baixado:  9 vez(es)

InicianteJavaHenrique
GUJ Ranger
[Avatar]

Membro desde: 16/02/2011 12:20:00
Mensagens: 792
Localização: São Vicente - SP
Offline

Olá Soruji

Você pode começar aprendendo:

"Como não aprender orientação a objetos: o excesso de ifs" por Guilherme Silveira

E em seguida ver este mesmo exercício feito por Arizoide

flw

Jogo de Xadrez com I.A feito em Java 2D. - HFS Softwares


Portal de Jogos - Questionário


"Felizes os Tópicos que estavam aqui neste dia: 07/12/2008, neste horário: 22:11:56 e neste local." - Henrique Ferreira da Silva


"O negócio de software é binário, você é 1 ou 0, vivo ou morto." - Filme Ameaça Virtual


"Existem 10 tipos de pessoas no mundo: as que entendem binário e as que não entendem."


"Compartilhar conhecimentos é uma forma de alcançar a imortalidade." - Dalai Lama


"Aquele que pergunta é um tolo por cinco minutos, mas aquele que não pergunta permanece um tolo para sempre." - Provérbio Chinês


"O topo da inteligência é alcançar a humildade." - Textos Judaicos


"Os computadores são incrivelmente rápidos, precisos e burros; Os homens são incrivelmente lentos, imprecisos e brilhantes; Juntos, seus poderes ultrapassam os limites da imaginação." - Albert Einstein



/**
*
* Programador Java
* @author Henrique Ferreira da Silva
* @since Julho/2010
*
*/
 
Índice dos Fóruns » Java Básico
Ir para:   
Powered by JForum 2.1.8 © JForum Team