Opinião de um programador Delphi sobre Java

A “galera de Python” nao tem nada contra a “galera de Java”. A primeira so nao entende pq a segunda ainda acha bonito escrever tanto codigo pra tao pouca funcionalidade. O mesmo vale pro pessoal do Ruby, que no fim das contas eh um Python menos esquisito. Ou mais esquisito, depende de onde vc veio.

Python (e Ruby) sao multiplataforma, usam o mesmo conceito de maquinas virtuais que o Java, a diferenca eh que, enquanto java tenta se manter completamente fora das questoes que envolvem ficar dependente de uma plataforma, e nao eh incomum ver casos onde a API padrao do java faz um trabalhinho bem porco, python/ruby se esforcam pra ser multiplataforma quando eh interessante - ou seja, tem codigo na api padrao do python que so funciona no win32, mas vc vai ficar sabendo disso de cara pq o nome do modulo comeca com win32_alguma_coisa :slight_smile:

Python e Ruby nao tem nada de taaaaaaao excepcional, mas sao linguagens otimas, e comparadas com Java, mais produtivas, e eh soh.

Interessante o Phyton e o Ruby…

Acho que qualquer hora posso dar uma olhadinha e ver se aprendo alguma coisa…

Qualquer dia poderiamos abrir um tópico para comentar sobre o assunto!!

[color=orange]Warning: possible ambiguity in the following proposition:[/color]

Bom vou explicar melhor: eu pensava que no Thinlet eu ia fazer algo tipo new Janela(“file.xml”) e então fazer janela.getTextFieldNome(), janela.getTextAreaDescricao() ou algo assim, mas não é bem assim, para acessar os objetos você tem um jeito maluco usando apenas Object, apesar de que já vi sobre um projeto de criar wrappers. Entendeu?

@adicionado: o SwingGambiarrizadaParaCarregarDeXML seria um exemplo para o SwiXML, eu sei que thinlet usa AWT e XUL.

[color=orange]Error: unknown identifier: “rula”[/color]

Foi uma brincadeira, apesar de não ter grana mesmo!! Obrigado pelas dicas! Acho que estudar filosofia vai me ajudar a entender OO também hehehehe.

Bem um problema das propriedades é que o usuário da classe não sabe se está acessando um campo ou uma propriedade, já nos getters/setters fica claro que há algum código de acesso. Mas não acho isso tão terrível. Eu acho esquisito um código assim:

eva.setFactory(info.getFactory());
eva.setPilot(info.getPilot());
eva.setEngine(info.getEngine());

Acho que assim fica menos estranho, e os getters/setters rodam debaixo do pano:

eva.factory := info.factory;
eva.pilot := info.pilot;
eva.engine := info.engine;

Acho que ninguém disse isso aqui.

Tá dizendo que o Java é extremamente ruim?

Caramba… eu pensava assim LIPE!!

Daí eu li uns livros de Pattern… daí comecei a pensar diferente… comecei a entender que quanto mais separar melhor!!! Daí, ao invés de eu colocar um método salva dentro de uma objeto aluno, comecei a colocar o método salvar em um DAO e só me preocupo em passar o aluno por parâmetro!!!

Agora vocês vém me dizer que o ideal é voltar atrás e juntar tudo de novo??
Eu percebi que o pessoal aqui curte isso. Mas e a separação de responsabilidades? Continuam existindo???

Seria isso o que o Philip e a galera chama de desenvolver Orientado a Objeto???

Sei lá esquisito…

Viu os filmes também? Sabe Japa mesmo? Quando busquei traduções para Zankoku na tenshi no teeze (a música de abertura da série), achei coisas bem diferentes umas das outras. Parece que traduzir Japonês é muito difícil.

Se eu te der R$100 você traduz Fairy Dreaming pra mim hehehe? (apesar do título ser em inglês, ela é japonesa)

Ambiente distribuído? De verdade? DTO até que alguém tenha uma idéia melhor…

[quote=Thiago Senna]
Daí eu li uns livros de Pattern… daí comecei a pensar diferente… comecei a entender que quanto mais separar melhor!!! Daí, ao invés de eu colocar um método salva dentro de uma objeto aluno, comecei a colocar o método salvar em um DAO e só me preocupo em passar o aluno por parâmetro!!![/quote]

Você entendeu errado, isso não tem nada a ver com camadas tem a ver com não fazer

