Buscar

Sobrecarga de Métodos e Classe Math em Java

Prévia do material em texto

Linguagem de Programação
Aula 4
Prof. Jane Alvarez
Professora : Jane2
Objetivos 
➢ Sobrecarga ou overload
➢ Objeto como parâmetro de método
➢ Classe Math, a constante PI e os métodos pow e sqrt.
Professora : Jane3
Sobrecarga ou overload
➢ Pode se ter sobrecarga de construtores e/ou de métodos.
➢ É configurado sobrecarga de construtores quando se tem 2 ou mais 
construtores que se diferenciam pela lista de parâmetros.
➢ Java permite que tenhamos métodos com o mesmo nome, mas 
parâmetros diferentes. Isso é chamado sobrecarga (ou overload) de 
métodos.
➢ No nosso exemplo do Retangulo, podemos definir outro método 
redimensionar(). 
Veja o exemplo a seguir ...
Professora : Jane4
Sobrecarga de Métodos
➢ Exemplo:
public class Retangulo {
//Atributos ...
//Construtor e outros métodos ...
public void redimensionar(int sx, int sy) {
if (sx > 0 && sy > 0) {
base = sx * base;
altura = sy * altura;
}
}
public void redimensionar(double larg, double alt) {
if (larg > 0 && alt > 0) {
base = larg;
altura = alt;
}
}
}
O Java não confunde os dois métodos porque 
eles tem assinaturas diferentes !
Assinatura diferente significa que os métodos 
têm:
- quantidades de parâmetros diferentes,
- tipos dos parâmetros diferentes ou 
- ordem dos parâmetros diferente
Professora : Jane5
Sobrecarga de Métodos
➢ Importante: o Java não leva em conta o tipo de retorno dos métodos 
para diferenciá-los, apenas a quantidade, a ordem e os tipos dos 
parâmetros. Exemplo:
public class Retangulo {
// Atributos ... Construtores ... Métodos
public void redimensionar(double dx, double dy) { ... }
public void redimensionar(int larg, int alt) { ... }
public boolean redimensionar(int larg, int alt) { ... }
}
Aqui teremos um erro de compilação, 
porque já existe um método redimensionar 
que recebe dois interiros. Apesar de um 
método não retornar nada e o outro 
retornar um boolean, os métodos são 
considerados iguais.
Professora : Jane6
Métodos Estáticos da classe Math
➢ No Java existe uma classe bastante usada que implementa funções 
matemáticas chamada Math.
➢ Todos os métodos dessa classe são estáticos, isto é, não dependem de 
nenhum objeto para serem executados.
public class Math {
public static double sqrt(double x) { ... }
public static long round(double x) { ... }
public static double pow(double x, double y) { ... }
}
Professora : Jane7
Métodos Estáticos
➢ A principal diferença entre os métodos estáticos e os métodos de 
instância está na sua chamada.
➢ Nos métodos estáticos não precisamos do objeto para chamar o 
método.
➢ Ao invés disso, usamos o próprio nome da classe para chamá-los.
➢ Exemplos:
double x = 12.2;
double y = Math.sqrt(x); // calcula a raiz quadrada de x
long z = Math.round(y); // arredonda o valor de y
Professora : Jane8
Métodos Estáticos – Classe Math
Método Descrição
abs(x) Retorna o valor absoluto do parâmetro x. x pode ser do tipo int, long, float ou double. 
Retorna um valor do mesmo tipo do parâmetro x.
double acos(double x) Retorna o arco coseno do parâmetro x
double asin(double x) Retorna o arco seno do parâmetro x
double atan(double x) Retorna o arco tangente do parâmetro x
double ceil(double x) Retorna o menor inteiro maior que x
double cos(double x) Retorna o coseno de x
double exp(double x) Retorna a constante de Euller e elevada a x
double floor(double x) Retorna o maior inteiro menor que x
double log(double x) Retorna o logaritmo natural de x
max(a, b) Retorna o maior valor entre a e b. a e b podem ser do tipo int, long, float ou double. 
Retorna um valor do mesmo tipo dos parâmetros a e b.
min(a, b) Retorna o menor valor entre a e b. a e b podem ser do tipo int, long, float ou double. 
Retorna um valor do mesmo tipo dos parâmetros a e b.
double pow(double a, double b) Retorna a elevado a b
double random() Retorna um número aleatório maior ou igual a ZERO e menor que UM
long round(double x) Retorna o inteiro mais próximo de x
double sin(double x) Retorna o seno de x
double tan(double x) Retorna a tangente de x
double sqrt(double x) Retira a raiz quadrada de x
Professora : Jane9
Exercícios ... Do Plano de Aula 4
1) Crie um projeto com duas classes :
▪ classe Circulo e 
▪ classe TestaCirculo (com a main), 
sabendo que todo círculo tem um raio e um centro no ponto (x,y). Neste 
projeto ...
a) crie dois círculos : um com valores constantes definidos por você e 
outro com dados obtidos via console.
b) implemente todos os sets e todos os gets
c) use sobrecarga de construtores e crie cada círculo (item a) com um 
construtor.
Professora : Jane10
Exercícios ... Do Plano de Aula 4
d) calcule a distância de um círculo a outro. Para isso, implemente um 
método
float distancia(Circulo outroCirculo)
que calcula a distância de um círculo a outro. 
Dica: A distância entre dois pontos é dada pela fórmula:
   22 abab yyxxd 
Professora : Jane11
Exercícios ... Do Plano de Aula 4
e) calcule a área de cada círculo. Para isso, implemente um método de 
nome calcularArea.
f) calcule o perímetro de cada círculo. Para isso, implemente um método de 
nome calcularPerimetro.
g) imprima todos os dados de cada círculo. Para isso, implemente um 
método de nome imprimirDados.

Continue navegando