Skip to main content dev:Coelho

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:

  1. Dentro de um construtor, executar outro construtor com assinatura diferente
  2. Resolver ambiguidade de nome entre um atributo e um parâmetro ou variável
  3. 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étodoDescriçãoExemplo
absRetorna o valor absoluto de um númeroMath.abs(-10) retorna 10
ceilArredonda para o menor inteiro maior ou igualMath.ceil(10.2) retorna 11.0
floorArredonda para o maior inteiro menor ou igualMath.floor(10.8) retorna 10.0
roundArredonda para o inteiro mais próximoMath.round(10.5) retorna 11
sqrtRetorna a raiz quadrada de um númeroMath.sqrt(16) retorna 4.0
powEleva um número à potência de outro númeroMath.pow(2, 3) retorna 8.0
maxRetorna o maior de dois númerosMath.max(5, 10) retorna 10
minRetorna o menor de dois númerosMath.min(5, 10) retorna 5
randomRetorna um número aleatório entre 0 (inclusivo) e 1Math.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.