Programação Orientada a Objetos - Aula 05
Programação Orientada a Objetos (ILP007) - Aula 05
Construtores e Sobrecarga
Construtores
Quando utilizamos a palavra reservada new
em Java, estamos realizando o
processo de construção de um objeto. Este processo é executado por um
método especial chamado construtor, que possui o mesmo nome da classe.
O construtor é um bloco que possui o mesmo nome da classe e tem a função de inicializar atributos e realizar configurações necessárias durante a criação do objeto.
É importante observar que mesmo quando não criamos explicitamente um construtor, o compilador Java cria automaticamente um construtor padrão (sem parâmetros). Toda classe necessita de pelo menos um construtor, seja implícito ou explícito.
Sobrecarga (Overload)
A sobrecarga é a capacidade de definir múltiplos métodos com o mesmo nome em uma classe, desde que suas assinaturas sejam diferentes. A assinatura de um método é composta por seu nome e a sequência de parâmetros (tipos e ordem).
Exemplo de sobrecarga:
java code snippet start
public class ExemploOverload {
void imprimir() {
System.out.println("Método imprimir - void");
}
int imprimir(int a) {
int num = a;
return num;
}
int imprimir(int a, int b) {
return a + b;
}
}
java code snippet end
Sobrecarga de Métodos Construtores
Podemos criar diversos construtores para uma mesma classe, utilizando o princípio da sobrecarga. Isto permite inicializar objetos de diferentes maneiras, dependendo dos parâmetros fornecidos.
Exemplo:
java code snippet start
public class ClasseA {
public String texto1;
public String texto2;
// Construtor 1
public ClasseA() {
texto1 = "Primeiro Texto\n";
texto2 = "Segundo Texto\n";
}
// Construtor 2 (overload)
public ClasseA(String t1) {
texto1 = t1;
texto2 = "";
}
// Construtor 3 (overload)
public ClasseA(String t1, String t2) {
texto1 = t1;
texto2 = t2;
}
}
java code snippet end
Nota: Quando um método sobrecarregado é chamado, o compilador Java seleciona o método adequado examinando a assinatura do método na chamada.
Variável this
A palavra-chave this
em Java representa uma referência ao próprio objeto,
sendo utilizada para:
- Dentro de um construtor, executar outro construtor com assinatura diferente
- Resolver ambiguidade de nome entre um atributo e um parâmetro ou variável
- Retornar a própria referência da instância em algum método
Um uso comum de this
é no padrão de métodos encadeados (method chaining) e
em construtores para evitar duplicação de código.
Exemplo:
java code snippet start
public void setIdUsuario(int idUsuario) {
this.idUsuario = idUsuario;
}
java code snippet end
Pacotes
Pelo conteúdo de pacotes ser extenso, decidi publicá-lo separadamente. Você pode acessar a anotação clicando aqui: Pacotes em Java
Classe Math
A classe Math faz parte do pacote java.lang
e contém métodos estáticos para
cálculos matemáticos comuns. Por estar em java.lang
, é implicitamente
importada pelo compilador, não sendo necessário importá-la explicitamente.
Métodos da Classe Math
Método | Descrição | Exemplo |
---|---|---|
abs | Retorna o valor absoluto de um número | Math.abs(-10) retorna 10 |
ceil | Arredonda para o menor inteiro maior ou igual | Math.ceil(10.2) retorna 11.0 |
floor | Arredonda para o maior inteiro menor ou igual | Math.floor(10.8) retorna 10.0 |
round | Arredonda para o inteiro mais próximo | Math.round(10.5) retorna 11 |
sqrt | Retorna a raiz quadrada de um número | Math.sqrt(16) retorna 4.0 |
pow | Eleva um número à potência de outro número | Math.pow(2, 3) retorna 8.0 |
max | Retorna o maior de dois números | Math.max(5, 10) retorna 10 |
min | Retorna o menor de dois números | Math.min(5, 10) retorna 5 |
random | Retorna um número aleatório entre 0 (inclusivo) e 1 | Math.random() retorna um valor entre 0.0 e 1.0 |
Constantes Matemáticas
A classe Math também disponibiliza constantes matemáticas importantes:
- Math.PI (3,14159…) - representa a relação entre a circunferência de um círculo e seu diâmetro
- Math.E (2,718281…) - valor da base para logaritmos naturais
Enumeradores (enum)
Java possibilita criar uma estrutura de dados enumerada, que consiste em
conjuntos de constantes organizadas em ordem de declaração. A principal
funcionalidade do enum
é agrupar valores com o mesmo sentido dentro de uma
única estrutura.
Exemplo:
java code snippet start
public enum TipoUsuario {
OPERADOR,
SUPERVISOR,
ADMIN
}
java code snippet end
Os enumeradores são frequentemente utilizados para modelar conceitos fixos em um domínio, como status, tipos, categorias e permissões.
Aplicação Prática
Um exemplo de aplicação prática seria um sistema de folha de pagamento onde cada funcionário possui um tipo (enum) que determina suas permissões e acesso ao sistema:
java code snippet start
// Classe Funcionario com regra de acesso baseada em enum
public double getSalario(TipoUsuario tipoUsuario) {
if(tipoUsuario == TipoUsuario.ADMIN) {
return salario;
}
throw new IllegalArgumentException("Sem permissão de acesso");
}
java code snippet end
Referências Bibliográficas
- MENDES. Java com Ênfase em Orientação a Objetos. Novatec.
- DEITEL. Java, como programar – 10ª edição. Java SE 7 e 8
- ARNOLD, GOSLING, HOLMES. A linguagem de programação Java – 4ª edição.
- Apostilas da Caelum.