AULA 01 MÓDULO 1 fundamentos java ⏱ 60 min

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.

objetoatributos & açõesclasse = moldeJVM/JDKVS Code · Antigravityjavac & java

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 ideia central
Objetos na vida real possuem atributos (características) e realizam ações (comportamentos). Um cachorro tem raça, tamanho e idade, e faz coisas: late, corre, come.

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.

🐶 Cachorro objeto do mundo real modela Cachorro objeto em Java ATRIBUTOS · características nome : String raça : String tamanho : int AÇÕES · comportamentos latir() correr() · comer()
Do objeto real para o objeto em código: as características viram atributos · os comportamentos viram métodos.
💡
não precisa modelar tudo
Usar objetos para representar o mundo real não obriga a modelar cada detalhe. Você escolhe só os atributos e ações que importam para o seu programa. Um cadastro de pet talvez nem precise do atributo "cor dos olhos".

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.

A CLASSE (molde) class Empregado nome : String salario : double idade : int trabalhar() receberSalario() descreve a estrutura new constrói objetos emp1 : Empregado nome="Ana" · salario=3000.0 · idade=29 emp2 : Empregado nome="Bia" · salario=4200.0 · idade=35 emp3 : Empregado nome="Caio" · salario=2800.0 · idade=22
Uma única classe Empregado → infinitos objetos, cada um com seu próprio estado. A classe determina o objeto.
🧁
analogia
A classe é a forma de cupcake; os objetos são os cupcakes. Mesma forma, muitos bolinhos — uns de chocolate, outros de baunilha. A forma define o formato; cada bolinho tem seu próprio recheio (estado).

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".

💥
cenário real
Um sistema de cadastro de alunos em C: 500 linhas no main. Adicionar um novo campo em Aluno quebra 12 funções diferentes. O paradigma OO existe para resolver exatamente isso — agrupando dados e comportamento dentro do objeto.
1
Lógica espalhada — funções sem dono, qualquer parte do código acessa qualquer dado
2
Acoplamento máximo — mudar uma função quebra outras — sem fronteiras claras
3
Reuso por cópia — precisa de algo parecido? Copia e cola e reza
4
Nenhum contrato — quem garante que aluno.nota nunca seja -50?

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.

por que Java?
Java foi criada em 1995 pela Sun Microsystems com o lema 'Write Once, Run Anywhere'. A JVM (Java Virtual Machine) interpreta o bytecode em qualquer plataforma. Hoje é a linguagem base de sistemas bancários, Android e grandes enterprises.

JVM, JRE, JDK — o que instalar

JDK (Java Development Kit) — Tudo que você precisa para DESENVOLVER. Inclui compilador (javac), JRE e ferramentas de debug.
JRE (Java Runtime Environment) — Para RODAR programas Java. Inclui a JVM. Usuário final instala o JRE.
JVM (Java Virtual Machine) — Executa o bytecode .class. HotSpot + JIT compilation: Java compila em código nativo na primeira execução — não é lento.
💡
IntelliJ IDEA
IDE clássica para Java profissional. Community Edition é gratuita. Atalhos essenciais: Ctrl+Shift+F10 (rodar), Ctrl+/ (comentar), Alt+Insert (gerar getters), Shift+F6 (renomear).

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:

VS Code + Extension Pack for Java — Editor leve da Microsoft. Instale o "Extension Pack for Java" (Marketplace) e ele passa a compilar, rodar e depurar Java com um clique.
Google Antigravity — IDE "agent-first" da Google (lançada em nov/2025), baseada no VS Code. As extensões de Java do VS Code funcionam nela, e ainda traz agentes de IA. Preview gratuito para Windows, macOS e Linux.

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.

Antigravity / VS Code — MeuProjeto Java 21
▾ MeuProjeto
  Main.java
  Cachorro.java
  Main.class
  Cachorro.class
public class Main {
  public static void main(String[] args) {
    System.out.println("Olá, POO!");
  }
}
# o terminal integrado abre dentro da pasta do projeto
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.

1
Crie uma pasta para o projeto — no terminal: mkdir MeuProjeto e entre nela com cd MeuProjeto
2
Crie o arquivo principalMain.java, com o método main (o ponto de entrada). O nome do arquivo deve ser igual ao da classe pública.
3
Compilejavac *.java transforma todos os .java em bytecode .class (o que a JVM entende).
4
Executejava Main (sem o .java!) pede à JVM que rode a classe Main.
terminal · bash
# 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
⚙️
javac × java
javac é o COMPILADOR (gera os .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.
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
    }
}
🗺️
spoiler do caminho
Esse exemplo já usa 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.
quiz · aula 01
Teste seus conhecimentos em Java
0/4 respondidas
QUESTÃO 01
Um objeto da vida real, como um cachorro, possui duas coisas que viram o quê em Java?
QUESTÃO 02
Qual frase descreve melhor a relação entre classe e objeto?
QUESTÃO 03
O que é a JVM?
QUESTÃO 04
No terminal, depois de javac *.java, qual comando EXECUTA a classe Main?
0/4