Skip to content

Commit

Permalink
Objetos e classes em JS
Browse files Browse the repository at this point in the history
  • Loading branch information
Douglas10009 committed Nov 19, 2023
1 parent ca58af3 commit 97021d3
Show file tree
Hide file tree
Showing 8 changed files with 236 additions and 0 deletions.
3 changes: 3 additions & 0 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"liveServer.settings.port": 5501
}
1 change: 1 addition & 0 deletions Fundamentos de CSS/desafio/trilha-css-desafio-01
Submodule trilha-css-desafio-01 added at 03ede5
22 changes: 22 additions & 0 deletions JavaScript/FuncoesJS/aula1.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
// Funções são objetos
function main() {
return 'say my name';
}
console.log(main);

const main2 = main;
console.log(main2());

const princ = function() {
console.error("pane no sistema");
}

princ();

// Funções invocadas imediatamente
(function () {
console.log("SAY MY NAME");
})();


// Funções que não devolvem nada são chamadas de procedimentos
61 changes: 61 additions & 0 deletions JavaScript/FuncoesJS/exerciciosGuiados/escrevameunome.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
function EscrevaMeuNome(nome) {
return 'Olá! ' + nome;
}

EscrevaMeuNome("Douglas");

// Função sobre função
function serMaior(idade) {
if (idade >= 18) {
return "Maior de idade";
} else {
return "Menor de idade";
}
}

serMaior(10);


// Misto
function cumprimentos(nome, idade) {
console.log(EscrevaMeuNome(nome) + ' você é ' + serMaior(idade));
}

cumprimentos("Douglas", 18);

// Calcular preço
function precoEtiqueta(formaPagamento, preco) {
switch (formaPagamento) {
case 1:
return preco - (preco * 0.1);
case 2:
return preco - (preco * 0.15);
case 3:
return preco;
case 4:
return preco + (preco * 0.1);
default:
return undefined;
}
}

function formaPagamento(formaPagamento) {
switch (formaPagamento){
case 1:
return "Débito";
case 2:
return "Dinheiro/Pix";
case 3:
return "Dividido em 2 vezes";
case 4:
return "Dividido em mais de 2 vezes";
default:
return undefined;
}
}

const formPgmt = 5;
const preco = 10;

console.log("Pagando através do " + formaPagamento(formPgmt, preco) + " com o produto por R$" + preco);
console.log("O preço fica R$" + precoEtiqueta(formPgmt, preco));
42 changes: 42 additions & 0 deletions JavaScript/ObjetosClasses/Classes.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
// E se eu quiser criar várias pessoas? -> Cria uma classe

// Classe - modelo de como deveria ser (Isso não seria interface?)
// Instância - Aplicação da classe (Ocorrência da classe)

class Pessoa {
nome;
idade;
anoDeNascimento;

// Construtor é o que vai definir quando a classe é instanciada
// Chamadas de contratos
constructor (nome, idade){
this.nome = nome;
this.idade = idade;
const anoHoje = new Date;
this.anoDeNascimento = anoHoje.getFullYear() - idade;
}

// Não se faz nescessário escrever function dentro de uma classe
descrever (){
console.log(`Meu nome é ${this.nome} e tenho ${this.idade} anos de idade e nasci no ano de ${this.anoDeNascimento}`);
}
}

const douglas = new Pessoa('Douglas', 20);
douglas.descrever();

const lusca = new Pessoa('Lusca', 34);
lusca.descrever();

function compararPessoa(p1, p2) {
if (p1.idade > p2.idade) {
console.log(`${p1.nome} é mais velho(a) do que ${p2.nome}`);
} else if (p1.idade < p2.idade) {
console.log(`${p2.nome} é mais velho(a) do que ${p1.nome}`);
} else {
console.log(`${p2.nome} e ${p1.nome} tem a mesma idade`);
}
}

