Esse é o tipo de artigo que eu gosto muito de escrever. Ele serve como uma espécie de porto seguro para quem está com dificuldades em aprender alguma teoria como, neste caso, Orientação a Objetos em Java. Se esse é o seu caso, fique tranquilo que você não está sozinho! Esse é um dos assuntos que mais assusta programadores. E não é sem motivos. Ela, como um todo e em partes específicas, é um dos conceitos mais complexos de serem entendidos tanto por quem está aprendendo a programar, quanto para quem já programa em uma outra linguagem que não segue esse paradigma. Mas entenda que a dificuldade é excelente para você, que quer crescer. Pois No meio da dificuldade encontra-se a oportunidade, segundo Albert Einstein. Se é difícil, menos gente faz. Se menos gente faz, mais bem pago quem faz direito acaba sendo.

Estamos quase chegando às 3 maiores dificuldades, mas antes eu queria fazer um pequeno comentário. Nos meus textos eu normalmente dou dicas relacionadas ao mercado de trabalho. Eu vejo muita gente começando errado, o que me dá certa tristesa de ver. Então, se você está começando, ou pensando em começar, ou ainda, já é um programador mas está sentindo que precisa mudar de rumo, entenda que um bom conhecimento de Orientação a Objetos é sim um dos principais pilares para um grande programador. Todas as melhores linguagens do mercado, e que remuneram melhor, utilizam orientação a objetos. Se você não souber, realmente será difícil conseguir um posto de programador principal, de destaque, em qualquer empresa que você venha a trabalhar. Se você entender bem as principais dificuldades que esse paradigma possui, você estará muito bem, obrigado. Então siga a leitura e veja como você está!

1 - Polimorfismo

Sem sombra de dúvidas esse é o assunto que mais deixa de cabelo em pé, tira as horas de sono e causa medo e ranger de dentes aos novos programadores. É incrível a dificuldade que existe no entendimento desse conceito mesmo que, particularmente, eu considere ele simples se bem ensinado. Essa palavrinha vem do grego (poli = muitas, morphos = formas), e em orientação a objetos significa a capacidade de referências de variáveis assumirem diversos comportamento usando a mesma especificação. É fundamental para o aprendizado desse paradigma, quando você percebe que você precisa saber orientação a objetos. De forma simples, imagine que você tem um carro 1.0, e que você quer trocar por um carro 1.4. Com orientação a objetos, você poderia ter o mesmo carro com motores diferentes, sem mudar nada além do motor e da forma que você dirige. Tudo continua igual para quem usa, mas o resultado é diferente. Vale a pena você entender bem como isso funciona.

2 - Interfaces e Classes Abstratas

Depois do polimorfismo em si, as Interfaces e as Classes Abstratas são consideradas algo difícil de entender. E, na realidade, não é pra menos que esse conceito possa parecer esquisito. Estamos falando de uma classe que possui um ou mais métodos que não fazem nada e que não pode ser instanciada, e de uma espécie de classe fantasma que não pode ser herdada (extends), somente implementada (implements). Mas, por mais estranhos que possam parecer esses conceitos, eles são importantíssimos para o design de aplicações bem organizadas e estruturadas. Aprenda bem isso e os outros conceitos considerados mais difíceis, e você certamente estará no caminho para ser um desenvolvedor de sucesso.

3 - Exceções

Por fim, a terceira maior dificuldade é o entendimento das exceções. Exceções, ou Exceptions, são mecanismos para lidar com erros esperados dentro de uma aplicação. P.ex., quando um usuário informar um valor errado em algum campo de texto, a aplicação pode lançar uma exceção dizendo que essa informação é inválida, fazendo com que o usuário tome um atitude e informe outro valor. Se você já programou com Java, talvez já tenha se deparado com o famoso NullPointerException. Esse é um bom sinal de que, provavelmente, você deixou alguma coisa mal feita no seu código. Não se preocupe, acontece nas melhores familias! A melhor coisa que você pode fazer para aprender bem, é estudar e praticar. Ficar somente com a teoria não ajuda, assim como somente a prática te forma um profissional sem bases sólidas. E você? Só estuda, ou estuda e trabalha ao mesmo tempo?

Se você tiver alguma outra dificuldade como essa, comente aqui abaixo.

Até a próxima!