Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Objeto

Olha eu aqui de novo...

Bom dia,

Tenho bastante resistência com orientação a objetos mas estou querendo transpassar essa barreira, então vamos lá.

Durante a aula o professor criou o objeto "paciente":

let paciente = {

    nome: form.nome.value, // valor de nome (digitado no input do form)
    peso: form.peso.value,
    altura: form.altura.value,
    gordura: form.gordura.value,
    imc: calculaImc(form.peso.value, form.altura.value)

}

Gostaria de saber qual seria a diferença se ele tivesse adicionado um "class" na frente do objeto. Em outras palavras, porque usar a classe? Somente quando pretendo lidar com herança?

Obrigado!

2 respostas
solução!

Olá Victor,

Este exemplo que o professor criou o let paciente = { ... }, não é necessáriamente um exemplo de Programação Orientada a Objeto, ele está mais para uma variavel que possui diferentes atributos.

Quando criamos uma "class", definimos os atributos (valors) e métodos (funções) próprias e obrigatórias daquele objeto.

Exemplo

export class Paciente {
        constructor(nome, peso, altura, gordura){
                this._nome = nome,
                this._peso = peso,
                this._altura = gordura,
        }

        getImc(){
            return this._peso / (this._altura * this._altura);
        }

        getNome(){
                return this._nome;
        }

        getAltura(){
                return this._altura;
        }

        getPeso(){
                return this._peso;
        }

}

Neste caso, estou utilizando um objeto orientado, entao ao criar um novo objeto do tipo Paciente, eu obrigatóriamente tenho que definir os valores, nome, peso, altura e gordura.

let paciente = new Paciente(form.nome.value, form.peso.value, form.gordura.value);

E podemos utilizar o método getImc, para receber este valor.

paciente.getImc();

Diferente do exemplo que você citou acíma, pois, nele podemos criar e utilizar qualquer atributo sem restrições, por exemplo:

let paciente = {
    primeiroNome: form.nome.value,
    pesoEmKilos: form.peso.value,
    alturaEmMetros: form.altura.value
}

Percebe? Posso escolher qualquer nome para os meus atributos, e se tivermos um segundo, terceiro, quarto paciente, teremos repetição de código... Enquanto quando temos uma Classe definida, podemos facilmente criar novos elementos.

let paciente1 = new Paciente(valor1, valor2....);
let paciente2 = new Paciente(valor1, valor...);
let paciente3 = new Paciente(valor1, val...);
let paciente4 = new Paciente(valor1...);

e também, acessar facilmente seus valores:

paciente1.getNome(); <<<< Este método trará o nome do paciente1;
paciente2.getNome(); <<<< Este método trará o nome do paciente2;

paciente3.getAltura();
paciente4.getPeso();
paciente4.getImc();

A orientação a objeto, traz um padrão aos objetos criados, e também compartilha individualmente todos os métodos (funções) do mesmo.

Obrigado Rodrigo, agora o conteúdo foi bem mais claro.