diff --git a/Atividades/Em casa/casa.js b/Atividades/Em casa/casa.js new file mode 100644 index 0000000..8c880f9 --- /dev/null +++ b/Atividades/Em casa/casa.js @@ -0,0 +1,143 @@ +class Animal{ + constructor(nome, idade, cor) { + this.nome = nome + this.idade = idade + this.cor = cor + this.consultas = [] + } + + consultar(dataConsulta) { + this.consultas.unshift(dataConsulta) + } + + brincar() { + console.log(`Vamos brincar ${this.brincadeira}`) + } + + acariciar(){ + console.log('hmmm recebendo um carinho') + } + + alimentar(comida){ + console.log(`Seu bichinho está sendo alimentado com ${comida}.`) + } +} + + +class AnimalDomestico extends Animal{ + constructor(nome, idade, cor, castrado) { + super(nome, idade, cor) + this.castrado = castrado + this.vacinas = [] + } + + vacinar(vacinas) { + this.vacinas.push(vacinas) + this.consultar(new Date()) + } + + castrar(){ + if (this.castrado === false) { + this.castrado = true, + this.consultar(new Date()) + console.log('Seu bichinho acaba de ser castrado!') + } else { + console.log('Ops, ocorreu um erro! Esse animal já é castrado.') + } + } +} + + +class Gato extends AnimalDomestico { + constructor(nome, idade, cor, castrado, externo, social){ + super(nome, idade, cor, castrado) + this.externo = externo + this.social = social + this.brincadeira = 'usando uma cordinha!' + } + + miar() { + if(this.social == true){ + console.log('ron ron ron') + } else { + console.log('Parece que seu gatinho não é sociável, ele está silvando. Teste dar a comida preferida dele!') + } + } + + alimentar(comida) { + super.alimentar(comida) + if(comida === 'frango'|| comida === 'sachê'||comida === 'peixe') { + return this.social = true + } else { + return this.social = false + } + } +} + +class Cachorro extends AnimalDomestico { + #ferido + constructor(nome, idade, cor, castrado, ferido, raca){ + super(nome, idade, cor, castrado) + this.#ferido = ferido + this.raca = raca + this.brincadeira = 'de se esconder!' + } + + latir() { + console.log('au au') + } + + brincar(){ + if(this.#ferido == true){ + console.log('O cãozinho está ferido, não podemos brincar') + } else { + super.brincar() + } + } +} + +class Hamster extends Animal { + constructor(nome, idade, cor, tipo){ + super(nome, idade, cor) + this.tipo = tipo + this.brincadeira = 'de girar no carrosel!' + } + + consultar(data){ + super.consultar(data) + this.brincar() + console.log('Brincando eu fico menos estressado!') + } +} + +class Papagaio extends Animal { + constructor(nome, idade, cor){ + super(nome, idade, cor) + this.brincadeira = 'de cantar!' + } + + falar(){ + console.log('curupaco paco curupaco paco') + } + + brincar(){ + super.brincar() + this.falar() + } + + alimentar(comida){ + super.alimentar(comida) + this.falar() + } +} + + +function chamar(listaAnimais) { + let listaAnimaisQueResponderam = [] + listaAnimais.filter(animal => { + if (animal instanceof Cachorro || (animal instanceof Gato && animal.social == true)){ + listaAnimaisQueResponderam.push(animal.nome) + } + }) + return listaAnimaisQueResponderam +} \ No newline at end of file