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.