https://github.com/carlosandresamp/simulador_fluxo_refeitorio
Sistema de simulação que modela o fluxo de alunos em um refeitório universitário, permitindo a configuração de parâmetros operacionais e a análise estatística dos resultados para entender gargalos, eficiência e tempo médio de atendimento.
https://github.com/carlosandresamp/simulador_fluxo_refeitorio
Last synced: about 2 months ago
JSON representation
Sistema de simulação que modela o fluxo de alunos em um refeitório universitário, permitindo a configuração de parâmetros operacionais e a análise estatística dos resultados para entender gargalos, eficiência e tempo médio de atendimento.
- Host: GitHub
- URL: https://github.com/carlosandresamp/simulador_fluxo_refeitorio
- Owner: carlosandresamp
- Created: 2025-01-28T10:39:48.000Z (4 months ago)
- Default Branch: main
- Last Pushed: 2025-03-20T12:08:04.000Z (2 months ago)
- Last Synced: 2025-03-20T13:39:43.940Z (2 months ago)
- Language: TypeScript
- Size: 1.09 MB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Simulador_Fluxo_Refeitorio
Sistema de simulação que modela o fluxo de alunos em um refeitório universitário, permitindo a configuração de parâmetros operacionais e a análise estatística dos resultados para entender gargalos, eficiência e tempo médio de atendimento.# Descrição Detalhada do Funcionamento do Refeitório
O refeitório opera em etapas sequenciais, com regras de controle de fluxo e limites físicos:
## 1. Fila Externa
- **Capacidade**: Sem limite de capacidade.
- **Objetivo**: Alunos aguardam para acessar a catraca.
- **Controle de Entrada**: A entrada na fila externa é determinada por uma distribuição configurável (normal, logarítmica ou linear) dentro do intervalo **IAR**.## 2. Catraca
- **Função**: Controla o acesso à fila interna.
- **Operação**:
- Cada aluno digita sua matrícula, levando em média **TMDM** segundos.
- Bloqueia a entrada se a fila interna atingir o limite máximo **LFI**.
- Libera novamente quando a fila interna reduz **QAL** alunos.## 3. Fila Interna
- **Capacidade**: Máxima definida por **LFI**.
- **Objetivo**: Alunos aguardam para serem atendidos pelos funcionários.
- **Controle**:
- Se todas as mesas estiverem ocupadas (**LM**), o atendimento é pausado até que uma mesa seja liberada.## 4. Atendimento (Funcionários)
- **Função**: Servir comida aos alunos.
- **Operação**:
- Servem a comida em um tempo médio de **TMPSC** segundos por aluno.
- Atendimento ocorre apenas se houver mesas disponíveis.## 5. Mesas
- **Capacidade**: Máxima definida por **LM**.
- **Operação**:
- Cada aluno ocupa uma mesa por **TMPNM** segundos.
- Após esse tempo, a mesa é liberada automaticamente.## 6. Classes
- ### Class Student
- #### Este código implementa uma classe ``Student``, que representa um estudante e gerencia seu status durante um processo de atendimento. O status do estudante pode ser "``aguardando``", "``atendido``" ou "``saindo``". Abaixo, detalhamos cada parte do código.```typescript
export type StudentStatus = "aguardando" | "atendido" | "saindo";export class Student{
private register: string;
public readonly comingTime : Date;
public readonly serviceTime: Date;
public readonly servedTime: Date;
public status : StudentStatus;constructor(register:string, comingTime:Date, serviceTime:Date, servedTime:Date, status:StudentStatus){
https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases;
https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases;
https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases;
https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases;
https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases;
}getRegister(){
return https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases;
}setRegister(newRegister:string){
return https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases;
}getStatus(){
return https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases;
}
setStatus(newStatus: StudentStatus):void{
if(!["aguardando", "atendido", "saindo"].includes(newStatus)){
throw new Error(`Status Inválido: ${newStatus}`);
}
https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases = newStatus;
}}
```
---- ### Definição do Tipo `StudentStatus`.
- **Explicação**:O tipo `StudentStatus` é um tipo de união (`union type`) que define os possíveis estados de um estudante durante o atendimento. Ele pode assumir um dos seguintes valores:
- "`aguardando`": O estudante está aguardando para ser atendido.
- "`atendido`": O estudante foi atendido.
- "``saindo``": O estudante está saindo após o atendimento.- **Utilizaçaõ**:
- Esse tipo é utilizado para garantir que o status do estudante seja sempre um dos valores válidos, evitando erros de atribuição.
### Definição da Classe Student.
- A classe ``Student`` representa um estudante e contém informações sobre seu registro, horários e status.### Propriedades da Classe `Student`:
```typescript
export class Student {
private register: string;
public readonly comingTime: Date;
public readonly serviceTime: Date;
public readonly servedTime: Date;
public status: StudentStatus;
}
```
- **Propriedades**:
- ``register`` (privado): Armazena o número de registro do estudante ou matricula. É uma propriedade privada, o que significa que só pode ser acessada ou modificada dentro da propria classe.- `comingTime` (público e somente leitura): Armazena o horário em que o estudante chegou para o atendimento. É `readonly`, ou seja, não pode ser alterado após a criação do objeto.
- `serviceTime` (público e apenas leitura): Armazena o horário em que o estudante iniciou o atendimento. Também é `readonly`.
- `servedTime` (público e apenas leitura): Armazena o horário em que o estudante foi atendido. Também é `readonly`.
- `status` (público): Armazena o status atual do estudante, que deve ser um dos valores definidos pelo tipo `StudentStatus`.
---
### Construtor da Classe `Student`
```typescript
constructor(register: string, comingTime: Date, serviceTime: Date, servedTime: Date, status: StudentStatus) {
https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases = register;
https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases = comingTime;
https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases = serviceTime;
https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases = servedTime;
https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases = status;
}
```
- **Descrição**:
O construtor da classe `Student` é responsável por inicializar as propriedades do objeto. Ele recebe os seguintes parâmetros:
- `register`: O número de registro do estudante.- `comingTime`: O horário de chegada do estudante.
- `serviceTime`: O horário em que o estudante iniciou o atendimento.
- `servedTime`: O horário em que o estudante foi.
- `status`: O status inicial do estudante.
- **Utilização**:Ao criar uma instância da classe `Student`, é necessário fornecer todos os parâmetros para inicializar o objeto corretamente.
### Métodos da Classe `Student`:
- Método `getRegister`:
```typescript
getRegister() {
return https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases;
}
```
- **Descrição**:Retorna o número de registro do estudante.
- **Utilização**:
Permite acessar o valor da propriedade privada `register` de fora da classe.
---- Método `setRegister`:
```typescript
setRegister(newRegister: string) {
return https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases = newRegister;
}
```
- **Descrição**:Atualiza o número de registro do estudante.
- **Utilização**:
Permite modificar o valor da propriedade privada `register` de fora da classe.
---- Método `getStatus`:
```typescript
getStatus() {
return https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases;
}
```
- **Descrição**:Retorna o status atual do estudante.
- **Utilização**:
Permite acessar o valor da propriedade `status` de fora da classe.
---
- Método `setStatus`;
```Typescript
setStatus(newStatus: StudentStatus): void {
if (!["aguardando", "atendido", "saindo"].includes(newStatus)) {
throw new Error(`Status Inválido: ${newStatus}`);
}
https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases = newStatus;
}
```
- **Descrição**:Atualiza o status do estudante. Antes de atribuir o novo valor, o método verifica se o status fornecido é válido (ou seja, se é um dos valores permitidos pelo tipo `StudentStatus`). Caso não seja, lança um erro.
- **Utilização**:
Permite modificar o valor da propriedade `status` de fora da classe, garantindo que apenas valores válidos sejam atribuídos.
---### Classe `ExternalQueue`.
- A principio, a classe `ExternalQueue` representa uma fila externa que gerencia estudantes seguindo o princípio **FIFO (First-In, First-Out)** que significa "primeiro a entrar, primeiro a sair".```typescript
import { error } from "console";
import { SimulationRepositoryMock } from "@/domain/data-management/simulation-repository";
import { throwDeprecation } from "process";
import { add } fro m "date-fns";
import { Student } from "./student";export class ExternalQueue {
protected studentQuantity: Student[];constructor(studentQuantity?: Student[]) {
https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases = studentQuantity ?? [];protected addStudent(student: Student):void {
https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases(student);
https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases("Novo aluno chegou a fila!");
}protected removeStudent(): Student {
if (https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases === 0) {
throw new Error("Não há alunos na fila");
}
const studentIndex = https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases();
https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases("Aluno saiu da fila externa.");
return studentIndex;
}
}
```
### Imports da Classe `externalQueue`.```typescript
import { error } from "console";
```
- **Descrição**:Importa a função error do módulo console. Essa função pode ser usada para exibir mensagens de erro no console.
---
```typescript
import { SimulationRepositoryMock } from "@/domain/data-management/simulation-repository";
```
- **Descrição**:Importa a classe `SimulationRepositoryMock` de um caminho específico. Essa classe é usada para simular operações de repositório relacionadas a simulações.
---```typescript
import { throwDeprecation } from "process";```
- **Descrição**:Importa a função `throwDeprecation` do módulo `process`. Essa função pode ser usada para lançar avisos de depreciação.
---```typescript
import { add } from "date-fns";
```
- **Descrição**:
Importa a função `add` do módulo `date-fns`. Essa função é usada para manipulação de datas, como adicionar dias, meses, anos, etc.
---```typescript
import { Student } from "./student";
```
- **Descrição**:Importa a classe `Student` de um módulo chamado `student`. A classe `Student` representa um estudante que pode ser adicionado à fila externa.
---## Detalhes da Classe
- Definição da Classe `ExternalQueue`.
```typescript
export class ExternalQueue {
```
- **Descrição**:Define a classe ExternalQueue e a torna disponível para outros módulos através da palavra-chave export.
---### Propriedades
```typescript
protected studentQuantity: Student[];
```
- Declara um atributo protegido chamado `studentQuantity`, que é um array de objetos do tipo `Student`. Este array armazena os estudantes que estão atualmente na fila externa.## Construtor da Classe `externalQueue`
```typescript
constructor(studentQuantity?: Student[]) {
https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases = studentQuantity ?? [];
}
```
---```typescript
constructor(studentQuantity?: Student[]) {
```
- **Descrição**:
Define o construtor da classe `ExternalQueue`, que recebe um parâmetro opcional `studentQuantity`, que é um array de objetos do tipo `Student`.
---```typescript
https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases = studentQuantity ?? [];```
- **Descrição**:
Inicializa o atributo `studentQuantity` com o valor passado como argumento ao construtor. Se nenhum valor for passado, o array é inicializado como vazio (`[]`). O operador `??` (nullish coalescing) assegura que o valor padrão seja usado caso `studentQuantity` seja `null` ou `undefined`.
---## Métodos da Classe `externalQueue`.
- ` protected addStudent(student: Student): void {`
```typescript
protected addStudent(student: Student):void {
https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases(student);
https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases("Novo aluno chegou a fila!");
}
```
---
```typescript
protected addStudent(student: Student): void {```
- **Descrição**:Define um método protegido chamado `addStudent`, que recebe um parâmetro do tipo `Student` e não retorna nenhum valor (`void`). Este método adiciona um estudante à fila externa.
---```typescript
https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases(student);
```
- **Descrição**:Adiciona o estudante ao array `studentQuantity` usando o método `push`.
---
- `protected removeStudent()`
```typescript
protected removeStudent(): Student {
if (https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases === 0) {
throw new Error("Não há alunos na fila");
}const studentIndex = https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases();
https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases("Aluno saiu da fila externa.");
return studentIndex;
}
}
```
---```typescript
protected removeStudent(): Student {
```
- **Descrição**:Define um método protegido chamado `removeStudent`, que não recebe parâmetros e retorna um objeto do tipo `Student`. Este método remove um estudante da fila externa.
---```typescript
if (https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases === 0) {
```
- **Descrição**:
Verifica se o array `studentQuantity` está vazio.
---```typescript
throw new Error("Não há alunos na fila");
```
- **Descrição**:Lança um erro com a mensagem "Não há alunos na fila" se o array estiver vazio.
---```typescript
const studentIndex = https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases();
```
- **Descrição**:Remove o primeiro estudante do array `studentQuantity` usando o método `shift`, que segue o conceito de **FIFO** (First In, First Out).
---```typescript
return studentIndex;
```
- **Descrição**:Retorna o estudante removido da fila.
---# Classe `InternalQueue`.
- A classe InternalQueue representa uma fila interna de estudantes, que herda propriedades e métodos de uma fila externa (ExternalQueue). Ela adiciona uma capacidade máxima à fila e implementa métodos para adicionar e remover estudantes. Abaixo, detalha-se cada parte do código.```typescript
import { ExternalQueue } from "./externalQueue";
import { Student } from "./student";export class InternalQueue extends ExternalQueue {
readonly maxCapacity: number;constructor(maxCapacity: number, studentQuantity?: Student[]) {
super(studentQuantity);
https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases = maxCapacity;
}addStudent(student: Student): void {
if(https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases >= https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases){
throw new Error ("Fila interna cheia: espere esvaziar");
}https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases(student);
https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases("Aluno entrou na Fila Interna");
}removeStudent(): Student {
const toRemoveStudent = https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases();
https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases("Fila interna");
return toRemoveStudent;
}
}
```### Importações da Classe `InternalQueue`.
```typescript
import { ExternalQueue } from "./externalQueue";
import { Student } from "./student";
```- **Descrição**:
- `ExternalQueue`: Classe que representa uma fila externa, da qual `InternalQueue` herda propriedades e métodos.- `Student`: Classe que representa um estudante, utilizada para manipular os elementos da fila.
### Definição da Classe `InternalQueue`:
- A classe `InternalQueue` é exportada para que possa ser utilizada em outros módulos. Ela estende a classe `ExternalQueue`, herdando suas propriedades e métodos.
---### Propriedades da classe `InternalQueue`.
```typescript
readonly maxCapacity: number;
```
- **Descrição**:A propriedade `maxCapacity` é um número que define a capacidade máxima da fila interna. Ela é marcada como `readonly`, o que significa que seu valor não pode ser alterado após a criação do objeto.
---
### Construtor da classe `InternalQueue`.
```typescript
constructor(maxCapacity: number, studentQuantity?: Student[]) {
super(studentQuantity);
https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases = maxCapacity;
}
```
- **Descrição**:O construtor da classe `InternalQueue` é responsável por inicializar as propriedades do objeto. Ele recebe dois parâmetros:
- `maxCapacity`: A capacidade máxima da fila interna.
- `studentQuantity`: Uma lista de estudantes que pode ser passada para inicializar a fila.
- **Funcionamento**:
- `super(studentQuantity)`: Chama o construtor da classe pai (ExternalQueue), passando a lista de estudantes (studentQuantity) para inicializar a fila.
- `https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases = maxCapacity`: Atribui o valor do parâmetro `maxCapacity` à propriedade `maxCapacity` da classe.
---
### Métodos da Classe `InternalQueue`.
- Método `addStudent(student: Student): void{````typescript
addStudent(student: Student): void {
if (https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases >= https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases) {
throw new Error("Fila interna cheia: espere esvaziar");
}https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases(student);
https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases("Aluno entrou na Fila Interna");
}
```
- **Descrição**:O método `addStudent` adiciona um estudante à fila interna, desde que a capacidade máxima não seja excedida. Caso a fila esteja cheia, ele lança um erro.
- **Funcionamento**:
- `if (https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases >= https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases)`: Verifica se o número de estudantes na fila (`https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases`) é maior ou igual à capacidade máxima (maxCapacity).
- `throw new Error("Fila interna cheia: espere esvaziar")`: Lança um erro caso a fila esteja cheia.
- `https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases(student)`: Adiciona o estudante (`student`) ao final da fila (`studentQuantity`).
- `https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases("Aluno entrou na Fila Interna")`: Exibe uma mensagem no console informando que o estudante entrou na fila interna.
- Método `removeStudent():Student`
```typescript
removeStudent(): Student {
const toRemoveStudent = https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases();
https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases("Fila interna");
return toRemoveStudent;
}
```
- **Descrição**:- O método `removeStudent` remove um estudante da fila interna. Ele utiliza o método `removeStudent` da classe pai (`ExternalQueue`) para realizar a remoção.
- **Funcionamento**:
- `const toRemoveStudent = https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases()`: Chama o método `removeStudent` da classe pai (`ExternalQueue`) para remover e retornar o estudante da fila.- `https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases("Fila interna")`: Exibe uma mensagem no console indicando que a operação ocorreu na fila interna.
- `return toRemoveStudent:` Retorna o estudante removido.
---
# Classe `Hall`.
- A classe `Hall` representa um espaço fisico (como um salão, auditório ou sala) com capacidade limitada para acomodar os estudantes.
- ### A classe Hall oferece funcionalidades para:
- Controlar a capacidade máxima de ocupação.
- Gerenciar estudantes dentro do espaço.
- Remover automaticamente estudantes após um tempo configurável.
- Monitorar o estado atual de ocupação.
```typescript
import { Student } from "./student";export class Hall{
private readonly capacityByStudent: Student[] = [];
private occupiedCapacity: number = 0;
private occupationTime: number;
private readonly maxHallCapacity: number;constructor(maxHallCapacity: number, occupationTime: number){
https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases = maxHallCapacity;
https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases;
}getMaxHallCapacity(): number {
return https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases;
}getOccupiedCapacity(): number {
return https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases;
}getCapacityByStudents(): ReadonlyArray {
return https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases;
}getOccupationTime():number{
return https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases;
}
setOccupationTime(timing:number):void{
if(timing <= 0) throw new Error("O tempo de ocupação deve ser maior que zero");
https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases = timing;
}addStudent(student:Student): boolean{
if(https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases < https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases){
https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases++;
https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases(student);
setTimeout(() => https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases(student), https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases);
return true;
}
return false;
}
removeStudent(student:Student): void{
const index = https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases(student);
if(index !== -1){
https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases(index, 1);
https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases;
}
}
}
```
### Importação da Classe `Student`.
```typescript
import { Student } from "./student";
```
- Importa a classe `Student` de um módulo (https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases), necessária para que os estudantes possam ser associados ao salão.### Declaração da Classe `Hall`.
```typescript
export class Hall {...}
```
- Define a classe `Hall` e a possibilita de ser utilizada em outros módulos através da palavra-chave`export`.
---
### Propriedades da Classe `Hall`.
```typescript
private readonly capacityByStudent: Student[] = [];
```
- Declara um atributo privado e somente leitura (`readonly`) chamado `capacityByStudent`, que é um array de objetos do tipo `Student`. Este array armazena os estudantes que estão atualmente no salão.
---```typescript
private occupiedCapacity: number = 0;
```
- Aqui é declarado um atributo privado chamado `occupiedCapacity`, que é um número inicializado com 0. Este atributo rastreia o número de estudantes atualmente no salão.
---
```typescript
private occupationTime: number;
```
- Atributo privado que marca o tempo em que o estudante permaneceu no salão.
---
```typescript
private readonly maxHallCapacity: number;
```
- Um atributo privado e somente leitura (`readonly`) chamado `maxHallCapacity`, que é um número que representa a capacidade maxima de estudantes que o salão pode suporta.
---
### Construtor da Classe `Hall`.
```typescript
constructor(maxHallCapacity: number, occupationTime: number){
https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases = maxHallCapacity;
https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases;
}
```
---
```typescript
constructor(maxHallCapacity: number, occupationTime: number) {```
- **Descrição**:È definido o construtor da classe `Hall`, que recebe dois parâmetros: `maxHallCapacity` (capacidade máxima da sala) e `occupationTime` (tempo de ocupação da sala).
---
```typescript
https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases = maxHallCapacity;
```
- **Descrição**:Inicializa o atributo maxHallCapacity com o valor passado como argumento ao construtor.
---
```typescript
https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases = occupationTime;
```- **Descrição**:
Inicializa o atributo occupationTime com o valor passado como argumento ao construtor.
---
### Métodos da Classe `Hall`.
- `getMaxHallCapacity()````typescript
getMaxHallCapacity(): number {
return https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases;
}
```
- **Descrição**:
Retorna a capacidade máxima da sala (maxHallCapacity).---
- `getOccupiedCapacity()`
```typescript
getOccupiedCapacity(): number {
return https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases;
}
```
- **Descrição**:Retorna o número de estudantes atualmente na sala (`occupiedCapacity`).
---
- `getCapacityByStudents()`
```typescript
getCapacityByStudents(): ReadonlyArray {
return https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases;
}
```
- **Descrição**:
Retorna uma cópia somente leitura (ReadonlyArray) do array capacityByStudent, que contém os estudantes atualmente na sala.
---
- `getOccupationTime()`
```typescript
getOccupationTime(): number {
return https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases;
}
```
- **Descrição**:Retorna o tempo de ocupação da sala (occupationTime).
---
- `setOccupationTime()`
```typescript
setOccupationTime(timing: number): void {
if (timing <= 0) throw new Error("O tempo de ocupação deve ser maior que zero");
https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases = timing;
}```
- **Descrição**:Define o tempo de ocupação da sala (occupationTime). Se o valor fornecido for menor ou igual a zero, lança um erro.
---
### Método `addStudent()`.
```typescript
addStudent(student:Student): boolean{
if(https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases < https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases){
https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases++;
https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases(student);
setTimeout(() => https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases(student), https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases);
return true;
}
return false;
}
```
---
```typescript
addStudent(student: Student): boolean {
```
- **Descrição**:Adiciona um estudante à sala, se houver capacidade disponível. Retorna `true` se o estudante foi adicionado com sucesso, caso contrário, retorna `false`.
---```typescript
if (https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases < https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases) {
```
- **Descrição**:Verifica se a capacidade atual da sala (`occupiedCapacity`) é menor que a capacidade máxima (`maxHallCapacity`).
---
```typescripthttps://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases++;
```
- **Descrição**:Incrementa o contador de capacidade ocupada (`occupiedCapacity`).
---
```typescript
https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases(student);
```
- **Descrição**:Adiciona o estudante ao array capacityByStudent.
---
```typescript
setTimeout(() => https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases(student), https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases);
```
- **Descrição**:Configura um temporizador para remover o estudante da sala após o tempo de ocupação (occupationTime) ter decorrido.
---
```typescript
return true;
```
- **Descrição**:Retorna true indicando que o estudante foi adicionado com sucesso.
---
```typescript}
return false;
}
```
- **Descrição**:Retorna false se a sala estiver cheia e o estudante não puder ser adicionado.
---
### Método `toRemoveStudent`.
```typescript
removeStudent(student:Student): void{
const index = https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases(student);
if(index !== -1){
https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases(index, 1);
https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases;
}
}
}
```
---
```typescript
removeStudent(student: Student): void {
```
- **Descrição**:Remove um estudante da sala.
---```typescript
const index = https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases(student);
```
- **Descrição**:Encontra o índice do estudante no array `capacityByStudent`.
---```typescript
if (index !== -1) {
```
- **Descrição**:Verifica se o estudante foi encontrado no array (índice diferente de -1).
---```typescript
https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases(index, 1);
```
- **Descrição**:Remove o estudante do array `capacityByStudent`.
---```typescript
https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases;
```- **Descrição**:
Decrementa o contador de capacidade ocupada (`occupiedCapacity`).
---
```typescript
}
}
```- **Descrição**:
Finaliza o bloco condicional e o método.
---
# Classe `Service`:
- A classe Service representa o atendimento de um funcionário, com foco no serviço de servir comida dentro do refeitório. Ela possui informações sobre o funcionário e simula o ato de servir comida. Logo abaixo, detalhamos cada parte do código.
```typescript
export class Service {
coWorkerRegister: string;
coWorkerName: string;
middleTimeService: number;constructor(coWorkerRegister: string, coWorkerName: string, middleTimeService: number) {
https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases = coWorkerRegister;
https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases = coWorkerName;
https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases = middleTimeService;
}serveFood(): void {
https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases(`Funcionário ${https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases} está servindo a comida.`);
}
}
```## Definição da Classe `Service:`
```typescript
export class Service {}
```
- **Descrição**:Utilizando `export` a classe `Service` pode ser exportada e utilizada em outros módulos.
### Propriedades da Classe `Service`.
```Typescript
coWorkerRegister: string;
coWorkerName: string;
middleTimeService: number;
```
- **Propriedades**:
- `coWorkerRegister: string;` : Armazena o identificador único do funcionário responsável pelo atendimento ao aluno.- `coWorkerName: string;`: Armazena o nome do funcionário responsavel pelo atendimento.
- `middleTimeService: number;`: Armazena o tempo médio, em minutos, que o funcionário leva para servir a comida.
### Construtor da Classe `Service`:
```typescript
constructor(coWorkerRegister: string, coWorkerName: string, middleTimeService: number) {
https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases = coWorkerRegister;
https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases = coWorkerName;
https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases = middleTimeService;
}
```
- **Descrição**:O construtor da classe Service é responsável por inicializar as propriedades do objeto. Ele recebe três parâmetros:
- `coWorkerRegister`: O identificador único do funcionário.- `coWorkerName`: O nome do funcionário.
- `middleTimeService`: O tempo médio, em minutos, que o funcionário leva para servir a comida.
- **Funcionamento**:
- `https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases = coWorkerRegister`: Atribui o valor do parâmetro `coWorkerRegister` à propriedade `coWorkerRegister` da classe.`- `https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases = coWorkerName`: Atribui o valor do parâmetro `coWorkerName` à propriedade `coWorkerName` da classe.
- `https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases = middleTimeService`: Atribui o valor do parâmetro `middleTimeService` à propriedade `middleTimeService` da classe.
## Métodos da Classe `Service`.
- Método `servedFood()`
```typescript
serveFood(): void {
https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases(`Funcionário ${https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases} está servindo a comida.`);
}
```
- **Descrição**:- O método `serveFood` simula o ato de servir comida por um funcionário. Ele exibe uma mensagem no console informando que o funcionário está servindo a comida.
- **Funcionamento**:
- `https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases(Funcionário ${https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases} está servindo a comida.)`: Exibe uma mensagem no console, utilizando o nome do funcionário armazenado na propriedade `coWorkerName`.---
# Classe `Turnstile`.- O código a seguir implementa uma classe chamada ``Turnstile``, que simula o funcionamento de uma catraca eletrônica. A catraca permite o registro de um aluno (``Student``) e controla o acesso com base no registro ou matrícula.
```Typescript
import { Student } from "./student";export class Turnstile {
accessable: boolean;
student: Student | null;constructor() {
https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases = false;
https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases = null;calculateRegisterTime(): number {
return https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases() * 5;
}typeRegister(student:Student): void {
https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases;
https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases(`Matrícula ${https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases()} registrada.`);
https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases = true;
}removeStudent(): void {
https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases(`Aluno ${https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases()} removido da catraca.`);
https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases = null;
https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases = false;
}
}
}
```
---### Importação da classe `Student`.
```typescript
import { Student } from "./student";
```
- A linha acima importa a classe ``Student`` de um arquivo chamado ``https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases``. Essa classe representa um aluno que contem métodos e propriedades relacionados ao aluno, como a matrícula.
---
### Definição da Classe ``Turnstile``.
```typescript
export class Turnstile {...}
```
- A palavra-chave ``export`` torna a classe `Turnstile` disponível para ser importada em outros módulos. E em seguida é declarada a classe ``class Turnstile``.
---
### Propriedades da Classe `Turnstile`.
```typescript
accessable: boolean;
student: Student | null;
```
- **Explicação**:
- `accessable: boolean`: È uma propriedade booleana que indica se a catraca está liberada (`true`) ou bloqueada (`false`).- `sudent:Student | null`: Propriedade que armazena uma instância da classe `Student` ou null. Ela guarda o aluno que está passando pela catraca. Quando não há aluno, o valor é `null`.
### Construtor da Classe `Turnstile`.```typescript
constructor() {
https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases = false;
https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases = null;
}
```
- **Explicação**:
O método ``constructor`` é chamado automaticamente quando uma nova instância da classe ``Turnstile`` é criada. Ele inicializa as propriedades da classe:- `https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases = false;` é definido como `false`, indicando que a catraca esta bloqueada.
- `https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases = null;` é definido como `null`, pois inicialmente não há aluno asociado á catraca.
## Métodos da Classe `Turnstile`.
- Método `calculateRegisterTime()`
```typescript
calculateRegisterTime(): number {
return https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases() * 5;
}
```
- **Explicação**:Este método simula o tempo que um aluno leva para digitar sua matrícula na catraca.
- `https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases()` gera um número aleatório entre 0 e 1.
- Multiplicando por 5, o tempo ira variar entre 0 e 5 segundos.
- E o valor é retornado como um número (`number`).
---- Método `typeRegister(student: Student):`
```typescript
typeRegister(student: Student): void {
https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases = student;
https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases = true;
}
```
- **Explicação**:Este método registra a matrícula de um aluno na catraca e libera a passagem.
- Esse metodo recebe um parâmetro `student` do tipo `Student`.
- Associa o aluno à propriedade `student` da classe `catraca`.
- Define `accessable` como `true`, liberando a passagem.- Método `removeStudent()`
```typescript
removeStudent(): void {
https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases = null;
https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases = false;
}
```
- **Explicação**:Este método remove o aluno da catraca após a passagem e bloqueia a catraca novamente.
- Define `student` como `null`, indicando que não há mais aluno associado à catraca.
- Define `accessable` como `false`, bloqueando a passagem.---
# Classe `SimulationRepositoryMock`
- A classe `SimulationRepositoryMock` é responsável por simular operações de persistência de dados de simulações utilizando o `localStorage` do navegador.
```typescript
import { SimulationRepositoryI } from "@/adapter/interfaces/simulation-repository-interface";
import { Simulation } from "./Entities/simulation";
import { SimulationParameters } from "./Entities/simulation-parameters";
import { SmileIcon } from "lucide-react";
import { resolve } from "path";export class SimulationRepositoryMock implements SimulationRepositoryI {
private localeStorageKey:string = "simulation";async save(simulation: Simulation): Promise {
if (!https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases) {
https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases = "mock-id" + https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases();
}let gettinSimulations: Simulation[] = https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases();
let listSimulationsFounded: boolean = false;for (let i = 0; i < https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases; i++) {
if (gettinSimulations[i].id === https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases) {
gettinSimulations[i] = simulation;
listSimulationsFounded = true;
break;
}
}if (!listSimulationsFounded) {
https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases(simulation);
https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases("Simulação salva com sucesso");
}https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases(gettinSimulations);
return https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases();}
async getById(id: string): Promise {
let gettingSimulations:Simulation[] = https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases();
let searchingSimulationById:number = https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases(Simulation => https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases == id)
let indexFound:number = searchingSimulationById;if(indexFound != -1){
return gettingSimulations[indexFound];
}else{
return null;
}
}async getAll(): Promise {
let gettinSimulations:Simulation[] = https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases();
return https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases(gettinSimulations);
}async delete(id: string): Promise {
let dataBaseSimulations:Simulation[] = https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases();
let thereIsSimulation:boolean = false;for(let i=0; i {
if (!https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases) {
https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases = "mock-id" + https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases();
}let gettinSimulations: Simulation[] = https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases();
let listSimulationsFounded: boolean = false;for (let i = 0; i < https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases; i++) {
if (gettinSimulations[i].id === https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases) {
gettinSimulations[i] = simulation;
listSimulationsFounded = true;
break;
}
}if (!listSimulationsFounded) {
https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases(simulation);
https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases("Simulação salva com sucesso");
}https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases(gettinSimulations);
return https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases();}
```
---
```typescript
async save(simulation: Simulation): Promise {
```
- Salva uma simulação no `localStorage`. Se a simulação não tiver um `id`, um `id` mock é gerado.
---```typescript
if (!https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases) {
https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases = "mock-id" + https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases();
}
```
- `https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases`: Se a simulação não tiver um `id`, um `id` mock é gerado usando o timestamp atual.
---```typescript
let gettinSimulations: Simulation[] = https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases();
let listSimulationsFounded: boolean = false;
```
- `gettinSimulations`: Recupera todas as simulações armazenadas no `localStorage`.- `listSimulationsFounded`: Flag para indicar se a simulação já existe na lista.
---
```typescript
for (let i = 0; i < https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases; i++) {
if (gettinSimulations[i].id === https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases) {
gettinSimulations[i] = simulation;
listSimulationsFounded = true;
break;
}
}
```
- **Loop `for`**: Itera sobre as simulações existentes para verificar se a simulação atual já existe.- `break`: Sai do loop após encontrar a simulação.
---```typescript
if (!listSimulationsFounded) {
https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases(simulation);
https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases("Simulação salva com sucesso");
}
```
- `if`: Se a simulação não foi encontrada na lista, ela é adicionada.---
```typescript
https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases(gettinSimulations);
return https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases();
```
- `savingLocaleStorage`: Salva a lista atualizada de simulações no localStorage.- `https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases()`: Retorna uma promessa resolvida.
---### Método `getById`
```typescript
async getById(id: string): Promise {
let gettingSimulations:Simulation[] = https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases();
let searchingSimulationById:number = https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases(Simulation => https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases == id)
let indexFound:number = searchingSimulationById;if(indexFound != -1){
return gettingSimulations[indexFound];
}else{
return null;
}
}
```
---```typescript
async getById(id: string): Promise {
```
- Recupera uma simulação pelo `id`.
---```typescript
let gettingSimulations: Simulation[] = https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases();
let searchingSimulationById: number = https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases(Simulation => https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases == id);
let indexFound: number = searchingSimulationById;
```
- `gettingSimulations`: Recupera todas as simulações armazenadas no `localStorage`.- `searchingSimulationById`: Encontra o índice da simulação com o `id` especificado.
- `indexFound`: Armazena o índice encontrado.
---```typescript
if (indexFound != -1) {
return gettingSimulations[indexFound];
} else {
return null;
}
```
- `if`: Se a simulação for encontrada, retorna a simulação. Caso contrário, retorna null.
---### Método `getAll`
```typescript
async getAll(): Promise {
let gettinSimulations:Simulation[] = https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases();
return https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases(gettinSimulations);
}
```
---
```typescript
async getAll(): Promise {
```
- Recupera todas as simulações armazenadas no `localStorage`.---
```typescript
let gettinSimulations: Simulation[] = https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases();
return https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases(gettinSimulations);
```
- `gettinSimulations`: Recupera todas as simulações armazenadas no `localStorage`.- `https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases`: Retorna uma promessa resolvida com a lista de simulações.
---### Método `delete`
```typescript
async delete(id: string): Promise {
let dataBaseSimulations:Simulation[] = https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases();
let thereIsSimulation:boolean = false;for(let i=0; i {
```
- Remove uma simulação pelo `id`.
---```typescript
let dataBaseSimulations: Simulation[] = https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases();
let thereIsSimulation: boolean = false;
```
- `dataBaseSimulations`: Recupera todas as simulações armazenadas no `localStorage`.- `thereIsSimulation`: Flag para indicar se a simulação foi encontrada.
---```typescript
for (let i = 0; i < https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases; i++) {
if (dataBaseSimulations[i].id == id) {
dataBaseSimulations[i].id = id;
thereIsSimulation = true;
https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases(i, 1);https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases(dataBaseSimulations);
https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases("Simulação excluída com sucesso");
break;
}
}
```
- **Loop `for`**: Itera sobre as simulações existentes para encontrar e remover a simulação com o id especificado.- `splice`: Remove a simulação da lista.
- `savingLocaleStorage`: Salva a lista atualizada de simulações no `localStorage`.
- `break`: Sai do loop após encontrar a simulação.
---```typescript
return https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases();
```
- `https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases()`: Retorna uma promessa resolvida.
---### Método `_getCallLog`
```typescript
_getCallLog(): string[] {
return [];
}
```
- `_getCallLog`: Método opcional para verificar se as funções foram chamadas. Retorna um array vazio.
---
### Métodos de auxilio```typescript
private savingLocaleStorage(simulation: Simulation[]) {
let savingData: string = https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases(simulation);
https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases(https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases, savingData);
}
```
- `savingLocaleStorage`: Converte a lista de simulações em uma string JSON e a salva no `localStorage`.
---
```typescript
private getAllFromLocaleStorage(): Simulation[] {
const listSimulations = https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases(https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases);
if (listSimulations != null) {
return https://github.com/carlosandresamp/Simulador_Fluxo_Refeitorio/releases(listSimulations);
} else {
return [];
}
}
```
- `getAllFromLocaleStorage`: Recupera a lista de simulações do `localStorage` e a converte de volta para um array de objetos `Simulation`. Se não houver dados, retorna um array vazio.