0% acharam este documento útil (0 voto)
1 visualizações11 páginas

POO_Java_Pratica

O documento apresenta um curso prático de Programação Orientada a Objetos (POO) em Java, com uma série de desafios e exercícios para os alunos. Os tópicos incluem criação de classes, encapsulamento, herança, polimorfismo e interfaces, culminando em um projeto final sobre um sistema de biblioteca. O material enfatiza a prática e a resolução de problemas, incentivando a colaboração entre os alunos.
Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
1 visualizações11 páginas

POO_Java_Pratica

O documento apresenta um curso prático de Programação Orientada a Objetos (POO) em Java, com uma série de desafios e exercícios para os alunos. Os tópicos incluem criação de classes, encapsulamento, herança, polimorfismo e interfaces, culminando em um projeto final sobre um sistema de biblioteca. O material enfatiza a prática e a resolução de problemas, incentivando a colaboração entre os alunos.
Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd

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! 🚀

Você também pode gostar