Você está na página 1de 16

Classes, Objetos e Métodos:

Uma visão mais aprofundada


Vinicius Ramos
Visão Geral
 Sobrecarga de métodos;
 Introdução a enumerações;
 Referência a membros do objeto atual: this;
 Enumerações: Classes enum;
 Variáveis de Instância final;
 Criando Pacotes.
Sobrecarga de Métodos
 Já falamos de como declaramos métodos em
nossas classes;
 Vamos aprender a declarar os métodos com mesmo
nome em uma mesma classe;
 Esses métodos são métodos como todos os outros,
e por terem o mesmo nome dizemos que são
métodos sobrecarregados;
 A ideia da sobrecarga é justamente a de dar mais de
uma possibilidade de recebimento de parâmetros
para a realização de uma mesma tarefa.
Sobrecarga de Métodos
 São métodos com:
1. Mesmo nome;
2. Conjuntos diferentes de parâmetros, que podem ser:
i. Quantidades diferentes;
ii. Tipos diferentes;
iii. Ordem dos parâmetros (tipos e não nomes).
 Por exemplo, os métodos min e max da classe
Math são sobrecarregados com quatro versões:
1. uma com dois parâmetros double;
2. uma com dois parâmetros float;
3. uma com dois parâmetros int;
4. uma com dois parâmetros long;
Sobrecarga de Métodos
public class MethodOverload {

public void testOverloadedMethods(){


System.out.printf("Square of integer 7 is %d\n", square(7));
System.out.printf("Square of double 7.5 is %f\n", square(7.5));
} //fim do metodo testOverloadedMethods

public int square( int intValue ) {


System.out.printf("\nCalled square with int argument: %d\n", intValue);
return intValue * intValue;
} //fim do metodo square com argumento int

public double square( double doubleValue ) {


System.out.printf("\nCalled square with double argument: %f\n",
doubleValue);
return doubleValue * doubleValue;
} //fim do metodo square com argumento double

} //fim da classe MethodOverload


Sobrecarga de Métodos

public class MethodOverloadTest {

public static void main( String[] args) {


MethodOverload mo = new MethodOverload();
mo.testOverloadedMethods();
} //fim de main

} //fim da class MethodOverloadTest


Introdução a Enumeração
 Para introduzirmos a ideia de enumeração, vamos
visualizar uma implementação do jogo Craps
(Craps.java).
 Repare na variável gameStatus;
 Tipo Status;
 Este tipo é uma variável privada da classe;
 Status é um tipo chamado de Enumeração;
 Declaração de um conjunto de constantes representadas por
identificadores;
 enum é um tipo especial de classe;
 Os identificadores em uma enum devem ser únicos.
Referência a Membros do Objeto Atual: this
 Todo objeto pode acessar uma referência a si
mesmo usando a palavra-chave: this;
 Quando um método não static é chamado para um
objeto particular, o corpo do método utiliza
implicitamente a palavra-chave this para referenciar
as variáveis de instância do objeto e outros
métodos;
 Podemos usar a palavra-chave this no corpo de um
método não static;
 Exemplos: ThisTest.java
final
 Indica que uma variável é, na verdade, uma
constante;
 Qualquer tentativa em modificá-la é um erro;
 Não é obrigatória a sua inicialização, podendo ser
inicializada pelo construtor da classe;
 Exemplo: Increment.java e IncrementTest.java
Classe enum
 Todos os tipos enum são tipos por referência;
 Cada declaração enum declara uma classe com as
seguintes restrições:
1. As constantes enum são implicitamente final, porque
declaram constantes que não devem ser modificadas;
2. Constantes enum são implicitamente static;
3. Qualquer tentativa de criar um objeto de um tipo enum
com um operador new resulta em um erro de
compilação;
 A declaração pode incluir construtores, métodos e
campos de uma classe tradicional;
 Exemplo: Book.java e EnumTest.java
Pacotes
 São utilizados para agrupar classes relacionadas;
 Ao importarmos uma classe, como a java API,
indicamos o nome do pacote e a classe;
 Programas complexos exigem pacotes para facilitar
o gerenciamento e a complexidade das classes;
 Ajuda a termos nomes únicos nas classes, evitando
conflitos com outros nomes de classes;
 Na prática, os pacotes indicam a estrutura em
árvore (pastas) que a sua classe pertence, por
exemplo, a classe Disciplina do pacote br.unisul
está localizada dentro da pasta unisul que está
dentro da pasta br.
Pacotes
 Exemplo: Time1 e Time
Exercícios
1. Crie uma classe Rectangle com atributos length e
width, cada um dos quais assume o padrão de 1.
Forneça métodos que calculem o perímetro e a
área do retângulo. A classe tem métodos set e get
para o comprimento (length) e para a largura
(width). Os métodos set devem verificar se length
e width são, cada um, números de ponto flutuante
maiores que 0,0 e menores que 20,0. Escreva um
programa para testar a classe Rectangle.
Exercícios
2. Escreva um tipo enum TrafficLight, cuja constante
(RED, GREEN, YELLOW) aceite um parâmetro – a
duração da luz. Escreva um programa para testar
o enum TrafficLight de modo que ele exiba a
constante enum e suas durações.
Exercícios
3. Crie uma classe TicTacToe que permitirá escrever um
programa para reproduzir o jogo da velha. A classe
contém um array bidimensional privado 3 por 3. Utilize
uma lista para representar o valor em cada célula do
array. As constantes da enumeração devem ser
chamadas de X, O e EMPTY (para uma posição que
não contém um X ou um O). O construtor deve
inicializar os elementos board (tabuleiro) como EMPTY.
Permita dois jogadores humanos. Para onde quer que
o primeiro jogador se mova, coloque um X no quadrado
específico; coloque um O no local para onde o
segundo se mover. Todo movimento de ocorrer em um
quadrado vazio. Depois de cada jogada, determine se
o jogo foi ganhado ou se aconteceu empate.
Exercícios
4. Modifique o programa anterior para que o
computador jogue por um dos jogadores. Permita
que o usuário escolha se quer ser o primeiro ou o
segundo a jogar.

Você também pode gostar