Descrição do projeto
O Gerenciador de Banheiros Ecológicos é um projeto desenvolvido como parte de um curso de programação em JavaScript, que abrange os princípios de Programação Orientada a Objetos (POO), teste de código e boas práticas de desenvolvimento. O projeto tem um objetivo social fundamental: fornecer acesso a banheiros ecológicos para moradores de rua, melhorando sua qualidade de vida e promovendo a higiene pessoal.
A grande São Paulo abriga um significativo número de pessoas em situação de rua, cujas necessidades básicas fisiológicas e de higiene muitas vezes são negligenciadas pelo governo. Como resultado, essas pessoas acabam por realizar suas necessidades fisiológicas em espaços públicos ao ar livre, desprovidos de qualquer infraestrutura adequada.
Essa realidade tem impactos profundos, tanto na saúde das pessoas em situação de rua, quanto no meio ambiente circundante. Além disso, essa situação afeta negativamente a estética e a qualidade de vida nas regiões urbanas que abrigam uma considerável população em situação de rua.
Com base no problema exposto,
- Criar projeto de instalação de banheiros ecológicos.
- Atualizar projeto de instalação de banheiros ecológicos.
- Manutenção de projetos de instalação de banheiros ecológicos.
Portanto, as soluções selecionadas incluem a criação e manutenção de projetos de instalação de banheiros ecológicos.
A classe Usuários representa os usuários do sistema e inclui os principais atributos necessários para criar um usuário. Ela encapsula os detalhes dos dados do usuário em um único objeto.
| Função | Descrição |
|---|---|
| get id() | Retorna id |
| get cpf() | Retorna cpf |
| get contact() | Retorna contato |
| get email() | Retorna e-mail |
| set email(novoEmail) | Retorna novo e-mail |
| exibirDados() | exibi todos os dados |
A classe Engenheiro herda da classe Usuario, o que representa o conceito de herança em POO. Isso permite que a classe Engenheiro compartilhe atributos e métodos comuns com a classe Usuario.
const { Usuario } = require('./usuario');
class Engenheiro extends Usuario {
crea;
constructor(id, nome, cpf, telefone, email, crea) {
super(id, nome, cpf, telefone, email)
if (!id || !nome || !cpf || !telefone || !email || !crea) {
throw new Error("Dados inválidos!");
}
this.crea = crea;
}
get crea() {
return this.crea;
}
exibirDados() {
super.exibirDados();
console.log(`CREA: ${this.crea}`);
}
}
module.exports = {
Engenheiro
}A classe Arquiteto também herda de Usuário e, com o uso de super.exibirDados(), é possível notar a inclusão do número de CAU do arquiteto, demonstrando assim o Polimorfismo.
const { Usuario } = require('./usuario');
class Arquiteto extends Usuario {
cau;
constructor(id, nome, cpf, telefone, email, cau) {
super(id, nome, cpf, telefone, email)
if (!id || !nome || !cpf || !telefone || !email || !cau) {
throw new Error("Dados inválidos!");
}
this.cau = cau;
}
get cau() {
return this.cau;
}
exibirDados() {
super.exibirDados();
console.log(`CAU: ${this.cau}`);
}
}A classe Projetos representa o conceito de composição, pois ela inclui arquitetos e engenheiros. Possui funcionalidades que auxiliam na determinação se um projeto é ecológico ou não, adicionando características, acompanhando e atualizando manutenções.
Adicionar Características Ecológicas
addCaracteristicasEco(caracteristicasEco) {
if (this.listaDeCaracteristicasEco == null) {
this.listaDeCaracteristicasEco = [];
}
this.listaDeCaracteristicasEco.push(caracteristicasEco)
}Este método adiciona características ecológicas a um projeto. Se a lista de características ecológicas ainda não existe, ela é inicializada.
Verificar se um Projeto é Ecológico
projetoEcologico() {
let qtdRequisitoAtendido = 0;
if (this.listaDeCaracteristicasEco == null) {
return false;
}
this.listaDeCaracteristicasEco.forEach(element => {
if (this.#requisitosEcologicos.includes(element.toUpperCase())) {
qtdRequisitoAtendido++;
}
});
if (qtdRequisitoAtendido >= 4) {
return true
}
return false
}Este método verifica se um projeto é ecológico com base nas características ecológicas definidas. Para ser considerado ecológico, o projeto deve atender a pelo menos 4 requisitos ecológicos.
Adicionar Manutenção
addManutencao(data, servico) {
if (this.listaDeManutencoes == null) {
this.listaDeManutencoes = [];
}
const manutencao = { data, servico };
this.listaDeManutencoes.push(manutencao);
} todasManutencoes() {
return this.listaDeManutencoes;
}Este método retorna uma lista de todas as manutenções registradas para o projeto.
Última Manutenção
ultimaManutencao() {
if (this.listaDeManutencoes == null || this.listaDeManutencoes.length == 0) {
return null
}
return this.listaDeManutencoes[this.listaDeManutencoes.length - 1]
}
}Este método retorna informações sobre a última manutenção registrada no projeto.
> projetofinal@1.0.0 test
> jest
PASS src/usuario.test.js
PASS src/engenheiro.test.js
● Console
console.log
Id: 1
at Engenheiro.log (src/usuario.js:45:17)
console.log
Nome: Carol
at Engenheiro.log (src/usuario.js:46:17)
console.log
CPF: 123456
at Engenheiro.log (src/usuario.js:47:17)
console.log
Telefone: 9999999
at Engenheiro.log (src/usuario.js:48:17)
console.log
e-mail: @gmail
at Engenheiro.log (src/usuario.js:49:17)
console.log
CREA: 202320
at Engenheiro.log [as exibirDados] (src/engenheiro.js:20:17)
PASS src/arquiteto.test.js
PASS src/projeto.test.js
Test Suites: 4 passed, 4 total
Tests: 21 passed, 21 total
Snapshots: 0 total
Time: 3.109 s
Ran all test suites.- Jest - Jest é uma estrutura de test js, através dele é possível realizar os testes;
-
git clone - Clonar o projeto: abra o terminal onde deseja criar uma pasta para armazenar este projeto e execute o seguinte comando
$ mkdir nomePasta $ cd nomePasta $ git init $ git clone https://github.com/carolmarquezini/projetoFinal-Reprograma-JS -
npm install - Escreva a seguinte linha para instalar as dependências utilizadas nesse projeto:
$ npm install
-
npm run dev nicie o servidor, utilizando a frase:
$ npm run dev