String senha = usuario.getSenha();
if(senha.equals(parametro)
 return true...

E sim


boolean senhaValida = usuario.validarSenha(parametro);

Existe um tal de Object Wrapper Thinlet (OWTHINLET).

 boolean senhaValida = usuario.validarSenha(parametro);

Insistindo, pcalcado me explique como você mudaria essa sua implementação se o sistema fosse distribuído, ou pior, se passasse a ser.

[quote=jprogrammer] boolean senhaValida = usuario.validarSenha(parametro);

Insistindo, pcalcado me explique como você mudaria essa sua implementação se o sistema fosse distribuído, ou pior, se passasse a ser.

[/quote]

Ele ja respondeu.

Como ele disse “de verdade” o que nao é muito comum.

]['s

[quote=jprogrammer]Insistindo, pcalcado me explique como você mudaria essa sua implementação se o sistema fosse distribuído, ou pior, se passasse a ser.
[/quote]

Essa não é minha implementação, isso é o conceito defendido naqueles livrinhos que passei,e scriots por quem realmente entende (e muitas vezes definiu) a Orientação a Objetos.

Entretanto, questionar é sinal de inteligência, então vamos lá.

Você leu meu último post?

Primeiro, você não deveria ficar pensando muito no futuro distante. Se o sistema se tornar distribuido, se o sistema mudar de arqutietura, se o pé grnade invadir o datacenter… pense no seu presente e futuro imediato.

Depois, “sistema distribuído” é o termo mais genérico do mundo, me diz o que você quer dizer com isso.

Caras, aproveitando que o tópico chegou em javaBeans eu aprendi a usá-los e também a fazer uso da OO (até onde eu entendia) com este livro aqui

Ele diz para fazermos o seguinte

pag Jsp --> JavaBean Cliente --> JavaBeanUsaBanco

a pág. jsp usa o objeto cliente, com todos os seus atributos e getters e setters o qual chama o JavaBeanUsaBanco.

Temos algo do tipo:

cliente = new Cliente("Zampa");
cliente.gravaCliente();

onde na classe cliente teriamos

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

e o cliente seria o responsável pela gravação dos dados.

Eu ainda nao li o artigo que o Lipe falou no tópico encapsulamento e também nao li nada sobre Design Patterns ainda, mas gostaria de saber:

Isso é OO?
Se não é como seria então???

O que o padrão que o Thiago falou difere disso???

Obrigado.

Ps.: Eu estou meio perdido nessa de padrões, por isso não consegui me concentrar neles ainda.

Felipe,

Isso é em verdade um pouco de más práticas com JSP. Mas isso nós vamos discutir neste tópico (esse aqui já tá super-lotado).

Não entendi esta parte:

boolean senhaValida = usuario.validarSenha(parametro);

Ja fiz de duas formas:

String nome = usuario.getNome(); e String nome = usuario.nome;

Pelo código ali então, eu deveria ter métodos que validassem meus atributos dentro do meu Bean?

Cara com todo respeito, vc sabe que o autor deste livro é muito conhecido aqui em brasília, mas naum me lembro de ter lido um livro de informática pior que este. :evil: na verdade nem li só olhei…

[quote=jprogrammer] Temos que pensar sim no que pode acontecer com um sistema, isso garante a extensão da vida útil do mesmo.
Senão para que a gente se preocuparia com esses DAOs, Patterns e monte de coisas. Não existem apenas para garantir a reusabilidade e facilidade de manutenção. [/quote]

Viche… agora você tocou na ferida!!! AI!!!

O Philip falou que não é necessário ficar pensando no futuro por que foi comprovado que 90% do que criamos pensando que um dia será usado e reaproveitado, na verdade não é reaproveitado e nem utilizado!!!]

Leia um livrinho de XP que você vai entender nosso ponto de vista!!!

Abraços!

Pelo menos me valeu no sentido de mostrar JSP. Eu não conhecia. Foi bem prático tb… Agora, mudar a forma de trabalho é mais fácil… :wink:

Voltando ao assunto Delphi x Java…

Então a gente desenvolve com patterns apenas porque é bonito ?
Parei…

Eu sei que não existe sistemas perfeito, mas se a gente pensar assim é melhor usar o VB.

[quote=jprogrammer]Então a gente desenvolve com patterns apenas porque é bonito ?
Parei…

Eu sei que não existe sistemas perfeito, mas se a gente pensar assim é melhor usar o VB.
[/quote]

Jprogrammer, patterns em si são (soluções) reusáveis, mas o software construído com patterns não é imediatamente reutilizável.

Ninguéme stá falando em não usar patterns aqui :wink:

jprogrammer, sistemas perfeitos são aqueles que é possivel provar matematicamente que ele faz exatamente aquilo que é esperado. O dificil é provar, dado que isso é um problema sem solução computacional.