Aprendizado do Java, sem esquecer o que já viu

Pessoal

Estou retomando os estudos no Java e já vi muita coisa do básico do básico e sinceramente não vi muito progresso pois talvez (minha maior dificuldade) é ver a aplicabilidade das coisas, explico:

Estudando matrizes, poxa… onde vou usar matriz? :shock: Esse é apenas um exemplo, creio que estou precisando mesmo é de um estudo de caso uma vez que já tenho base de outras linguagens orientadas a evento (posso estar falando bobagem pois vou esbarrar em muita dúvida conceitual creio).

Será que devo ser ortodoxo e seguir primeiramente estudando OO e só depois ir para o Java ou então já estudar o Java direto uma vez que apenas o conceito de OO é suficiente? (conceito e o básico eu tenho de herança, polimorfismo, etc.)

Minha dificuldade é que eu fico vendo as partes do Java (toda apostila e livro é assim) e quando chego a certa altura não consigo ver a aplicabilidade e acabo por esquecer como realmente funciona e isso me desanima MUITO.

Será que não existe algum jeito de aprender seguindo uma ordem e que nunca deixe para traz o conteúdo que você já estudou?
Alguém conhece algum curso on-line que tenha essa metodologia de ensino?

Uma boa alternativa é vc tentar desenvolver um projetinho simples, um cadastro de clientes por exemplo… e na medida que vai tendo dificuldades vai pesquisando e/ou postando aqui no guj. Eu faria isso…

Hum… Você precisa aprender uma língua estrangeira que você realmente não vá usar (como latim); aí é que você vai ver que há coisas que se aprendem que não se aplicam imediatamente, se é que vão se aplicar.

De qualquer maneira, parece que você está tentando ler o livro do Deitel e fazer todos os exercícios do começo para o fim; nem eu aprendi as coisas desse jeito, que não tenho tamanha paciência. Pule algumas coisas, e volte caso necessário. Ninguém consegue aprender as coisas linearmente (do começo para o fim), e muitas vezes você precisa usar coisas que ainda nã aprendeu.

Então, tem um amigo meu (ele é muito bem sucedido hoje nesse meio) que disse que aprendeu o Java pegando o livro do Deitel e foi de cara fazendo o exercício final (aquele do gerenciador de mensagens feito em Java), foi digitando os códigos e quando dava erro de compilação apagava tudo e fazia tudo denovo até funcionar e foi analizando linha a linha.

Mas sei lá, cada um tem um intelecto e jeito de raciocinar, talvez essa forma tenha sido boa para ele, mas talvez não seja para mim. Na faculdade quando fiz meu TCC eu fiz em Delphi e a coisa fluiu muito pois via aquilo todo dia e conseguia resolver a maioria dos problemas sozinho.

Bom, vou tentar fazer o programa de cadastros com um simples relatório, é relativamente fácil no Delphi e no Java se usar o wizzard do Netbeans fica muito fácil também mas isso é aprender de forma errada, tentarei fazer as classes de gravar, excluir, alterar, etc, montar a GUI em Swing, a string de conex com o banco, etc.

Vamos ver se estudando dessa forma eu consigo sentir uma evolução.

Entendi o que você quiz dizer e creio que é ai que estou pecando. Outra coisa interessante que me ajudaria muito são video-aulas, coisa pouco comum até onde pesquisei na comunidade Java ou andei procurando nos lugares errados? Esse conteúdo é muito farto no Delphi e me ajudou muito já.

Você pode juntar o útil ao agradável, pois em Java todos os conceitos de OO são implementados pela linguagem, com exceção de herança multipla. :wink:

Bem, sobre a plicabilidade das coisas, fica realmente difícil quando não se entende fundamentos. Sobre matrizes, imagens digitais são matrizes, e eis aí, uma boa aplicabilidade disso. Não se preocupe muito com a linguagem em si, estude os algoritmos. E depois você vai escrevendo-os em uma linguagem a seu gosto.

Cara, funciona mais ou menos assim… Isso talvez vc nao use hoje, mas pode acrescentar na sua lógica de programação e na capacidade de resolução de problemas… veja a seguinte situação (que já aconteceu algo parecido comigo)

Você está na empresa e derrepente chega um sistema em java 1.3 struts 1.1 cheio de regras, feito no itext puro para gerar os relatórios…e um belíssimo caso de uso cheio de regras de negócio e lógicas…

Quando vc ve este caso uso, logo vc pensa…vou fazer assim e assim

e aí que vc vai ter um diferencial

se vc sabe as matrizes, vai dizer…pocha… posso usar uma matriz aqui para fazer isso (claro que talvez daria pra resolver com a classe vector, tudo bem, eh a mesma idéia)

você sabe como resolver o problema

em vez de olhar pro gerente de projetos e dizer… e agora?

Cara, posso te dizer que se vc nao colocar a mão na massa e fazer vários exercícios e exemplos vc não vai abosorver o conteúdo… realmente não dá pra absorver (praticamente decorar) api de programação

Digo isso porque as vezes eu leio revistas de programação, leio todos o artigo completo e no outro dia se tivesse que implementar aquele mesmo código fonte eu acho que não conseguiria…simplesmente pq eu não abri o meu eclipse e nao codifiquei os exemplos

Acho que é isso cara
boa sorte nos estudos

Eu já discordo. Quem já tem diploma tem a obrigação de saber algoritmos. Porém, se não cumpriu com a obrigação, fazer o quê … uma hora a vida cobra.

