Cursos / Redes de Computadores / Programação Orientada a Objetos / Aula

arrow_back Aula 03 - Construtores e Objetos

Conceitos: Construtores e Objetos

Construindo objetos

Antes de tudo, é preciso ter em mente que objetos são construídos, você NÃO pode criar um novo objeto sem invocar um construtor. Construtores representam o código que roda sempre que você usa a palavra-chave new.

Toda classe DEVE ter um construtor. Mas isso não significa que o programador tem que necessariamente codificar um. Caso não seja explicitamente declarado, o compilador criará um por padrão. Exemplo de uso do construtor padrão:

let c = new Carro();
c.cor = "Vermelho";
console.log(c.cor);

Observe que quando utilizamos o operador new não existem argumentos (ou parâmetros) dentro dos parênteses. Isso significa que podemos usar o construtor padrão (ou, em inglês, default).

Métodos construtores

O que são construtores?

  • São métodos especiais para a criação e inicialização de novas instâncias de classe (objetos);
  • Inicializam o novo objeto e seus atributos;
  • Realizam todas as outras operações que ele precisa para ser inicializado.

O que faz o operador new?

Ele inicializa o novo objeto e seus atributos

Criando um método construtor

export class Carro{

    modelo: string;
    _cor: string;
    placa: string;
    numPortas: number;

    constructor(modelo:string, cor: string, placa: string, numPortas: number){
        this.modelo = modelo;
        this._cor = cor;
        this.placa = placa;
        this.numPortas = numPortas;
    }

}

Você consegue notar o que está faltando? Cadê o tipo de retorno? Existem dois pontos importantes que devemos notar a respeito dos construtores. Primeiro, é que eles não têm tipo de retorno, segundo, que devemos utilizar a palavra reservada constructor.

Mas, se a classe não tiver método construtor? O objeto ainda pode ser criado usando a instrução (ou operador) new. Mas, nesse caso, será provavelmente necessário chamar métodos de acesso (set) para definir valores para os atributos da classe.

Criando um objeto a partir do construtor definido anteriormente:

let c = new Carro("Fiesta","Vermelha","AEC-9898",4);

Observe que quando criamos o objeto já passamos os valores como parâmetro para o construtor, com isso definindo na hora da criação do objeto os valores dos atributos.

Características do método construtor

  • Não tem retorno;
  • Não tem nome;
  • Usa a palavra-chave constructor.

Construtor com parâmetro opcional

Até agora vimos que é possível definir construtor com parâmetros e construtor padrão, vazio, sem nenhum parâmetro passado no momento da criação do objeto. Mas, se o problema que estivermos trabalhando exigir diferentes construtores para diferentes momentos? O Typescript não permite sobrecarga de construtores, porém para resolver esse problema podemos utilizar um recurso que a linguagem disponibiliza: parâmetro opcional. Os parâmetros opcionais são definidos com um sinal de interrogação após o nome do parâmetro e devem ser sempre o último ou os últimos parâmetros. Vejamos um exemplo:

constructor(modelo:string, cor: string, placa?: string, numPortas?: number){
    this.modelo = modelo;
    this.cor = cor;
    this.placa = placa;

        if(numPortas != undefined){
            this.numPortas = numPortas;
        }else{
            this.numPortas = 2;
        }        
}

Importante: Quando temos parâmetros opcionais é preciso tratá-los para não receber valores undefined e provocar erros futuros no código. Veremos mais adiante uma outra forma de tratá-los, que é utilizando parâmetro com valor padrão.

Abaixo, segue um exemplo de como criar uma instância do objeto carro na variável c que recebe todos os parâmetros, porém a variável c2 só recebe os parâmetros obrigatórios.

let c = new Carro("Fiesta","Vermelha","AEC-9898",4);

let c2 = new Carro("Gol","Branca");

Versão 5.3 - Todos os Direitos reservados