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
112 changes: 112 additions & 0 deletions Atividades/Em casa_Mariana Seidel/Exercicios.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,112 @@
Nome: Mariana Seidel

Nossa veterinária agora atende quatro espécies diferentes de animais: dois domésticos (`Gato` e `Cachorro`), e dois exóticos (`Hamster` e `Papagaio`). Usando o que você aprendeu essa semana (classes, herança, sobrescritas, campos privados...) e os exemplos de animais abaixo, escreva um sistema que atenda aos critérios listados:

1. Gatos
```
{
nome: "Nina",
idade: 1.5
cor: "frajola",
castrado: true,
externo: false,
vacinas: ["raiva],
consultas: [],
social: true,

miar(),
vacinar(),
consultar(),
castrar(),
brincar(),
acariciar(),
alimentar(),
}
```
- Gatos sociáveis ronronam ao serem acariciados. Se um gato não for sociável, ele deve silvar.
- Você pode tornar um gato sociável alimentando ele com uma das comidas favoritas dos gatos: frango, sachê ou peixe.

2. Cachorro
```
{
nome: "Zeus",
idade: 3.5
cor: "preto",
castrado: false,
raça: "labrador",
vacinas: [],
consultas: [],
ferido: false,

latir(),
vacinar(),
consultar(),
castrar(),
brincar(),
acariciar(),
alimentar(),
}
```
- Cachorros costumam esconder quando estão feridos. Use um campo privado para essa informação, e só a exiba ao tentar `brincar()` com um cãozinho que está ferido.

3. Hamster
```
{
nome: "Iogurte",
idade: 1.5,
cor: "branco e laranja",
tipo: "sírio",
consultas: [],

consultar(),
brincar(),
acariciar(),
alimentar(),
}
```
- Ao consultar um hamster, você deve brincar com ele para que ele não fique estressado e tente fugir.

4. Papagaio
```
{
nome: "José",
idade: 13,
cor: "verde"
consultas: [],

falar(),
consultar(),
brincar(),
acariciar(),
alimentar(),
}
```
- Ao brincar com ou alimentar um papagaio, ele deve falar com você.

5. Outros
- Sempre que vacinar um paciente, você deve adicionar uma nova consulta na lista. O mesmo vale para castrar um animal.
- Você deve ter uma função `chamar()`, que recebe uma lista de animais e retorna quais dos animais da lista responderam e vieram brincar. Todos os cachorros respondem quando chamados, assim como os gatos que são sociais. Hamsters, papagaios e gatos não sociais não virão.
- Tentar castrar um animal que já está castrado deve retornar um erro.

**Dica:** assinaturas possíveis para as funções:
```
function acariciar() { ... }

function alimentar(comida) { ... }

function brincar() { ... }

function castrar() { ... }

function chamar([listaAnimais]) { ... return [listaAnimaisQueResponderam] }

function consultar(dataConsulta) { ... }

function falar() { ... }

function latir() { ... }

function miar() { ... }

function vacinar(vacina) { ... }
```
182 changes: 182 additions & 0 deletions Atividades/Em casa_Mariana Seidel/exerciciosCasa.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,182 @@

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) {

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Mari, essa função poderia ter sido static dentro da classe Animal

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Mas tá funcionando muito massa a função, arrasou! Só não aparece nada no console porque você não colocou um console.log no return, mas não precisava

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Verdadee, eu não tinha pensado nessa possibilidade de colocar como static! Obrigada pela dica <3

let listaAnimaisQueResponderam = []
listaAnimais.filter(animal => {
if (animal instanceof Cachorro || (animal instanceof Gato && animal.social == true)){
listaAnimaisQueResponderam.push(animal.nome)
}
})
return listaAnimaisQueResponderam
}


let nina = new Gato ('Nina', 2, 'frajola', false, false, false)
nina.miar()
nina.alimentar('peixe')
nina.miar()
nina.consultar('15/08/2023')

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

a função consultar e a array consultas não estão aparecendo no console, mas acredito que esteja funcionando normalmente

nina.vacinar('raiva')
nina.castrar()
nina.consultas
nina.acariciar()
let pepo = new Gato ('Pepo', 4, 'frajola', true, false, true)
pepo.miar()
pepo.castrar()

let zeus = new Cachorro ('Zeus', 3, 'preto', false, true, 'bacê')
zeus.latir()
zeus.brincar()
zeus.castrar()
let lilo = new Cachorro ('Lilo', 1, 'preto', true, false, 'bacê')
lilo.brincar()
lilo.castrar()

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

a única coisa que eu faria seria colocar um console.log("---------------") entre os bichos pra facilitar a visualização do console, mas tirando isso, adorei seu código, está muito bom, bem escrito e de fácil entendimento e com tudo funcionando! arrasou muito, parabéns

let hamtaro = new Hamster ('Hamtaro', 2, 'marrom', 'chinês')
hamtaro.brincar()
hamtaro.consultar('12/10/2023')
hamtaro.consultas

let papa = new Papagaio ('Papa', 10, 'verde')
papa.falar()
papa.brincar()
papa.alimentar('Semente de Girassol')

chamar([nina, pepo, zeus, lilo, hamtaro, papa])