Bem, mas como eu tenho a esperança de que algoritmos não são o problema do nosso companheiro, eu sugiro estudar a linguagem mesmo. Não decorar API, não estou falando disso. Mas entender seus fundamentos: a diferença entre tipos primitivos e tipos de referência, entender como você declara e implementa classes, classes internas, o mecanismo de herança, interfaces, Strings, etc … Não que você não conheça esses conceitos de linguagens anteriores, mas justamente, entendê-los como eles funcionam em Java. O problema do Deitel é que ele pressupões que o leitor nunca viu programação na vida. Nesse caso, eu recomendo mais a abordagem do Head First.

E uma última sugestão, se você quer realmente aprender, fuja de IDE’s por enquanto, digitar o código sem auto-completar é chato, porém te ajuda muito a memorizar a sintaxe da linguagem. Compilar e executar na linha de comando também é bom, você é obrigado a entender como as classes são organizadas em pacotes e como a estrutura de diretórios deve refletir isso. Te poupa muita dor de cabeça na hora de configurar um Eclipse ou NetBeans da vida.

Eu já discordo. Quem já tem diploma tem a obrigação de saber algoritmos. Porém, se não cumpriu com a obrigação, fazer o quê … uma hora a vida cobra.

Bem, mas como eu tenho a esperança de que algoritmos não são o problema do nosso companheiro, eu sugiro estudar a linguagem mesmo. Não decorar API, não estou falando disso. Mas entender seus fundamentos: a diferença entre tipos primitivos e tipos de referência, entender como você declara e implementa classes, classes internas, o mecanismo de herança, interfaces, Strings, etc … Não que você não conheça esses conceitos de linguagens anteriores, mas justamente, entendê-los como eles funcionam em Java. O problema do Deitel é que ele pressupões que o leitor nunca viu programação na vida. Nesse caso, eu recomendo mais a abordagem do Head First.

E uma última sugestão, se você quer realmente aprender, fuja de IDE’s por enquanto, digitar o código sem auto-completar é chato, porém te ajuda muito a memorizar a sintaxe da linguagem. Compilar e executar na linha de comando também é bom, você é obrigado a entender como as classes são organizadas em pacotes e como a estrutura de diretórios deve refletir isso. Te poupa muita dor de cabeça na hora de configurar um Eclipse ou NetBeans da vida.[/quote]

De fato, algoritimo não é problema pra mim pois já fiz uma faculdade de TI, o meu problema é a linguagem mesmo e toda complexidade que envolve ao se sair de aulas teóricas de OO e aplicar isso após programar de forma procedural.

Segurei os conselhos de vocês todos e vou procurar fazer as coisas acontecerem dessa vez, preciso incorporar isso pois pretendo mesmo mudar minha vida.

Mas foi você mesmo que disse que tem dificuldade em ver a aplicabilidade das coisas(e deu exemplo de matrizes). Isso pode ser resolvido com domínio dos algoritmos. Se dominar eles, com um livro de java ou qualquer outro que seja, vai codificar qualquer coisa.

Cara, vai no sourceforge, no site da apache foundation ou no codehaus e baixa os fontes de alguns programas que vc achar interessante.
Lê eles até cansar, vai dar pra vc ver como que orientação a objetos é usada no mundo real.

Depois faça algum programa cujo o problema seja interessante o suficiente pra que vc se esforce pra fazê-lo funcionar.
Ou um programa que vá resolver um problema seu.

Eu não me expressei bem, desculpe. Eu sei que uma matriz tem várias utilizades e a principal é guardar os valores de forma temporária para serem recuperados quando necessário for…

O maior problema pra mim eu creio é OO, talvez seja ai meu problema, mas como o colega disse, vc estudando o Java vc estuda OO pois tudo é baseado em OO tirando o fato que o Java não faz dupla herança (salvo engano é isso) como o C++ faz.

Para não esquecer o que já foi visto, é simples: basta praticar, desta forma vc fixa o conhecimento obtido. :wink:

De fato…

Aproveitando o tópico para não abrir outro, como era a rotina de vocês quando não trabalhavam na área de programação e começaram a estudar? Da pra falar um pouco sobre isso pra mim pessoal?

Eh muito facil esquecer qualquer coisa quando vc nao tem contato com isso todos os dias. Eu mesmo, trabalhei um tempo com java sabia a API inteira de traz pra frente plantando bananeira, mas hoje em dia lembro pouca coisa, sempre tenho que consultar. (hoje trabalho com .NET).
A unica coisa que vc pode fazer se nao esta trabalhando eh continue estudando. Bole uns sisteminhas pra fazer e vai aplicando as coisas que vc esta aprendendo, participa de forums etc.
Algumas pessoas dizem que eh bom pegar projetos open source, etc… mas se vc nao eh experiente o suficiente com java as vezes eh um pouco dificil de entender o que pode te complicar ainda mais, por isso eu acho uma boa ideia fazer os seu proprio projeto.

//Daniel

[quote=windsofhell]
Eh muito facil esquecer qualquer coisa quando vc nao tem contato com isso todos os dias. Eu mesmo, trabalhei um tempo com java sabia a API inteira de traz pra frente plantando bananeira, mas hoje em dia lembro pouca coisa, sempre tenho que consultar. (hoje trabalho com .NET).
A unica coisa que vc pode fazer se nao esta trabalhando eh continue estudando. Bole uns sisteminhas pra fazer e vai aplicando as coisas que vc esta aprendendo, participa de forums etc.

//Daniel[/quote]

+1

(faz quase um ano que estou trabalhando quase que só com C++ e C# - só lembro da API porque fico aqui atendendo no fórum.)

Salve! Dê uma olhada no www.javapasion.com

ops, comi uma letra: http://www.javapassion.com/