Fundamentos de Java e Programação Orientada a Objetos: como aprendi a entender o código de verdade
- #Java
- #POO
Quando comecei a programar, meu primeiro contato foi com Python. Eu achava que programar era algo simples: escrever algumas linhas, apertar "run" e ver o resultado. Mas, ao entrar no mundo do Java, percebi que existia muito mais estrutura por trás de cada comando.
No começo, confesso: foi assustador. Tive que entender bem classes, objetos, atributos, métodos, construtores, getters e setters - tudo isso de uma vez, para conseguir criar programas. Eu tenho umas 12 folhas escritas só de teoria e algumas práticas à mão, tentando internalizar cada conceito! Mas, com o tempo, essa abordagem mais detalhista me fez entender melhor a programação, me ensinando a pensar como uma desenvolvedora de verdade.
O objetivo deste artigo é compartilhar o que aprendi sobre os Fundamentos de Java e Programação Orientada a Objetos (POO), mesclando experiência pessoal com conceitos técnicos, para ajudar quem está começando ou quer reforçar esses conceitos! Vamos lá?
🏗️ Fundamentos de Java: entendendo o básico
Aprender Java é diferente de aprender linguagens mais simples ou interpretadas, como o Python. Em Java, cada elemento do código tem uma função clara e específica. Aqui estão alguns conceitos essenciais, apenas para a gente esquentar nosso cérebro:
- Classe: o molde ou modelo do objeto. Ela descreve quais atributos e métodos o objeto terá.
- Objeto: uma instância (vem de instance que significa exemplo, em inglês) da classe, criado lá na memória. Um objeto é um exemplo criado de nosso molde / classe. É o que realmente "existe", na memória do computador, quando o programa roda.
- Atributos: variáveis dentro da classe, que definem o estado do objeto. Você perceberá que ele é bem parecido com o objeto, ambos são ligados a variáveis, de certa forma.
- Métodos: funções dentro da classe, que determinam o comportamento do objeto.
- Variável: é um espaço, na memória do computador, que armazena um valor... é como o endereço, a etiqueta de algo, lá na memória do computador. Veremos que objeto e atributo não são variáveis, esta apenas os representará na memória! Quando o programa precisar acessar o valor do objeto, ele irá ao seu endereço, guardado pela variável.
Por exemplo, imagine uma classe Pessoa
:
public class Pessoa {
private String nome;
private int idade;
}
Aqui, Pessoa
é o tipo, nome
e idade
são os atributos, e a classe ainda não tem métodos, mas eles poderiam definir comportamentos como falar, andar ou apresentar seus dados.
Adendo: Minha confusão entre variável e objeto (e o que aprendi)
No começo, fiquei totalmente confusa quando escrevi:
Pessoa fulano = new Pessoa();
Eu pensei: “Se fulano é uma variável, o que é Pessoa? E o que é new Pessoa()
?”
Com o tempo, entendi:
- Pessoa (à esquerda) indica o tipo da variável, assim como
int
ouString
, mas nesse caso, é um tipo criado por mim. - fulano é a variável que vai apontar para o objeto criado. Olha aqui, o conceito de variável voltando! Ela está apontando, para o computador, seu endereço lá na memória.
- new Pessoa() cria efetivamente o objeto na memória.
Ou seja, fulano é a "ponte" entre a minha referência no código e o objeto real que existe na memória. Esse foi um momento revelador para mim, porque foi quando comecei a diferenciar claramente tipo, variável e objeto.
⚙️ Construtores, Getters e Setters: quando Java começou a fazer sentido
Depois de entender variáveis e objetos, veio a próxima etapa: os construtores. No começo, pensei que se eu não definisse um construtor, nada funcionaria. Descobri que o Java cria um construtor padrão vazio mesmo se você não declarar nenhum. Mas para inicializar objetos com valores específicos, você precisa criar seu próprio construtor, sim.
public class Pessoa {
private String nome;
private int idade;
public Pessoa() {} // construtor vazio
public Pessoa(String nome, int idade) { // construtor com parâmetros
this.nome = nome;
this.idade = idade;
}
public String getNome() { return nome; }
public void setNome(String nome) { this.nome = nome; }
public int getIdade() { return idade; }
public void setIdade(int idade) { this.idade = idade; }
}
Os getters e setters são métodos que permitem acessar ou modificar atributos privados de forma segura. Você notou que usamos, lá em cima, a palavra private nos atributos de nome e idade? Para podermos acessá-los / usarmos em nosso código mais para frente, aplicamos agora esses métodos. Você notou que protegemos nossos atributos de acesso? Se não escrevermos os métodos get e set, não poderemos pegar o valor deles (get é obter em inglês) e alterá-los (set é definir em inglês, nesse caso). Parabéns, você acaba de entender o que é encapsulamento!
Antes disso, eu achava que variáveis e atributos eram praticamente a mesma coisa... mas ao ver o encapsulamento, vi que há atributos, variáveis, métodos específicos e muito mais. Daí, entendemos a importância do encapsulamento: proteção e aprendizado contínuo!
🧩 A importância da POO e o que ela mudou no meu jeito de programar
A Programação Orientada a Objetos (POO) começou a fazer sentido aos poucos. Não é algo que entra na cabeça de um dia para o outro. A cada novo exercício e revisão, comecei a perceber:
- Classes e objetos permitem organizar o código de forma clara.
- Atributos e métodos tornam o código reutilizável e modular.
- Construtores, getters e setters garantem segurança e flexibilidade.
Antes, eu via Java como mais difícil. Mas, na verdade, essa complexidade é o que ensina o raciocínio lógico e a disciplina de programar de forma estruturada. A experiência acima, aprendendo termos e encapsulamento, foi só o nosso começo de algo sensacional! Pode ser mais trabalhoso no início, mas no fim, o resultado é muito mais sólido! Até aqui, você já passou a ter noção de mais de 5 conceitos de POO!
☕ Java e seu jeito detalhista de ensinar programação
Continuando nossa conversa, uma coisa que percebi é que Java obriga a pensar. Diferente de Python, onde você pode escrever e rodar algo simples rapidamente, Java exige planejamento do código:
- Cada variável precisa de um tipo.
- Cada objeto precisa ser instanciado.
- Cada atributo privado precisa de acesso controlado (getters e setters).
No começo, isso parece exagerado, mas depois que você internaliza, percebe que o Java ensina a programar de forma correta, fortalecendo o aprendizado em lógica de programação.
E a cada novo conceito que eu aprendia - variável, objeto, construtor, método - mais eu entendia a importância de planejar e estruturar o código antes de digitar qualquer linha.
🌟 Conclusão: meu aprendizado e convite a você, leitor pensante
Aprender Java e Programação Orientada a Objetos tem sido uma jornada cheia de descobertas. Não é apenas sobre escrever código, mas sobre compreender como cada peça do programa funciona.
Não pense que Java é difícil ou inacessível... ele é apenas detalhista e estruturado. É essa característica que faz a diferença na formação de um programador capaz de entender POO e criar sistemas bem organizados.
💬 E você? Qual parte dos Fundamentos de Java te deixou mais confuso no começo? Comenta aqui!
📚 Referências
- Oracle Academy - Java Fundamentals - https://learn.oracle.com/ols/learning-path/java-fundamentals/55593/55578
- Meu repositório de projetos Java - https://github.com/iasminsantiago/Java-Programming-Challenges