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.