image

Access unlimited bootcamps and 650+ courses forever

60
%OFF
Article image
Iasmin Santiago
Iasmin Santiago16/10/2025 22:18
Share

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 comoint ou String, 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
Share
Recommended for you
PcD Tech Bradesco - Java & QA Developer
Riachuelo - Primeiros Passos com Java
GFT Start #7 - Java
Comments (2)
DIO Community
DIO Community - 17/10/2025 09:15

Excelente, Iasmin! Que artigo incrível e super didático sobre Fundamentos de Java e POO! É fascinante ver como você aborda o tema, mostrando que a complexidade inicial do Java é, na verdade, a disciplina que nos obriga a pensar como desenvolvedores de verdade, entendendo a estrutura por trás do código.

Sua explicação sobre a diferença entre tipo, variável e objeto (Pessoa fulano = new Pessoa();) é um momento revelador para qualquer iniciante. E você resumiu perfeitamente a importância do Encapsulamento ao blindar os atributos com Getters e Setters.

Qual você diria que é o maior desafio para um desenvolvedor ao aplicar Polimorfismo e Herança para projetar um sistema que precisa ser flexível e facilmente extensível (ou seja, quando você precisa adicionar uma nova funcionalidade sem modificar todas as classes antigas que já estão funcionando)?

Júlio Siqueira
Júlio Siqueira - 17/10/2025 08:13

Excelente artigo! 👏

Gostei muito da forma como você transformou uma experiência pessoal de aprendizado em um conteúdo didático e envolvente. É inspirador ver alguém compartilhar as dificuldades iniciais com Java e, ao mesmo tempo, mostrar como esses desafios ajudam a construir uma base sólida em programação.

A explicação sobre a diferença entre variável, objeto e tipo ficou especialmente clara — esse é um ponto que confunde muitos iniciantes, e você conseguiu traduzir de forma simples e prática. Além disso, o destaque para encapsulamento, construtores e o raciocínio lógico que o Java exige reforça bem o quanto essa linguagem ensina disciplina e organização no código. ☕💡

Parabéns pela escrita leve e acessível! Seu artigo é um ótimo incentivo para quem está começando na Programação Orientada a Objetos e ainda vê o Java como um “bicho de sete cabeças”. 🚀