> For the complete documentation index, see [llms.txt](https://educacion.gitbook.io/programacion/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://educacion.gitbook.io/programacion/exercicios-java/ud6-exercicios/colas-deque-e-arraydeque.md).

# Colas: Deque e ArrayDeque

1. Implementa o seguinte modelo de datos en base as especificacions.
   1. Un **Documento** é un tipo de obxecto que se pode imprimir e que ten un nome, un tamaño e unha extensión (que poderá adoitar unicamente os valores PDF, DOCX,PPT). Os documentos contan con un constructor por defecto no que se indican os tres atributos, con métodos getter e setter e con un método toString().
   2. Un **XestorImpresion** é un tipo de obxecto que recibe documentos e os manda de maneira ordenada e individual a impresora. O xestor de impresión ten o seguinte comportamento:&#x20;
      1. Implementa un método **enviarDocumento()**, que coloca o documento en último lugar da cola de impresión&#x20;
      2. Implementa un método **envioUrxente()**, que coloca o documento en primeiro lugar da cola de impresión&#x20;
      3. Implementa un método **imprimir()**, que envia a impresora os documentos da lista, o que implica que os saca da cola e mostra os seus datos por pantalla.
      4. Implementa un método **cancelarUltimo()**, elimina da cola de impresión o elemento enviado
      5. Implementa un método **toString()**, que permite ver o estado actual do xestor de impresion
   3. Unha clase **App** que fai o seguinte:
      1. Crea un documentos chamados: informe.docx, informeDireccion.pdf e Marketing.ppt
      2. Envia os tres documentos ao xestor e mostra o estado actual do mesmo
      3. Crea un novo documento ManualUsuario.pdf e envíao de maneira urxente ao xestor. Mostra o estado actual do xestor
      4. Chama ao cancelarUltimo e mostra o estado actual do xestor
      5. Chama ao método imprimir
2. Implementa o seguinte modelo de datos en base as especificacions:
   1. Un **Paciente** é unha persoa con unha doenza que vai a ter un nome, un número da seguridade social (NNSS) e pode ou non estar ingresado. Os pacientes contan con dous constructores: un que recibe todos os seus atributos, e outro que recibe nome e nnss establecendo ingreso a nulo. Conta tamén con métodos para devolver a súa prioridade de atención, se require ou non ingreso, e getters e setters e con un método toString().
   2. Un **PacienteLeve** é un paciente que ten unha doenza menor que non require ingreso. A súa prioridade vai a ser 3.
   3. Un **PacienteModerado** é un paciente que ten unha doenza que pode requerir ou non ingreso. A súa prioridade vai a ser 2.
   4. Un **PacienteGrave** é un paciente que ten unha doenza grave que require ingreso. A súa prioridade vai a ser 1.
   5. Un **Ingreso** é unha estadía nun centro hospitalario que consta de data de ingreso e de data de alta. Os **pacientes ingresable** son aqueles que poden ter que ser ingresados.
   6. Un **Hospital** é unha instalación, que ten un nome é unha dirección, na que se atende a pacientes de diferentes tipos. O hospital debe de xestionar os pacientes que se van a recibir en función da sua tipoloxía de acordo ao seguintes comportamentos:
      1. **chegarPaciente()** é un método que engade un paciente ao final da cola de recepción de pacientes
      2. **chegarPacienteUrxencias()** é un método que engade un paciente na cola de recepción co seguinte criterio:
         1. Se é un paciente grave, colocao ao principio para atención inmediata
         2. Se é un paciente e leve ou moderado, colocao ao final
      3. **atenderPaciente()** é un método que realiza o seguinte:
         1. Debe de eliminar o paciente da cola de pendentes de antender
         2. Mostra por pantalla os datos que o paciente esta sendo atendido
         3. O paciente é atendido, o que implica que será ingresado no hospital, derivado a outro hospital, ou ben vai a poder ir a súa casa
      4. **atender()** é un método que valora se o paciente debe de ser ingresado ou non. En caso afirmativo, verifica se o numero de ingresos e menor que 5. Si e menor que 5, engadeo a lista de ingresados, e en caso de ser maior ou igual a 5, mostra a mensaxe por pantalla de paciente derivado a outro hospital. E caso de non necesitar ingreso, engadeo a un listado de paciente xa atendidos. O método atender vaise a ir atendendo pacientes ata que non quede ningún na cola de atención
      5. **toString()** debe de mostrar o nome e a dirección do hospital, a cola de pacientes pendentes de atender, a lista de ingresados e a lista de atendidos.
   7. Unha clase App na que se realice o seguinte:
      1. Crea un hospital.
      2. Engade a Ana(leve), Luis(grave, ingreso) e a Marta(moderado) empregando chegarPaciente()
      3. Engade a Fernando(moderado, ingreso) e a María(grave) empregado chegarPacienteUrxencias()
      4. Mostra os datos do hospital
      5. Atende aos 5 pacientes&#x20;
      6. Engade a David(moderado) e Sara (Leve) empregado chegarPaciente()
      7. Mostra os datos do hospital


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://educacion.gitbook.io/programacion/exercicios-java/ud6-exercicios/colas-deque-e-arraydeque.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
