No Post anterior tivemos nosso primeiro contato formal com a Programação Orientada a Objetos. Aprendemos um pouco sobre abstração de classes a partir de uma entidade do mundo real ou uma entidade criada por nós baseada em conceitos do mundo real. Neste Post aprenderemos a como implementar classes e a como criar objetos em Java.
Criando a primeira classe em código
Se você não percebeu ainda, desde o primeiro código-fonte do nosso tutorial que já trabalhamos com, no mínimo, uma classe. Se não te recordas, o arquivo HelloWorld.java tem o seguinte conteúdo:
public class HelloWorld{
public static void main(String[] args){
System.out.println("Hello World");
}
}
HelloWorld é uma classe, você a declarou. A classe HelloWorld não tem atributos, e tem apenas um método: main. O método main é um método especial, reservado pela JVM para que um programa Java possa ser executado. Falaremos sobre ele adiante.
Para escrevermos, ou melhor, para declararmos nossa primeira classe pós-HelloWorld vamos resolver o exercício do Post anterior, que seria modelar uma classe baseada em uma janela do Windows. Chamaremos nossa classe de "Window":
Window
Atributos:
- largura
- altura
- posicaoX
- posicaoY
- estaMaximizada
Métodos:
- abrir
- fechar
- minimizar
- restaurar
- mover
A próxima fase de nossa abstração será adaptar a modelagem à linguagem Java. Devemos prosseguir com as seguintes premissas:
* todo atributo tem um tipo
* todo método tem um retorno.
Os tipos dividem-se em: tipos primitivos e tipos de referência. Para o exemplo da classe Window, faremos uso apenas de tipos primitivos, ou seja, tipos que não são classes. São exemplos de tipos primitivos: números inteiros, números reais e valores booleanos - true ou false. Os tipos primitivos são representados por palavras-chaves específicas. Por exemplo, para indicar que um atributo armazenará um valor que seja um número inteiro, utilizamos a palavra chave int.
Vamos começar a implementar a classe Window:
public class Window{
int largura;
int altura;
int posicaoAncoramentoX;
int posicaoAncoramentoY;
int posicaoX;
int posicaoY;
boolean estado;
}
Note que apenas os atributos da classe Window foram declarados, restando ainda a implementação de seus métodos.
Métodos são declarados para executarem ações referentes à classe em questão. Após executar todas suas linhas de comando um método é finalizado.
Um método é executado a partir do momento em que ele é chamado, e todo método retorna algum valor, seja ele um tipo primitivo, um tipo de referência ou até mesmo void. Tenha em mente que void representa um valor vazio, mas é um valor, o que é diferente de não ter um valor.
Nesta classe especificaremos que cada um dos métodos da classe Window retornará "vazio", usando a palavra-chave void. Faremos uma melhor explanação sobre métodos em Posts posteriores.
Observe como a classe Window será implementada com a inclusão de seus métodos:
Teoricamente a classe Window, até o momento, não possui funcionalidade alguma, pois seus métodos não possuem códigos a serem executados.
Criando um objeto do tipo Window
Antes de criar um objeto do tipo Window você precisa fazer o que se pede:
* Crie uma nova classe chamada Window no seu ambiente de programação e cole nela o conteúdo do código da classe Window exibido acima
* Codifique os 5 métodos da classe Window com comandos System.out.println(). Escreva mensagens como "A JANELA FOI MINIMIZADA" para o método minimizar(); "A JANELA FOI RESTAURADA" para o método restaurar(), e assim por diante. Observe como ficaria com o método mover():
public void mover(){
System.out.println("A Janela teve sua posição modificada");
}
Por fim, sem método main nossa classe não pode ser testada. Para provar que a classe Window não necessariamente precisa ser composta por um método main para ser testada, vamos criar outra classe chamada WindowTest:
public class WindowTest{Agora temos duas classes: Window e WindowTest. A classe WindowTest não tem nenhum atributo e apenas um método, que é o método main. Como já foi dito, o método main é a porta de entrada para que seu programa seja executado. Porém, precisamos codificar algo dentro dele, caso contrário a JVM não terá o que executar no nosso programa. Criaremos então nosso primeiro objeto em Java. Como já sabemos que todo objeto tem um tipo, criaremos um objeto do tipo Window.
public static void main(String[] args){
}
}
A princípio você deve seguir a seguinte sintaxe para a criação de objetos em Java:
public void mover(){
System.out.println("A Janela teve sua posição modificada");
}
O parâmetro TIPO_DO_OBJETO nada mais é que a classe que você queira criar objetos derivados dela. Em outras palavras, de que tipo será seu objeto. No nosso caso o objeto será do tipo Window.
O parâmetro NOME_DO_OBJETO depende apenas de você. Você nomeará o objeto que está sendo criado como desejar - com algumas exceções que veremos em Posts posteriores, claro.
= é nada mais que um operador binário utilizado para atribuições. Ele é um operador binário por precisar de dois operandos: um à sua esquerda, outro à sua direita. Seu funcionamento consiste em atribuir o valor do operando à direita para o operando à esquerda.
new é uma palavra-chave da linguagem Java que criará o objeto de fato. Na vida real é mais comum que você encontre o termo instanciar uma classe do que "criar um objeto".
TIPO_DO_OBJETO ( ) é o que chamamos de construtor. Falaremos melhor sobre construtores em Posts posteriores.
Nosso código dentro do método main ficará da seguinte maneira:
Window objetoWindow = new Window();
Já que agora temos um objeto "concreto", podemos manipulá-lo sem problemas. Lembre-se que dentro de métodos os comandos são lidos da esquerda para a direita e de cima para baixo. Então logo após a criação do objeto objetoWindow vamos fazer algumas modificações nos seus atributos:
objetoWindow.largura = 300;
objetoWindow.altura = 300;
objetoWindow.posicaoX = 25;
objetoWindow.posicaoY = 100;
objetoWindow.estaMaximizada = true;
Logo em seguida insira os comandos:
System.out.println(objetoWindow.largura);
System.out.println(objetoWindow.altura);
System.out.println(objetoWindow.posicaoX);
System.out.println(objetoWindow.posicaoY);
System.out.println(objetoWindow.estaMaximizada);
Execute seu programa e você verá no console os seguintes resultados impressos na tela:
300
300
25
100
true
Observe que os valores exibidos são os mesmos que você atribuiu no início do código. Esta é uma das funções de um atributo: armazenar valores.
Já que conseguimos testar uma das funcionalidades dos atributos de uma classe, vamos testar agora os métodos do objeto objetoWindow:
objetoWindow.mover();
objetoWindow.restaurar();
O console deverá exibir algo como - dependendo do que você escreveu:
A Janela teve sua posição modificada
A Janela foi restaurada
Parabéns, você criou seu primeiro objeto em Java e até o manipulou alterando e exibindo os valores de seus atributos e chamou seus métodos. Para fixar sua compreensão faça os exercícios abaixo:
EXERCÍCIOS
1. Ainda no objeto objetoWindow, escolha um de seus atributos e codifique uma seqüência de comandos como:
* alterar o valor do atributo
* imprimir valor do atributo
* alterar o valor do atributo
* imprimir valor do atributo
* alterar o valor do atributo
* imprimir valor do atributo
2. Crie um segundo objeto, e manipule e imprima os valores de seus atributos.
Ficamos por aqui. Um abraço e até a próxima

2 comentários:
Como javeiro de primeira viagem, estou conseguindo aprender muito com as dicas do seu blog. Mas, não estou conseguindo executar o TestWindow. O Eclipse retorna o erro: "Window cannot be resolved to a type". Espero que você possa me ajudar a seguir aprendendo.
Oi, Francisco. Que bom que o blog está lhe ajudando no seu aprendizado. Vejamos seu problema: a mensagem "Window cannot be resolved to a type" está sendo gerada porque sua classe TestWindow não está enxergando a classe Window. Portanto, para que você teste a classe Window da maneira que você quer, você deve deve criar duas classes: TestWindow.java e a própria Window.java.
TestWindow conterá um método main, e dentro do método main você deve criar o objeto Window. Algo como:
public class TestWindow{
public static void main(String[] args)
{
Window janela = new Window();
}
}
Se a classe Window for criada, então você não terá mais problemas de "XXX cannot be resolved to a type". A tradução desta frase indica que o TIPO que você está tentando atribuir a uma variável não é reconhecido pelo projeto.
Espero ter ajudado. Qualquer problema, comente novamente. =)
Um abraço
Postar um comentário