Skip to content

Latest commit

 

History

History
178 lines (132 loc) · 6.15 KB

File metadata and controls

178 lines (132 loc) · 6.15 KB

Em JavaScript, um objeto é uma estrutura de dados que permite armazenar múltiplos valores relacionados em um único local. Esses valores são chamados de propriedades do objeto. As propriedades podem ser qualquer tipo de dado, como strings, números, booleanos, arrays ou até mesmo outras funções. O objeto também pode ter métodos, que são funções que estão associadas a ele.

Vamos criar um exemplo de objeto para facilitar a compreensão:

// Definição de um objeto chamado "pessoa"
var pessoa = {
  nome: "João",
  idade: 25,
  profissao: "Programador",
  saudacao: function() {
    console.log("Olá, meu nome é " + this.nome + " e eu tenho " + this.idade + " anos.");
  }
};

Nesse exemplo, criamos um objeto chamado "pessoa". Ele tem três propriedades: "nome", "idade" e "profissao". A propriedade "nome" possui o valor "João", a propriedade "idade" possui o valor 25 e a propriedade "profissao" possui o valor "Programador". Além disso, o objeto possui um método chamado "saudacao", que é uma função que exibe uma saudação com o nome e a idade da pessoa.

Podemos acessar as propriedades de um objeto usando a notação de ponto (objeto.propriedade) ou a notação de colchetes (objeto["propriedade"]). Por exemplo:

console.log(pessoa.nome); // Saída: João
console.log(pessoa["idade"]); // Saída: 25

Também podemos chamar um método de um objeto da mesma forma:

pessoa.saudacao(); // Saída: Olá, meu nome é João e eu tenho 25 anos.

Uma das grandes vantagens dos objetos em JavaScript é a capacidade de armazenar e organizar informações de forma estruturada. Você pode criar objetos para representar entidades do mundo real, como pessoas, carros, produtos, entre outros.

Além disso, é possível criar objetos dinamicamente e adicionar ou modificar propriedades e métodos em tempo de execução. Por exemplo:

// Adicionando uma nova propriedade ao objeto "pessoa"
pessoa.cidade = "São Paulo";

console.log(pessoa.cidade); // Saída: São Paulo

Essa flexibilidade permite que você crie objetos com a estrutura que melhor se adapta às suas necessidades.


  1. Abstração: A abstração é o processo de identificar e definir características essenciais de um objeto, ignorando detalhes desnecessários. Em JavaScript, podemos criar objetos que representam entidades do mundo real, com propriedades e métodos relevantes para essa entidade. A abstração nos permite modelar essas entidades de forma simplificada. Por exemplo:
// Exemplo de abstração de um carro
class Carro {
  constructor(marca, modelo, ano) {
    this.marca = marca;
    this.modelo = modelo;
    this.ano = ano;
  }

  acelerar() {
    console.log("O carro está acelerando.");
  }

  frear() {
    console.log("O carro está freando.");
  }
}

// Criando uma instância de Carro
const meuCarro = new Carro("Toyota", "Corolla", 2022);

console.log(meuCarro.marca); // Saída: Toyota
meuCarro.acelerar(); // Saída: O carro está acelerando.

Nesse exemplo, abstraímos as características essenciais de um carro, como marca, modelo e ano, e definimos métodos para acelerar e frear.

  1. Encapsulamento: O encapsulamento é o princípio de esconder detalhes de implementação de um objeto e fornecer uma interface simples para interagir com ele. Em JavaScript, podemos usar classes e modificadores de acesso, como public, private e protected, para controlar o acesso às propriedades e métodos de um objeto. Por exemplo:
class ContaBancaria {
  constructor(nomeTitular, saldoInicial) {
    this.nomeTitular = nomeTitular;
    this._saldo = saldoInicial;
  }

  depositar(valor) {
    this._saldo += valor;
  }

  sacar(valor) {
    if (valor <= this._saldo) {
      this._saldo -= valor;
    } else {
      console.log("Saldo insuficiente.");
    }
  }

  get saldo() {
    return this._saldo;
  }
}

const minhaConta = new ContaBancaria("Fulano", 1000);

console.log(minhaConta.saldo); // Saída: 1000

minhaConta.depositar(500);
minhaConta.sacar(200);

console.log(minhaConta.saldo); // Saída: 1300

Nesse exemplo, encapsulamos a propriedade _saldo e fornecemos métodos públicos depositar, sacar e um getter saldo para interagir com o objeto ContaBancaria.

  1. Herança: A herança permite que uma classe herde propriedades e métodos de outra classe, estabelecendo uma relação de "é um". Em JavaScript, podemos usar a palavra-chave extends para criar uma classe filha que herda da classe pai. Por exemplo:
class Animal {
  constructor(nome) {
    this.nome = nome;
  }

  emitirSom() {
    console.log("O animal está emitindo som.");
  }
}

class Cachorro extends Animal {
  latir() {
    console.log("O cachorro está latindo.");
  }
}

const meuCachorro = new Cachorro("Rex");

console.log(meuCachorro.nome); // Saída: Rex
meuCachorro.emitirSom(); // Saída: O animal está emitindo som.
meuCachorro.latir(); // Saída: O cachorro está latindo.

Nesse exemplo, a classe Cachorro herda da classe Animal, adquirindo suas propriedades e métodos. Assim, um objeto do tipo Cachorro também é um objeto do tipo Animal.

  1. Polimorfismo: O polimorfismo permite que um objeto seja tratado de diferentes formas, dependendo do contexto. Em JavaScript, podemos aproveitar o fato de que os objetos são dinamicamente tipados para alcançar o polimorfismo. Por exemplo:
class Animal {
  emitirSom() {
    console.log("O animal está emitindo som.");
  }
}

class Cachorro extends Animal {
  emitirSom() {
    console.log("O cachorro está latindo.");
  }
}

class Gato extends Animal {
  emitirSom() {
    console.log("O gato está miando.");
  }
}

const animal1 = new Animal();
const cachorro = new Cachorro();
const gato = new Gato();

animal1.emitirSom(); // Saída: O animal está emitindo som.
cachorro.emitirSom(); // Saída: O cachorro está latindo.
gato.emitirSom(); // Saída: O gato está miando.

Nesse exemplo, cada classe define seu próprio método emitirSom, mas todas estão relacionadas pela classe pai Animal. Assim, podemos chamar o método emitirSom de cada objeto, e o comportamento será polimórfico, dependendo do tipo de objeto em questão.