fasam-imc-calc
Version:
Cáculo de IMC - Pós EdS Fasam
74 lines (62 loc) • 1.82 kB
JavaScript
(() => {
// const Error = require('err');
class FasamIMC {
/**
* Opcionalmente constrói o objeto com valor pré determinados
*
* @param {Number} peso
* @param {Number} altura
*/
constructor(peso, altura){
this.peso = peso;
this.altura = altura;
}
/**
* Calcula o resultado númerico do IMC com base
* no peso e altura provido, ou nos valores
* informados na construção do objeto
*
* @param {Number} peso
* @param {Number} altura
* @return {Number}
*/
calc(peso, altura){
peso = this.peso || peso;
altura = this.altura || altura;
peso = this._parse(peso);
altura = this._parse(altura);
return (peso / Math.pow(altura, 2)).toFixed(2);
}
/**
* Alias para calc
*
* @param {*} args
*/
calcular(...args){
return this.calc(...args);
}
/**
* Faz um parse do número transformando possível
* vírgula (,) em ponto (.) e garantindo que
* ele se torne um Float
*
* @param {Number} num
* @return {Number}
*/
_parse(num){
this._validar(num);
num = num + "";
return parseFloat(num.replace(',','.')).toFixed(2);
}
/**
* Valida se o número é de fato um número (duuhh)
*
* @param {Number} num
*/
_validar(num){
if(typeof num !== 'number')
throw new Error("Valor inválido, informe um número inteiro ou decimal");
}
}
module.exports = FasamIMC;
})();