?> Revisão de Aula – Orientação a Objetos em Java (Interativo)

Revisão de Aula – Orientação a Objetos em Java

Inclui: paradigma OO, classes/objetos, atributos/métodos, encapsulamento, construtores & sobrecarga, membros static, constantes final, associação/agregação/composição.


Sumário


0) Introdução ao Java, Compilação, VS Code e Criação de Projeto

Resumo rápido para preparar o ambiente e rodar seu primeiro programa.

Plataforma Java em 1 minuto
  • JDK (Java Development Kit): ferramentas de desenvolvimento (inclui javac e java).
  • JRE (Runtime): execução de aplicações Java.
  • JVM (Máquina Virtual): executa o bytecode gerado pelo compilador.

Baixar e Instalar JDK

Hello, World (arquivo único)

// Hello.java public class Hello { public static void main(String[] args) { System.out.println("Hello, Java!"); } }

javac Hello.java java Hello

Projeto mínimo (estrutura)

meu-projeto/ └─ src/ └─ Main.java

// src/Main.java public class Main { public static void main(String[] args) { System.out.println("Projeto mínimo"); } }

javac src/Main.java java -cp src Main

VS Code – criando projeto Java
  1. Instale o JDK (versão LTS recomendada) e o pacote Java Extension Pack no VS Code.
  2. Abra o Command Palette (Ctrl/⌘+Shift+P) → Java: Create Java ProjectNo build tools (ou Maven/Gradle, se preferir).
  3. Escolha a pasta do projeto e o nome. O VS Code criará src e uma classe Main com public static void main.
  4. Para executar, use o botão Run acima do método main ou o menu Run → Start Debugging.
Check-0: Qual a sequência correta para compilar e executar Hello.java no terminal?

1) Paradigma Orientado a Objetos

POO modela o software como objetos que combinam estado (atributos) e comportamento (métodos). Benefícios: modularização, reuso, manutenção e legibilidade.

  • Abstração: foque no essencial, oculte detalhes.
  • Encapsulamento: proteja dados com interface pública.
  • Herança e Polimorfismo: reuso e variação de comportamento.

2) Classes e Objetos

Classe é o molde; objeto é a instância concreta. Uma classe reúne atributos e métodos que definem um tipo.

class Pessoa { String nome; int idade; void falar() { System.out.println(nome + " está falando"); } } Pessoa p1 = new Pessoa(); p1.nome = "Ana"; p1.idade = 25; p1.falar(); // Ana está falando
Check-1: Um objeto é…

3) Atributos e Métodos

Atributos guardam estado; métodos realizam ações. Métodos podem retornar valores ou ser void.

class Calculadora { int somar(int a, int b) { return a + b; } }
Check-2: Marque o(s) termo(s) que completam: “Método representa uma ______ da classe.”

4) Encapsulamento

Restringe acesso direto aos dados. Preferir atributos private e métodos get/set para controlar regras.

class Conta { private double saldo; public void depositar(double v) { saldo += v; } public double getSaldo() { return saldo; } }
Check-3: O modificador private permite acesso…

5) Construtores & Sobrecarga

Construtor tem o mesmo nome da classe e inicializa o objeto. Sobrecarga = múltiplas assinaturas.

class Produto { String nome; double preco; Produto(String n) { nome = n; preco = 0; } Produto(String n, double p) { nome = n; preco = p; } }
class Exemplo { Exemplo(){ this(0); } Exemplo(int x){ /* ... */ } }
Check-4: Sobrecarga ocorre quando…

6) Membros static

Pertencem à classe (compartilhados). Não acessam this e podem ser chamados via Classe.método().

class Contador { static int total = 0; Contador(){ total++; } } System.out.println(Contador.total);
Check-5: Como acessar o valor de PI corretamente?

7) Constantes final

final torna o valor imutável após a primeira atribuição. Use convenção MAIÚSCULAS_COM_UNDERSCORE.

class Circulo { public static final double PI = 3.141592653589793; }
Check-6: Complete: “final define uma (valor ).”

8) Associação × Agregação × Composição

Todos são relações has-a, diferindo pela dependência entre parte e todo.

  • Associação: vínculo simples (Professor–Turma).
  • Agregação: partes independentes (Time–Jogador).
  • Composição: parte depende do todo (Pedido–Item).
class Item { String nome; Item(String n){ nome=n; } } class Pedido { private java.util.List < Item > itens = new java.util.ArrayList<>(); void adicionarItem(String nome){ itens.add(new Item(nome)); } }
Check-7: Qual modela melhor composição?

9) Modificadores de Acesso

  • public: visível em qualquer lugar.
  • private: apenas na própria classe.
  • protected: subclasses e mesmo pacote.
  • (sem modificador): mesmo pacote.
public class Exemplo { private int x; protected void m(){ /* ... */ } }

10) Boas Práticas

  • Prefira composição à herança quando possível.
  • Evite static mutável compartilhado (concorrência).
  • Use constantes public static final nomeadas em MAIÚSCULAS.
  • Encapsule: atributos privados + get/set com validação.
  • Nomeie classes em PascalCase e métodos/variáveis em camelCase.
Baseado nas aulas práticas de 30/08 a 09/10/2025.