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

  1. Abra o VS Code.
  2. Pressione as teclas Ctrl + Shift + P (ou Cmd + Shift + P no Mac) para abrir a Paleta de Comandos.
  3. Digite Java: Create Java Project na barra que apareceu no topo e pressione Enter.
  4. Selecione a opção No build tools (isso criará um projeto simples, sem Maven ou Gradle).
  5. Escolha uma pasta em seu computador onde o projeto será salvo e clique em Select the location.
  6. Digite o nome do projeto: pokedex-projeto e pressione Enter.
  7. 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:

  1. Clique com o botão direito na pasta src e selecione New File. Crie o arquivo Pokemon.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);
    }
}
  1. Crie outro arquivo na pasta src chamado Pokedex.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

  1. Abra o arquivo Pokedex.java.
  2. 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 TesteSaí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:

ObjetoSaí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:

  1. Verifique a estrutura: Certifique-se de que sua estrutura de pastas final está idêntica à mostrada abaixo.
  2. Abra o GitHub Desktop: Certifique-se de que o repositório do seu curso está selecionado no canto superior esquerdo.
  3. Visualize as alterações: Na aba Changes (à esquerda), você verá todos os arquivos que criou ou modificou nesta aula.
  4. 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).
  5. 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.
  6. ⚠️ 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.
  7. 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!

📂 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");

Capitulo Anterior | Proximo Capitulo