Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion 04. Prototypes II/4.2 - Classes.md
Original file line number Diff line number Diff line change
Expand Up @@ -208,7 +208,7 @@ class Animal {
}
}

class Gato extends Animal {
class Gato extends Animal { //
miar() {
console.log("miau miau")
}
Expand Down
4 changes: 4 additions & 0 deletions Atividades/Em aula/Exercicios.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
1. Adicione uma função `quantasChaves()` a **todos** os objetos, que retorna quantas chaves aquele objeto possui.

function Cachorro (nome, idade, cor, castrado, raça){

}

```
function quantasChaves() {
return Object.keys(this).length
Expand Down
62 changes: 62 additions & 0 deletions Atividades/Em aula/exercicios.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
//1. Adicione uma função `quantasChaves()` a todos os objetos, que retorna quantas chaves aquele objeto possui.

function quantasChaves(){
return Object.keys(this).length;
// usando o this apontamos pro objeto quantasChaves pro Object.keys contar as chaves
}

Object.prototype.quantasChaves = quantasChaves
// quando adicionamos ao prototype de objetos funciona pra todos os objetos.
({}).quantasChaves() // 0 com parenteses eu crio um objeto vazio e depois eu executo o quantas chaves
({ nome: "Layla"}).quantasChaves() // 1

// .................................................................................



// 2. A partir do nosso objeto de `Cachorro` da semana passada, escreva um novo construtor que utilize classes. Lembre-se que cachorros precisam `latir()`.

let Cachorro = class {
constructor(nome, idade, cor, castrado, raça){
this.nome = nome
this.idade = idade
this.cor = cor
this.castrado = castrado
this.raça = raça
}
latir(){
console.log("AU AU")
}
}

// como instanciar
let nino = new Cachorro ("nino", 11, "marrom", false, "vira lata");

// como adicionar novos metodos
Cachorro.prototype.brincar = () => console.log("yuuuuupeeeeee")


// 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 apareça")
} else if (animal instanceof Papagaio){
console.log("imite-o")
} else if(animal instanceof Hamster){
console.log("alise a cabeça dele")
} else {
console.log("melhor não brincar com ela...")
}
}

let marciaTeresa = new Gato ()
brincar (marciaTeresa) // use uma cordinha
161 changes: 161 additions & 0 deletions Atividades/Em casa - MicheleFeitosa/paraCasa.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,161 @@
class Animais {
constructor(nome, idade, cor) {
this.nome = nome;
this.idade = idade;
this.cor = cor;
this.consultas = [];
}
consultar() {
this.consultas.push(new Date());
}
brincar() {
console.log(`${this.nome} está brincando.`);
}
acariciar() {
console.log(`${this.nome} está sendo acariciado.`);
}
alimentar() {
console.log(`${this.nome} está sendo alimentado.`);
}
}

class Gato extends Animais {
constructor(nome, idade, cor, castrado, externo, social) {
super(nome, idade, cor);
this.castrado = castrado;
this.externo = externo;
this.social = social;
this.vacinas = [];
this.comidasFavoritas = ["frango", "sachê", "peixe"];
}
miar() {
console.log(this.social ? "miaaaaaau" : "grrrrrr");
}
castrar() {
if (!this.castrado) {
console.log(`${this.nome} foi castrada(o)`);
this.castrado = true;
this.consultar(); // Adiciona uma nova consulta
} else {
throw new Error(`${this.nome} já é castrada(o)`);
}
}
vacinar(vacina) {
this.vacinas.push(vacina);
this.consultar();
}
alimentar(comida) {
this.sociavel = this.comidasFavoritas.includes(comida);
console.log(`${this.nome} está comendo ${comida}.`);
}
acariciar() {
if (this.social) {
console.log(
`${this.nome} está ${
this.sociavel ? "ronronando" : "sendo"
} acariciado.`
);
} else {
console.log(`${this.nome} está silvando ao ser acariciado.`);
}
}
}


bela.vacinar("raiva")
bela.vacinas // saida: ['raiva']
bela.castrar() // saida: Bela foi castrada(o)

class Cachorro extends Animais {
#ferido;

constructor(nome, idade, cor, castrado, raca, ferido) {
super(nome, idade, cor);
this.castrado = castrado;
this.raca = raca;
this.#ferido = ferido;
this.vacinas = [];
}

latir() {
console.log("Au au!");
}
castrar() {
if (!this.castrado) {
console.log(`${this.nome} foi castrado.`);
this.castrado = true;
this.consultar(); // Adiciona uma nova consulta
} else {
throw new Error(`${this.nome} já é castrado.`);
}
}
vacinar(vacina) {
this.vacinas.push(vacina);
this.consultar(); // Adiciona uma nova consulta
}
brincar() {
if (this.#ferido) {
console.log(`${this.nome} está ferido e esta se encondendo, precisa de cuidados!`);
} else {
console.log(`${this.nome} está feliz e brincando!`);
}
}
setFerido(ferido) {
this.#ferido = ferido;
}
}

gudan.brincar(); // Saída: "Gudan está brincando."
gudan.setFeridotFerido(true);
gudan.brincar(); // Saída: "Gudan está ferido e se escondendo."
gudan.vacinar("raiva");


class Hamster extends Animais {
constructor(nome, idade, cor, tipo) {
super(nome, idade, cor);
this.tipo = tipo;
}
consultar() {
super.consultar();
console.log(this.brincar(), `${this.nome} está brincando ao ser consultado`);
}
}

pipoca.consultar() // saida: pipoca está brincando ao ser consultado

class Papagaio extends Animais {
constructor(nome, idade, cor) {
super(nome, idade, cor);
}

falar() {
console.log(`${this.nome} está falando: "Oi, Oi, Oi!"`);
}
brincar() {
this.falar();
}
alimentar() {
this.falar();
}
}

// Função para chamar e retornar os animais que responderam
function chamar(listaAnimais) {
const animaisQueResponderam = listaAnimais.filter(animal => animal instanceof Cachorro || (animal instanceof Gato && animal.social));
animaisQueResponderam.forEach(animal => console.log(`${animal.nome} respondeu e veio brincar.`));
return animaisQueResponderam;
}

// Criando instâncias dos animais
let bela = new Gato("Bela", 9, "tigrada", false, false, true);
let marciaTeresa = new Gato("Márcia Teresa", 18, "frajola", true, false, true);
let gudan = new Cachorro("Gudan", 20, "marrom", false, "Labrador", false);
let pipoca = new Hamster("pipoca", 4, "marrom", "hamster");
let zezinho = new Papagaio("Zezinho", 2, "verde");

// array com os animais
const listaAnimais = [bela, marciaTeresa, gudan, pipoca, zezinho];

// Chamando a função
const animaisQueResponderam = chamar(listaAnimais);
Loading