Java – Classes

Após termos feito uma introdução à linguagem Java e, termos dado um exemplo de como utilizar classes (pode ler o artigo aqui), vamos continuar com a explicação e dar novos exemplos de como usar  as classes.

É importante clarificar o porquê de se usarem classes. Pense o leitor na organização que traz ao seu código ter tudo dividido em classes, em vez de codificar tudo num só ficheiro java (isto faria com que um ficheiro apenas ficasse demasiado extenso e cheio de código incompreensível).

Neste tutorial vamos mostrar ao utilizador como usar melhor as classes, como programar e usar as potencialidades do Netbeans. Mas antes, vamos corrigir o desafio do tutorial anterior.

Desafio Calculadora

public class Calculadora {
   
   // Esta é a minha função para somar 
   public int soma(int a, int b){
       return a + b;
   }
   // Esta é a minha função para subtrair
   public int subtrai(int a, int b){
       return a - b;
   }    
   
   public int multiplica(int a, int b){
       return a*b;
   }
   
   public float divide(int a, int b){
       // dividir dois inteiros iria retornar um valor inteiro,
       // ou seja, 1/2 = 0.5 mas na verdade, o inteiro que resulta
       // daqui é 0.
       // Para evitar isso, convertemos a variável inteira "a"
       // para float, fazendo (float)a
       // o código a seguir é o mesmo que ter 1.0/2.0 = 0.5
       // senão convertermos ficaria 1/2 = 0
       float teste = (float)a/(float)b;
       return teste;
   }
}

Construtor

Vamos então criar um projeto novo chamado de “Futebol“. Se não souber como criar um projeto, leia o seguinte artigo: Introdução ao Netbeans

De seguida, vamos criar a classe “Jogador” e colocar as seguintes variáveis:

public class Jogador {
// Note-se que todas as variáveis dentro de uma classe são privadas.
// Isto porque só podem ser acessiveis dentro da classe. 
// Outra classe não poderá acessar diretamente a elas
    private String nome;
    private int idade;
    private int peso;
    private int altura;
    private int nivel;
}

Neste momento, se for à função main que fica na classe “Futebol” e colocar a linha de código que se segue, irá criar um jogador novo.

public static void main(String[] args) {
        Jogador j1 = new Jogador();
}

Este jogador está criado mas não tem nome, nem idade, nem altura, nem nenhum dos atributos que adicionámos à classe. Então, como é que criamos um jogador, obrigando o utilizador a preencher todos os campos? A resposta está na criação de um “Construtor” na classe “Jogador”. Para isso, o Netbeans tem uma funcionalidade que permite poupar tempo ao programador. Dirija-se à classe “Jogador” e efetue um clique com o botão direito do rato na linha a seguir à variável nivel, clique na opção “Insert Code…” e escolha a opção “Constructor”, selecione todos os campos e clique Ok.

Insertcode

Após guardar as alterações, irá ter um erro na função main, isto porque já não está a inicializar o jogador correctamente. Então, vamos criá-lo correctamente:

public static void main(String[] args) {
        // O construtor recebe o seguinte
        // public Jogador(String nome, int idade, int peso, int altura, int nivel)
        // ou seja Jogador(String, int, int, int, int);
        Jogador j1 = new Jogador("Ronaldo", 30, 85, 190, 20);
    }

Função toString()

Após termos o código acima, vamos então escrever os dados do jogador! O leitor já sabe como escrever dados, logo:

public static void main(String[] args) {
        // O construtor recebe o seguinte
        // public Jogador(String nome, int idade, int peso, int altura, int nivel)
        // ou seja Jogador(String, int, int, int, int);
        Jogador j1 = new Jogador("Ronaldo", 30, 85, 190, 20);
        System.out.println(j1);
    }

E então, corra o código! Mas, porque razão não vejo os dados que eu quero?

Repare o leitor que o que está a ser escrito é apenas o objecto j1 e não o conteúdo (está a invocar uma função interna chamada “toString()”)… Para isso, iremos ensinar duas formas de escrever o output correto. Voltemos então à classe Jogador e vamos redefinir o método toString(). Na classe jogador, comece então por digitar “toString” e aperte “CTRL + espaço”, veja que o método irá aparecer. Faça “enter”.

cntrlSpace

E programe a função da seguinte forma:

@Override
    public String toString() {
        String mensagem;
        mensagem = "Nome: " + nome;
        return mensagem;
    }

Corra o código e repare que agora já aparece o nome do jogador que retornou.

Getters e Setters

Outra funcionalidade que permite poupar muito tempo a programar é a opção de introduzir gets e sets na classe. Da mesma forma que criámos o construtor, faça clique com o botão direito do rato na classe “Jogador”, escolha “Insert code…” e escolha a função “Getter and Setter”. Seleccione todos os campos e clique Ok.

Repare o leitor a quantidade de código que foi inserida. Qual a utilidade? Vamos então mostrar ao leitor o porque destes passos. Volte à função main e coloque:

public static void main(String[] args) {
        // O construtor recebe o seguinte
        // public Jogador(String nome, int idade, int peso, int altura, int nivel)
        // ou seja Jogador(String, int, int, int, int);
        Jogador j1 = new Jogador("Ronaldo", 30, 85, 190, 20);
        System.out.println(j1);
        // Agora vamos usar gets e sets
        // Repare o leitor que vamos buscar diretamente o nome
        System.out.println("Nome: " + j1.getNome());
        // Ou pode ir buscar a idade
        System.out.println("Idade: " + j1.getIdade());
        // Vamos colocar outro nome ao objeto j1
        // vai deixar de ser Ronaldo
        j1.setNome("Já não sou o Ronaldo");
        // escrever o nome
        System.out.println("Nome: " + j1.getNome());
    }

Desafio

Como no tutorial anterior, vamos lançar um desafio. Uma vez que houveram leitores a gostarem e a tirarem dúvidas via email, iremos arriscar e lançar o seguinte desafio.

  1. Crie dois jogadores, um chamado “Messi” e outro “Ronaldo”
  2. Escreva o nome de ambos no ecrã
  3. Altere o nome e volte a escrever

Como criar dois jogadores?

public static void main(String[] args) {
        Jogador ronaldo = new Jogador("Ronaldo", 30, 85, 190, 20);
        Jogador messi = new Jogador("Messi", 29, 10, 100, 20);
}

Qualquer dúvida que surja ao leitor, já sabe que poderá deixar o seu comentário ou enviar um e-mail para erbi.silva@techemportugues.com

Fonte das imagens