Main.
java — POO Java Prática
☕
POO em Java
AULA 100% PRÁTICA
5 1 90 100%
Desafios Projeto Final Minutos Código
📋 Regras da Aula
💻 Abra o VS Code / Netbeans ⏱ Cada desafio tem um tempo limite
🚫 Copiar e colar não conta — DIGITE o código 🐛 Erros são bem-vindos — debuggar faz parte
🤝 Pode (e deve!) pedir ajuda ao colega 🏆 Quem terminar primeiro: ajude os outros
POO Java — Aula 100% Prática 2 / 11
⚙ Setup — Faça AGORA (5 min)
1 2 3
Crie o Projeto Estrutura de Pastas Teste o Setup
public class Main {
File → New Project src/ public static void
Name: AulaPOO ├── desafio1/ main(String[] a) {
Language: Java ├── desafio2/ [Link]("OK!");
Build: NetBeans └── projeto/ }
}
✏ SUA VEZ! ⏱ 5 min Todos com o projeto rodando antes de avançar! 3 / 11
1 Crie a sua primeira Classe
📌 Crie uma classe Pessoa com nome, idade e email. Instancie 3 objetos e imprima os dados.
[Link] — complete o código [Link]
public class Pessoa Pessoa p1 = new Pessoa(
// 1. Declare 3 atributos aqui "Ana", 25, "ana@[Link]");
_____ nome Pessoa p2 = /* complete */
_____ idade Pessoa p3 = /* complete */
_____ email [Link](); [Link]();
// 2. Crie o construtor
public Pessoa(_______, _______, _______) {
[Link] = _______; ▶ Output esperado
// complete...
}
Nome: Ana | Idade: 25
Nome: João | Idade: 30
// 3. Crie o método apresentar() Nome: Maria | Idade: 22
public void apresentar() { _______ }
✏ SUA VEZ! ⏱ 10 min Dica: String, int, void — sem getters ainda! 4 / 11
2 Encapsule a sua Conta Bancária
📌 Refatore a Pessoa do Desafio 1 usando private. Crie ContaBancaria com saldo protegido e validações.
[Link] [Link]
public class ContaBancaria { ContaBancaria c = new ContaBancaria(
// atributos PRIVADOS "Ana", 1000.0);
_______ String titular [Link](500);
_______ double saldo [Link](200);
[Link](5000); // deve falhar
// Getter para saldo // [Link] = -999 → ERRO!
public double getSaldo() { _______ }
// depositar — valide valor > 0
public void depositar(double v) { ▶ Output esperado
if (______) { _______ }
} Saldo: Kz 1300.00
Saldo insuficiente!
// sacar — valide saldo suficiente // erro de compilação
public void sacar(double v) { _______ }
⭐ Bónus: adicione toString() na Pessoa!
✏ SUA VEZ! ⏱ 12 min Tente aceder ao saldo directamente — veja o erro! 5 / 11
3 Construa a Hierarquia de Animais
📌 Crie Animal (pai) → Cachorro e Gato (filhos). Cada um sobrescreve emitirSom() com @Override.
Hierarquia [Link] + [Link]
Animal 🐾
(classe pai) class Animal { String nome; // construtor...
public void emitirSom() {
[Link](nome + " faz som...");
} }
class Cachorro _______ Animal {
// construtor chama super(nome)
Cachorro Gato _______ public void emitirSom() {
🐕 🐈 [Link](nome + " _______ ");
} }
extends → // Crie a classe Gato da mesma forma 🐈
herda tudo
✏ SUA VEZ! ⏱ 12 min Bónus: crie Passaro que também implementa Voavel! 6 / 11
4 Polimorfismo em Acção
📌 Use o array do tipo Animal[] e chame emitirSom() em loop. Cada animal responde diferente sem if/else!
❌ Sem Polimorfismo (NÃO faça isto) [Link] — complete o loop
if (animal instanceof Cachorro) { Animal[] animais = {
((Cachorro) animal).emitirSom(); new Cachorro("Rex"),
} else if (animal instanceof Gato) { new Gato("Mimi"),
((Gato) animal).emitirSom();
} else if ... ✅ };
new _______("___") // + mais
// ↑ cresce infinitamente!
// Um loop — todos os animais!
for (_______ a : _______) {
[Link](); // magia! 🪄
▶ Output esperado }
Rex diz: Au Au!
Mimi diz: Miau!
✏ SUA VEZ! ⏱ 10 min 7 / 11
5 Crie uma Interface Voavel
📌 Defina a interface Voavel com voar(). Crie Aviao e Passaro que implementam. Uma classe pode ter herança + interface!
[Link] [Link]
public interface Voavel {
// contrato — sem corpo! class Aviao implements Voavel {
void voar(); @Override public void voar() {
void pousar(); // bónus [Link]("✈ Decolando!");
} }
// implemente pousar() também
}
💡 Voavel[] lista = { new Passaro(), new Aviao() }; →
[Link] polimorfismo com interface!
class Passaro extends Animal
▶ Output esperado
implements _______ {
@Override
public void voar() { 🐦 Batendo asas!
[Link](_______); ✈ Decolando!
} }
✏ SUA VEZ! ⏱ 10 min Bónus: loop com Voavel[] para chamar voar() em todos! 8 / 11
🏆 PROJECTO FINAL ⏱ 30 min
📚 Sistema de Biblioteca — aplique TODOS os conceitos!
1 2 3 4
Classe Livro Herança Interface Main — Tudo junto
• interface • Livro[] catalogo = {
• LivroDigital extends
Emprestavel { • new
Livro
• String titulo, autor • void LivroDigital(...),
• + String formato
• int anoPublicacao emprestar(String u) • new
(.pdf, .epub)
• private double preco • void devolver() LivroFisico(...) }
• LivroFisico extends
• getter/setter preco • boolean • for → emprestar +
Livro
• toString() isDisponivel() devolver
• + int numeroPaginas
• } → implemente em • listar só
• @Override toString()
Livro disponíveis
POO Java — Aula 100% Prática 9 / 11
🔑 Gabarito — Pontos-Chave
❓ Tipo do atributo privado? ❓ Herança em Java?
private String nome; class Filho extends Pai { }
❓ Chamar construtor pai? ❓ Implementar interface?
super(nome); // dentro do filho class X implements Y { }
❓ Sobrescrever método? ❓ Retornar valor privado?
@Override antes do método public double getSaldo() { return saldo; }
POO Java — Aula 100% Prática 10 / 11
Hoje você aprendeu fazendo ☕
Parabéns! 🎉
✅ Desafio 1 — Classes e Objetos ✅ Desafio 4 — Polimorfismo com @Override
✅ Desafio 2 — Encapsulamento ✅ Desafio 5 — Interfaces e contratos
✅ Desafio 3 — Herança com extends/super 🏆 Projecto Final — Sistema de Biblioteca!
Próximo passo: Collections, Exception Handling e muito mais código! 🚀