Do Procedural ao OO
Comece pelo familiar: objetos do mundo real. Veja como eles viram objetos em Java, por que a classe é o molde, o que a JVM faz por você e como rodar seu primeiro programa no terminal.
Objetos: comece pelo que você já conhece
Antes de qualquer código, pense no mundo à sua volta. Um cachorro, um carro, uma conta bancária — todos são objetos. E todo objeto da vida real tem duas coisas:
A Programação Orientada a Objetos (POO) é só isso, levado para o código: objetos em Java também possuem atributos (chamados de campos) e ações (chamadas de métodos) associados. Em vez de modelar o mundo com funções soltas e variáveis espalhadas, você modela com objetos — do jeito que você já pensa.
A classe é o molde do objeto
Se o objeto é o cachorro de verdade, a classe é a planta, a forma de bolo, o molde que descreve como qualquer cachorro deve ser. As classes em Java são modelos para a construção de objetos.
Tendo uma classe Empregado, você pode construir quantos objetos Empregado quiser — cada um com seus próprios valores. A classe é única; os objetos são muitos. Resumindo: a classe determina o objeto.
O problema do código procedural
Você já sabe programar — funções, arrays, laços. Mas quando o sistema cresce, o código procedural começa a mostrar rachaduras. Funções com 200 linhas, variáveis globais que ninguém sabe quem modificou, copiar e colar para "reutilizar".
Histórico e contexto
O paradigma orientado a objetos nasceu na década de 60 com Simula 67, popularizou-se com Smalltalk nos anos 70 e chegou ao mainstream com C++ e Java.
JVM, JRE, JDK — o que instalar
Preparando o ambiente: VS Code ou Antigravity
Para escrever e rodar Java você precisa de um editor + o JDK instalado. Duas opções modernas e gratuitas:
A tela inicial de ambas é praticamente a mesma do VS Code: barra de atividades à esquerda, uma árvore de arquivos, o editor no centro e um terminal integrado embaixo. É nesse terminal que vamos compilar e executar.
Main.java
Cachorro.java
Main.class
Cachorro.class
public static void main(String[] args) {
System.out.println("Olá, POO!");
}
}
MeuProjeto $ javac *.java
MeuProjeto $ java Main
Olá, POO!
Passo a passo no terminal
Sem mágica de IDE: estes são os comandos reais que a IDE roda por você. Vale aprender porque mostram o que a JVM faz.
mkdir MeuProjeto e entre nela com cd MeuProjetoMain.java, com o método main (o ponto de entrada). O nome do arquivo deve ser igual ao da classe pública.javac *.java transforma todos os .java em bytecode .class (o que a JVM entende).java Main (sem o .java!) pede à JVM que rode a classe Main.# 1) criar e entrar na pasta do projeto mkdir MeuProjeto cd MeuProjeto # 2) (escreva Main.java no editor) e então: # 3) compilar TODOS os .java de uma vez → gera .class javac *.java # 4) executar a classe que tem o main (sem .java) java Main # Atalho (Java 11+): roda direto, sem compilar antes java Main.java
.class). java é o LANÇADOR (inicia a JVM e roda o .class). Neste curso usamos os dois passos para você ver o bytecode aparecer — depois pode usar o atalho java Main.java.// Do procedural ao OO — a mesma funcionalidade, dois paradigmas // ANTES: Procedural — tudo no main, sem fronteiras // String[] nomes = new String[100]; // double[] notas = new double[100]; // notas[0] = -50; // Java aceita. Problema silencioso. // DEPOIS: Orientado a Objetos — classe como unidade coesa public class Aluno { // Estado encapsulado — ninguém acessa diretamente private String nome; private double nota; // Construtor — objeto nasce em estado válido public Aluno(String nome, double nota) { this.nome = nome; setNota(nota); // usa setter com validação } public void setNota(double nota) { if (nota < 0 || nota > 10) throw new IllegalArgumentException("Nota deve ser entre 0 e 10"); this.nota = nota; } public String toString() { return "Aluno{" + nome + ", nota=" + nota + "}"; } } // Main — limpo, sem detalhes de implementação public class Main { public static void main(String[] args) { Aluno a = new Aluno("Ana", 8.5); System.out.println(a); // Aluno{Ana, nota=8.5} // a.setNota(-50); → lança exceção imediatamente } }
private e validação — isso é encapsulamento, tema da Aula 03. Aqui você só precisa enxergar o contraste: dados e comportamento juntos dentro da classe. Na próxima aula montamos uma classe do zero, do jeito mais simples possível.javac *.java, qual comando EXECUTA a classe Main?