compararPessoa(douglas, new Pessoa('Felca', 20));
27 changes: 27 additions & 0 deletions JavaScript/ObjetosClasses/ExerciciosGuiados/Carro.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
class Carro {
marca;
cor;
gastoCombustivelMedio; // KM/litro
tipoCombustivel;

constructor(marca, cor, gastoCombustivelMedio, tipoCombustivel = 'Gasolina'){
this.marca = marca;
this.cor = cor;
this.gastoCombustivelMedio = (gastoCombustivelMedio).toFixed(5);
this.tipoCombustivel = tipoCombustivel
}

dinheiroNaViagem (qntKM, precoCombustivel){
let litros = this.gastoCombustivelMedio * qntKM;
return (precoCombustivel * litros).toFixed(2);
}

descrever () {
console.log(`Carro da marca ${this.marca} e a cor ${this.cor} e roda ${this.gastoCombustivelMedio} KM por litro, sendo ${this.tipoCombustivel} o combustível dele.`);
}
}

let chervrolet = new Carro('Chevrolet', 'Prata', 1/12, 'Alcool');
chervrolet.descrever();
console.log(`Você vai gastar R$${chervrolet.dinheiroNaViagem(70, 5)}`);

51 changes: 51 additions & 0 deletions JavaScript/ObjetosClasses/ExerciciosGuiados/Pessoa.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
class Pessoa{
nome;
peso;
altura;

constructor(nome, peso, altura){
this.nome = nome;
this.peso = peso;
this.altura = altura;
}

calcularIMC(){
return (this.peso / Math.pow(this.altura, 2)).toFixed(2);
}

classificarIMC(){
let imc = this.calcularIMC();
let classificacao = '';

if (imc < 18.5 ) {
classificacao = 'Abaixo do peso';
} else if (imc > 18.5 && imc < 24.9) {
classificacao = 'Peso normal';
} else if (imc > 25 && imc < 29.9){
classificacao = 'Sobrepeso';
} else if (imc > 30 && imc < 34.9){
classificacao = 'Obesidade grau I';
} else if (imc > 35 && imc < 39.9){
classificacao = 'Obesidade grau II (Severa)';
} else if (imc > 40){
classificacao = 'Obesidade grau III (Mórbida)';
}

return classificacao;
}

descrever (){
console.log(`Nome: ${this.nome} \nAltura: ${this.altura} cm\nPeso: ${this.peso} kg`);
console.log(`${this.nome} tem ${this.calcularIMC()} de IMC e está ${this.classificarIMC()}`);
}
}


const jose = new Pessoa('José', 70, 1.75 );
jose.descrever();
// IMC abaixo de 18,5: Abaixo do peso
// IMC entre 18,5 e 24,9: Peso normal
// IMC entre 25,0 e 29,9: Sobrepeso
// IMC entre 30,0 e 34,9: Obesidade grau I
// IMC entre 35,0 e 39,9: Obesidade grau II (severa)
// IMC 40,0 ou superior: Obesidade grau III (mórbida)
29 changes: 29 additions & 0 deletions JavaScript/ObjetosClasses/Objetos.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
// Alusão a um map

// Função dentro de um objeto = método
const pessoa = {
nome: 'Douglas',
idade: 20,

// Pq não posso utilizar função anonima?
// Pois função anônima só herda os própios atributos, ou seja, ele não reconhece o 'nome' da função anterior
// Poderia ser utilizado caso as variáveis fossem usadas no escopo da arrow function.
descrever : () => console.log(`Seu nome é ${this.nome} e sua idade é ${this.idade}`)
};

// -- Adicionando valores
// pessoa.altura = 1.90;
// console.log(pessoa);

// -- Deletando valores
// delete pessoa.nome;
// console.log(pessoa);

// -- Chamando métodos
// pessoa.descrever();

// -- Acessar dinamicamente os atributos
// console.log(pessoa['nome']);
// pessoa['nome'] = 'Lusca';
// console.log(pessoa['nome']);
// A outra forma é estática.

0 comments on commit 97021d3

Please sign in to comment.