UC –Prog. Orientada a Objetos

Propaganda
UC –
Prog. Orientada a Objetos
Docente: André Luiz Silva de Moraes
3º sem – Análise e Desenvolvimento de Sistemas
Programação Orientada a Objetos - 3º semestre
Prof. André Moraes
2.3
AULA 02
CONTINUANDO A ABORDAGEM A ALGUNS CÓDIGOS ESCRITOS EM JAVA
Faremos mais alguns programas apenas para nos certificarmos do comportamento da linguagem e dos recursos
de compilação e execução da linguagem Java.
EXEMPLO 1 – AS GARRAFAS DE CERVEJA SOBRE A MESA Salve o arquivo com o nome Cerveja.java
OBSERVAÇÕES:
•
Neste exemplo montamos um contador de garrafas que decresce até finalizar a contagem, o código é
implementado em um loop while inicial e através de testes decide a impressão das mensagens com o
contador de garrafas;
•
Note que o contador no loop verifica a quantidade de cervejas para poder decidir sobre o que irá escrever
na variável palavra;
•
As cervejas estão armazenadas na variável num_Cerveja e são decrescidas até chegarem a 1, onde será
impressa a útima frase e finalizando o aplicativo;
P á g | 10
Faculdade de Tecnologia SENAC PELOTAS - Credenciado pela Portaria nº. 3.071, de 01 de outubro de 2004.
2.3.1
UC –
Prog. Orientada a Objetos
Docente: André Luiz Silva de Moraes
3º sem – Análise e Desenvolvimento de Sistemas
2.3.2
EXEMPLO 2 – GERADOR DE PALAVRAS AUTOMÁTICO Neste exemplo desenvolveremos um gerador automático de frases, ainda nos exemplos para a interação da
linguagem, utilizaremos um jogo de variáveis com uso de matrizes de strings.
OBSERVAÇÕES:
Etapas do programa:
1. A primeira etapa é criar uma matriz de strings, que serão os contêineres que armazenarão todas as
palavras. Neste caso foram usadas as variáveis listaPalavras1, listaPalavras2 e listaPalavras3. Todas as
palavras estão entre aspas e foram separadas por vírgulas;
2. Em cada uma das três listas, o objetivo é selecionar uma palavra aleatória, portanto, temos que saber
quantas palavras existem em cada lista. Se houver 14 palavras na lista, precisaremos de um número
aleatório entre 0 e 13. O detalhe interessante de matrizes é o código:
a. Na sua declaração:
i. String[ ] testando = {“andre”, “ana”, “laura”};
b. Obtendo a quantidade de elementos da matriz:
i. int x = testando.length;
3. Precisaremos de 3 números aleatório. O Java vem empacotado, independente, predefinido e habilitado em
sua memória central com um conjunto de métodos de cálculo (por enquanto as consideraremos como
funções).
4. O método random(), utilizado anteriormente, retorna um número aleatório entre 0 e 1, e foi usado para
multiplicar pela quantidade de elementos (considerando o tamanho da matriz) da nossa listagem de
elementos. Para conseguir fazer uma saída com um número inteiro aleatório, tivemos de forçar que o
resultado fosse um inteiro com a conversão (int) que foi utilizada no código.
5. E por último realizamos a construção da frase, selecionando uma palavra em cada uma das três listas e
unindo-as (inserindo espaços em branco entre elas). Note que para conseguirmos realizar a seleção de
uma palavra foi utilizada as variáveis [rand1], [rand2] e [rand3] para isso.
P á g | 11
Faculdade de Tecnologia SENAC PELOTAS - Credenciado pela Portaria nº. 3.071, de 01 de outubro de 2004.
Seja o código a seguir:
UC –
Prog. Orientada a Objetos
Docente: André Luiz Silva de Moraes
3º sem – Análise e Desenvolvimento de Sistemas
3
Uma introdução na orientação a objetos
Faremos uma pequena explanação sobre classes e objetos, porém é interessante inicialmente criarmos uma a
partir de um exemplo para podermos visualizar melhor o que está acontecendo em nosso código e em seguida
tirarmos nossas próprias conclusões.
3.1
CRIANDO NOVAS CLASSES
Agora veremos como são os procedimentos para a criação de classes e também os nossos objetos a serem
utilizados nos projetos Java. Iniciaremos criando um pequeno exemplo muito simples para testarmos uma
comunicação entre métodos e objetos.
3.1.1
EXEMPLO 3 – CRIANDO A PRIMEIRA CLASSE Salve como Cachorro.java
Em seguida, criaremos outra classe com o nome TestaCachorro
Salve como TestaCachorro.java
OBSERVAÇÕES:
•
Logicamente se pode perceber que realizamos a criação de duas classes, e podemos notar que existe
uma relação entre as duas de alguma forma;
•
A classe cachorro possui apenas declarações de variáveis e um método com um retorno de impressão de
tela com o latido do cachorro;
•
A classe TestaCachorro é a classe onde tudo acontece de fato, note que nesta classe existe o método
main (que sempre existirá na classe principal do software). Esta classe utiliza uma operação com uso do
operador
3.2
. (ponto). Este operador lhe dará acesso ao estado e comportamento de um objeto.
ENTENDENDO UM POUCO SOBRE AS CLASSES
Por enquanto, a abordagem principal sobre o assunto de classes pode ser entendida da seguinte maneira:
Quando projetarmos uma classe precisamos pensar nos objetos que serão criados com a classe, e precisamos
considerar:
P á g | 12
Faculdade de Tecnologia SENAC PELOTAS - Credenciado pela Portaria nº. 3.071, de 01 de outubro de 2004.
Criaremos uma classe inicial com o nome Cachorro:
UC –
Prog. Orientada a Objetos
Docente: André Luiz Silva de Moraes
3º sem – Análise e Desenvolvimento de Sistemas
•
As coisas que o objeto conhece;
•
As coisas que o objeto faz;
Exemplos:
Pessoa
Nome
Tamanho
Sexo
setNome( )
getNome( )
dormir( )
Conhece
Faz
As coisas que um objeto conhece sobre ele são chamadas de variáveis de instância. Elas representam o estado
de um objeto (os dados) e podem ter valores exclusivos para cada objeto desse tipo.
É comum um objeto ter métodos que leiam ou gravem os valores das variáveis de instância. Por exemplo, um
objeto despertador tem uma variável de instância que armazena a hora de despertar e dois métodos que poderiam
capturar e configurar esta hora.
Despertador
Hora
setHora( )
getHora( )
despertar( )
3.3
QUAL A DIFERENÇA ENTRE CLASSE E OBJETO?
Uma classe não é um objeto, mas é usada para construí-los. A classe pode ser entendida como um projeto de
um objeto. Ela informa à máquina virtual como criar um objeto desse tipo específico.
Cada objeto criado a partir dessa classe terá seus próprios valores para as variáveis de instância da classe. Por
exemplo, podemos usar a classe Botão para criar vários botões diferentes, e cada botão poderá ter sua própria
cor, tamanho, forma, rótulo e assim por diante.
3.3.1
EXEMPLO 4 – CRIANDO A CLASSE FILME Neste exemplo criaremos a classe filme, que armazenará algumas informações sobre filmes e a classe testadora
para podermos visualizar as informações sendo atualizadas nas variáveis de objeto.
Salve o arquivo como Filme.java
P á g | 13
Faculdade de Tecnologia SENAC PELOTAS - Credenciado pela Portaria nº. 3.071, de 01 de outubro de 2004.
Podemos considerar a instância como outra maneira de dizer objeto. E as coisas que um objeto faz são
chamadas de métodos. Assim, quando projetarmos uma classe, precisaremos pensar nos dados que um objeto
terá de conhecer sobre si mesmo e também projetar os métodos que operarão sobre esses dados.
UC –
Prog. Orientada a Objetos
Docente: André Luiz Silva de Moraes
3º sem – Análise e Desenvolvimento de Sistemas
E agora a classe testadora:
OBSERVAÇÕES:
A classe filmeTestDrive cria objetos (instâncias) da classe Filme e usa o operador ponto ( ) para
configurar as variáveis de instância com um valor específico.
•
A classe filmeTestDrive também referencia (chama) um método em um dos objetos.
3.3.2
EXEMPLO 5 – CRIANDO UM PEQUENO JOGO EM JAVA Criaremos um jogo de adivinhação, envolvendo um objeto “jogo” e três objetos “jogadores”. O jogo gera um
número aleatório entre 0 e 9 e os três objetos jogadores tentam adivinhá-lo.
Classe Jogador.java
P á g | 14
Faculdade de Tecnologia SENAC PELOTAS - Credenciado pela Portaria nº. 3.071, de 01 de outubro de 2004.
.
•
UC –
Prog. Orientada a Objetos
Docente: André Luiz Silva de Moraes
3º sem – Análise e Desenvolvimento de Sistemas
Faculdade de Tecnologia SENAC PELOTAS - Credenciado pela Portaria nº. 3.071, de 01 de outubro de 2004.
Classe JogoAdivinha,Java
Classe principal do aplicativo: LancaJogo.java
P á g | 15
UC –
Prog. Orientada a Objetos
Docente: André Luiz Silva de Moraes
3º sem – Análise e Desenvolvimento de Sistemas
OBSERVAÇÕES:
•
Podemos notar que é na classe LancaJogo que o jogo é realmente inicializado, pois é a classe que
contém o método Java principal main( );
•
No método main( ), um objeto GuessGame é criado e seu método startGame( ) é chamado;
•
É no método StartGame do objeto AdivinhaJoo que o jogo inteiro se desenrola. Ele cria 3 jogadores e, em
seguida, “pensa” em um número aleatório (o que os jogadores devem adivinhar). Depois ele solicita a
cada jogador que adivinhe, verifica o resultado e exibe informações sobre o(s) jogador(es) vencedor(es)
ou pede que adivinhem novamente.
Em outras palavras:
LancaJogo
main(String[ ] args )
Cria um objeto AdivinhaJogo e
solicita que inicie o jogo.
p1
p2
p3
Faculdade de Tecnologia SENAC PELOTAS - Credenciado pela Portaria nº. 3.071, de 01 de outubro de 2004.
AdivinhaJogo
Variáveis de instância dos 3
jogadores
startGame( )
Jogador
numero
Palpite do jogador para o número
adivinhação( )
Método para dar um palpite
P á g | 16
Download