-
Notifications
You must be signed in to change notification settings - Fork 37
Prototype II - Mariana Seidel #10
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| 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) { ... } | ||
| ``` |
| 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) { | ||
| 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') | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe 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() | ||
|
|
||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe 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]) | ||
|
|
||
|
|
||
|
|
||
|
|
||
There was a problem hiding this comment.
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
There was a problem hiding this comment.
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
There was a problem hiding this comment.
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