From 4853fadcfd84a6cafd468dd5c5afaeb524622b15 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C3=A1rbara=20Fonseca?= Date: Wed, 19 Jul 2023 19:03:58 -0300 Subject: [PATCH] =?UTF-8?q?Exerc=C3=ADcios=20Prototype=20II=20-=20B=C3=A1r?= =?UTF-8?q?bara=20Fonseca?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Atividades/Em aula/Exercicios.md | 76 ++++++- .../Em casa/exercicioPrototypeII-barbara.js | 211 ++++++++++++++++++ package-lock.json | 6 + 3 files changed, 291 insertions(+), 2 deletions(-) create mode 100644 Atividades/Em casa/exercicioPrototypeII-barbara.js create mode 100644 package-lock.json diff --git a/Atividades/Em aula/Exercicios.md b/Atividades/Em aula/Exercicios.md index 44ad039..7a76c57 100644 --- a/Atividades/Em aula/Exercicios.md +++ b/Atividades/Em aula/Exercicios.md @@ -1,7 +1,21 @@ 1. Adicione uma função `quantasChaves()` a **todos** os objetos, que retorna quantas chaves aquele objeto possui. -2. A partir do nosso objeto de `Cachorro` da semana passada, escreva um novo construtor que utilize classes. Lembre-se que cachorros precisam `latir()`. ``` +function quantasChaves() { + return Object.keys(this).length //this pq ele precisa saber qual objeto ele precisa contar as chaves +} + +Object.prototype.quantasChaves = quantasChaves //object pq os objetos herdam tudo de Object.prototype. + +nina.quantasChaves() // o resutado dá 4 considerando o exemplo da aula +//pode usar tb Object.keys(nina) que ele mostra quais são as chaves +``` + +// NÃO É BOA PRÁTICA TROCAR OS PROTOTYPES DE OBJETOS QUE NÃO FORAM CRIADOS POR NÓS + + +2. A partir do nosso objeto de `Cachorro` da semana passada, escreva um novo construtor que utilize classes. Lembre-se que cachorros precisam `latir()`. + { nome: "Zeus", idade: 42, //em meses @@ -10,6 +24,64 @@ raça: "labrador", historico: [] } + +``` +class Cachorro { + constructor(nome, idade, cor, castrado, raça){ + this.nome = nome + this.idade = idade + this.cor = cor + this.castrado = castrado + this.raça = raça + this.historico = [] + } + + latir() { + console.log("au au au") + } +} + +let zeus = new Cachorro("Zeus", 42, "preto", false, "labrador") +``` + +3. Escreva uma função `brincar`, que te dá instruções sobre como brincar com cada espécie de animal. A função deve receber um animal como parâmetro (gato, cachorro, cobra, papagaio e pelo menos mais um outro animal de sua escolha) e, baseado na sua espécie, retornar qual brinquedo você deveria usar com ele. Ou, se for uma cobra, te dizer para não brincar com ela. + ``` +class Gato {} +class Cachorro {} +class Cobra {} +class Papagaio {} +class Hamster {} + + +function brincar(animal) { + if {animal instanceof Gato} { + console.log("Use uma cordinha") + } + + else if {animal instanceof Cachorro} { + console.log("Se esconda e depois apareça") + } -3. Escreva uma função `brincar`, que te dá instruções sobre como brincar com cada espécie de animal. A função deve receber um animal como parâmetro (gato, cachorro, cobra, papagaio e pelo menos mais um outro animal de sua escolha) e, baseado na sua espécie, retornar qual brinquedo você deveria usar com ele. Ou, se for uma cobra, te dizer para não brincar com ela. \ No newline at end of file + else if {animal instanceof Papagaio} { + console.log("Imite ele") + } + + else if {animal instanceof Hamster} { + console.log("Alise a cabeça dele") + } + + else { + console.log("Melhor não brincar...") + } +} + +let nina = new Gato() +brincar(nina) + +let zeus = new Cachorro() +brincar(zeus) + +brincar({}) +brincar(Celeste) +``` diff --git a/Atividades/Em casa/exercicioPrototypeII-barbara.js b/Atividades/Em casa/exercicioPrototypeII-barbara.js new file mode 100644 index 0000000..1949214 --- /dev/null +++ b/Atividades/Em casa/exercicioPrototypeII-barbara.js @@ -0,0 +1,211 @@ +class Animal { + constructor(nome, idade, cor) { + this.nome = nome + this.idade = idade + this.cor = cor + this.consultas = [] + } + + consultar(dataConsulta) { + this.consultas.push(dataConsulta) + } +} + +class AnimaisDomesticos extends Animal{ + constructor(nome, idade, cor, castrado) { + super(nome, idade, cor) + this.castrado = castrado + this.vacinas = [] + } + + vacinar(vacina, dataConsulta) { + this.vacinas.push(vacina) + this.consultas.push(dataConsulta) + } + + castrar(dataConsulta) { + if (this.castrado == false) { + this.castrado = true + } else { + console.log("Não é possível realizar a castração. Animal já castrado!") + } + this.consultas.push(dataConsulta) + } +} + +class Gato extends AnimaisDomesticos{ + constructor(nome, idade, cor, castrado, externo, sociavel) { + super(nome, idade, cor, castrado) + this.externo = externo + this.sociavel = sociavel + } + + miar() { + console.log("Miaaaau") + } + + brincar() { + console.log(`Você brincou com ${this.nome}. Agora está mais feliz =D`) + } + + acariciar() { + if (this.sociavel == true) { + console.log("ron ron ron") + } else { + console.log("ssschiiii") + } + } + + alimentar(alimento) { + if (alimento == "frango") { + this.sociavel = true + } else if (alimento == "sachê") { + this.sociavel = true + } else if (alimento == "peixe") { + this.sociavel = true + } else { + return + } + } +} + +marrie = new Gato("Marrie", 1, "branca", true, false, true) +marrie.miar() +marrie.brincar() +marrie.acariciar() +marrie.consultar("2023-02-10") +marrie.vacinar("raiva", "2023-07-18") +marrie.alimentar("racao") +marrie.castrar() +harry = new Gato("Harry", 3, "preto", false, true, false) +harry.acariciar() +harry.vacinar("raiva", "2023-01-06") +harry.alimentar("racao") +harry.alimentar("frango") +harry.castrar() + + + +class Cachorro extends AnimaisDomesticos{ + #ferido + constructor(nome, idade, cor, castrado, raça, ferido) { + super(nome, idade, cor, castrado) + this.raça = raça + this.#ferido = ferido + } + + latir() { + console.log("Au Au") + } + + brincar() { + if (this.#ferido == true){ + console.log(`${this.nome} se escondeu, pois está ferido(a)!`) + } + else { + console.log(`Você brincou com ${this.nome}. Agora está mais feliz =D`) + } + } + + acariciar() { + console.log(`Você acariciou ${this.nome}. Agora está se sentindo amado(a) <3`) + } + + alimentar() { + console.log(`Você alimentou ${this.nome}. Agora está saciado(a)!`) + } +} + +bella = new Cachorro("Bella", 3, "branco e preto", true, "dálmata", false) +bella.brincar() +tico = new Cachorro("Tico", 4, "branco e preto", false, "dálmata", true) +tico.brincar() +tico.acariciar() +bella.alimentar() +tico.vacinar("raiva", "2021-06-10") + + + + +class Hamster extends Animal{ + constructor(nome, idade, cor, tipo) { + super(nome, idade, cor) + this.tipo = tipo + this.relaxado = false + } + + brincar() { + console.log(`Você brincou com ${this.nome}.`) + this.relaxado = true + return this.relaxado + } + + acariciar() { + console.log(`Você acariciou ${this.nome}. Agora está se sentindo amado <3`) + } + + alimentar() { + console.log(`Você alimentou ${this.nome}. Agora está saciado!`) + } + + consultar(dataConsulta) { + if (this.relaxado == true) { + console.log(`Muito bem! ${this.nome} está relaxado e será possível realizar a consulta!`) + this.consultas.push(dataConsulta) + } else { + console.log(`Oh não! ${this.nome} fugiu! Você precisa brincar com ele para acalmá-lo!`) + } + } + +} + +alfred = new Hamster("Alfred", 1, "caramelo", "Roborovski") +alfred.brincar() +alfred.acariciar() +alfred.alimentar() +alfred.consultar("2023-06-10") +hamtaro = new Hamster("Hamtaro", 2, "cinza", "Anão Russo") +hamtaro.consultar("2022-10-10") + + +class Papagaio extends Animal{ + constructor(nome, idade, cor) { + super(nome, idade, cor) + } + + acariciar() { + console.log(`Você acariciou ${this.nome}. Agora está se sentindo amado <3`) + } + + falar() { + console.log("Papagaio! Papagaio!") + } + + brincar() { + return this.falar() + } + + alimentar() { + return this.falar() + } +} + +pacco = new Papagaio("Pacco", 18, "verde") +pacco.acariciar() +pacco.falar() +pacco.brincar() +pacco.alimentar() + + + +let listaAnimais = [marrie, harry, tico, bella, alfred, hamtaro, pacco] + +function chamar(animaisQueResponderam) { + if (animaisQueResponderam == Cachorro || animaisQueResponderam == Gato.sociavel(true)) + return "Animais que responderam"; +} + +function chamar(animaisQueNaoResponderam) { + if (animaisQueNaoResponderam == Hamster || animaisQueNaoResponderam == Papagaio) + return "Animais que não responderam"; +} diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..1ff9c39 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,6 @@ +{ + "name": "on25-ijs-prototype-JS-II", + "lockfileVersion": 2, + "requires": true, + "packages": {} +}