🚀 Capítulo 07: Introdução à POO
🎯 Objetivo da Aula
Ao final desta aula, você será capaz de compreender os conceitos fundamentais da Programação Orientada a Objetos (POO), como Classes, Objetos, Atributos e Métodos, e aplicá-los na criação de estruturas de dados em Java.
🏢 O Cenário Prático (Seu Desafio)
Você foi contratado pela Silph Co. para desenvolver o novo software da Pokédex (da franquia Pokémon). O seu desafio é criar uma estrutura que permita cadastrar diferentes monstros de bolso, armazenando suas características e permitindo que eles executem ações (como atacar).
🧠 Fundamentos: A Teoria Traduzida
Até agora, programamos de forma procedural (executando comandos linha por linha). Na POO, passamos a pensar o software como um conjunto de objetos do mundo real que interagem entre si.
- Classe: É o molde, a fôrma ou o projeto. (Ex: O arquivo da Pokédex que diz o que todo Pokémon deve ter).
- Objeto: É o ser real criado a partir do molde. (Ex: O Pikachu específico que você capturou).
- Atributos: São as características do objeto (variáveis dentro da classe). (Ex: Nome, Tipo, Nível).
- Métodos: São as ações que o objeto pode fazer (funções dentro da classe). (Ex: Atacar, Evoluir).
Relação Classe vs Objeto
classDiagram class Pokemon { +String nome +String tipo +int nivel +atacar() } class Pikachu { +nome = "Pikachu" +tipo = "Elétrico" +nivel = 15 } class Charmander { +nome = "Charmander" +tipo = "Fogo" +nivel = 12 } Pokemon <|-- Pikachu : Instância Pokemon <|-- Charmander : Instância
📖 Exemplo Guiado
Vamos criar a classe Pokemon e instanciar o nosso primeiro objeto.
🛠️ Passo a Passo para Criar o Projeto no VS Code
Para criar o projeto corretamente usando o VS Code com o Extension Pack for Java, siga estes passos:
- Abra o VS Code.
- Pressione as teclas
Ctrl + Shift + P(ouCmd + Shift + Pno Mac) para abrir a Paleta de Comandos. - Digite
Java: Create Java Projectna barra que apareceu no topo e pressioneEnter. - Selecione a opção
No build tools(isso criará um projeto simples, sem Maven ou Gradle). - Escolha uma pasta em seu computador onde o projeto será salvo e clique em Select the location.
- Digite o nome do projeto:
pokedex-projetoe pressioneEnter. - O VS Code vai criar e abrir o projeto novo.
📂 Estrutura Inicial de Pastas
Após criar o projeto, sua estrutura de pastas principal na barra lateral do VS Code será assim:
pokedex-projeto/
├── lib/
└── src/
└── App.java (você pode apagar este arquivo)Siga os passos para criar os novos arquivos dentro da pasta src:
- Clique com o botão direito na pasta
srce selecione New File. Crie o arquivoPokemon.java(o molde):
public class Pokemon {
// Atributos (características)
String nome;
String tipo;
int nivel;
// Método (ação)
public void exibirDados() {
System.out.println("Nome: " + nome);
System.out.println("Tipo: " + tipo);
System.out.println("Nível: " + nivel);
}
}- Crie outro arquivo na pasta
srcchamadoPokedex.java(onde o programa roda):
public class Pokedex {
public static void main(String[] args) {
// Criando (instanciando) um objeto da classe Pokemon
Pokemon p1 = new Pokemon();
// Preenchendo os atributos do objeto
p1.nome = "Pikachu";
p1.tipo = "Elétrico";
p1.nivel = 15;
// Executando o método do objeto
p1.exibirDados();
}
}🕹️ Como Executar e Testar no VS Code
- Abra o arquivo
Pokedex.java. - Clique em Run logo acima do método
main.
Resultado Esperado:
Nome: Pikachu
Tipo: Elétrico
Nível: 15🛠️ Prática Obrigatória 1
Crie uma classe chamada Treinador dentro da pasta src. Ela deve ter os atributos nome (String), idade (int) e cidade (String). Crie um método chamado apresentar() que exiba a mensagem: “Olá, eu sou o [Nome], tenho [Idade] anos e sou da cidade de [Cidade]“. Teste a classe criando um objeto no método main.
Resultado Esperado:
| Atributos de Teste | Saída Esperada |
|---|---|
| ”Ash”, 10, “Pallet” | Olá, eu sou o Ash, tenho 10 anos e sou da cidade de Pallet |
🛠️ Prática Obrigatória 2
Adicione um método chamado atacar() na classe Pokemon do Exemplo Guiado. Esse método não recebe parâmetros e apenas exibe a mensagem: “[Nome] usou um ataque básico!“. Teste o método chamando-o a partir do objeto p1 no arquivo Pokedex.java.
Resultado Esperado:
| Objeto | Saída Esperada |
|---|---|
p1 (Pikachu) | Pikachu usou um ataque básico! |
📤 Instruções de Entrega (GitHub Desktop + Microsoft Teams)
Neste curso, você entregará suas atividades enviando o código para o seu repositório no GitHub usando o aplicativo GitHub Desktop. Siga o passo a passo detalhado:
- Verifique a estrutura: Certifique-se de que sua estrutura de pastas final está idêntica à mostrada abaixo.
- Abra o GitHub Desktop: Certifique-se de que o repositório do seu curso está selecionado no canto superior esquerdo.
- Visualize as alterações: Na aba Changes (à esquerda), você verá todos os arquivos que criou ou modificou nesta aula.
- Faça o Commit:
- No campo Summary (na parte inferior esquerda), digite uma mensagem curta descrevendo o que fez, ex:
Finaliza atividades do Capítulo 07. - Clique no botão azul Commit to main (ou o nome da sua branch).
- No campo Summary (na parte inferior esquerda), digite uma mensagem curta descrevendo o que fez, ex:
- Envie para a Nuvem (Push): No topo da tela, clique no botão Push origin. Isso enviará seu código do seu computador para o seu perfil no GitHub.
- ⚠️ IMPORTANTE (Repositório Público): Para que o professor consiga corrigir, o seu repositório no GitHub DEVE SER PÚBLICO. Repositórios privados não podem ser visualizados por quem não foi convidado.
- Como entregar no Microsoft Teams:
- Copie o link do seu repositório no GitHub (ex:
https://github.com/seu-usuario/seu-repositorio). - Abra a tarefa correspondente no Microsoft Teams.
- Clique no botão Adicionar trabalho (ou Add work).
- Selecione a opção Link no menu lateral.
- Cole o link do GitHub no campo “Endereço Web” e digite um texto (ex:
Meu Repositório) no campo “Texto a ser exibido”. - Clique em Anexar.
- MUITO IMPORTANTE: Clique no botão Entregar (ou Turn in) no canto superior direito para concluir o envio!
- Copie o link do seu repositório no GitHub (ex:
📂 Estrutura Final de Pastas
Após concluir o exemplo e as práticas, sua estrutura de pastas deve ficar assim:
pokedex-projeto/
├── lib/
└── src/
├── Pokemon.java
├── Pokedex.java
└── Treinador.java💡 Checkpoint de Lógica
O que você acabou de fazer é o pilar de quase todo o software moderno. Quando você usa um aplicativo de banco, a sua conta é um Objeto da classe ContaBancaria, com atributos como saldo e métodos como sacar(). A lógica é exatamente a mesma!
🔥 Desafio de Fixação (Opcional)
Tente fazer o método atacar() receber o nome do ataque como parâmetro (String) e exibir a mensagem dinâmica: “[Nome] usou [Nome do Ataque]!“.
🔑 Gabarito de Código/Fórmulas
Prática 1:
public class Treinador {
String nome;
int idade;
String cidade;
public void apresentar() {
System.out.println("Olá, eu sou o " + nome + ", tenho " + idade + " anos e sou da cidade de " + cidade);
}
public static void main(String[] args) {
Treinador t = new Treinador();
t.nome = "Ash";
t.idade = 10;
t.cidade = "Pallet";
t.apresentar();
}
}Prática 2:
// Adicionar dentro da classe Pokemon:
public void atacar() {
System.out.println(nome + " usou um ataque básico!");
}
// Chamar no main da classe Pokedex:
p1.atacar();Desafio:
// Método com parâmetro na classe Pokemon:
public void atacar(String golpe) {
System.out.println(nome + " usou " + golpe + "!");
}
// Chamada no main:
p1.atacar("Choque do Trovão");