> 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/list-e-arraylist.md).

# List e ArrayList

1. Implementa una clase **XestorTarefas**, que vai a xestionar unha lista de tarefas. Unha **Tarefa** ten tipo String.
   1. Cando se crea o XestorTarefas, non contén ningunha tarefa asignada.
   2. Implementa un método engadir, para engadir tarefas en última posición.&#x20;
   3. Sobrecarga o método engadir, para que reciba unha tarefa e a posición na que se debe de insertar
   4. Sobrecarga novamente o método engadir, para poder engadir outra lista de tarefas.
   5. Implementa un método recuperar, que reciba un enteiro e que devolva a tarefa contida na posición
   6. Implementa un método contén, que devolva un booleano se a tarefa está contida no xestor
   7. Implementa un método índice, que reciba unha tarefa e que devolva a posición que ocupa na lista
   8. Implementa un método tamano que devolva un enteiro co tamaño da lista
   9. Implementa un método eliminar, que devolva a tarefa da posición i, eliminandoa da lista
   10. Implementa un método eliminar que reciba unha tarefa, e que devolve certo se esta no xestor
   11. Implementa un método toString() que mostre os elementos do XestorTarefas
   12. Crea unha **App** na que fagas o seguinte:
       1. Crea un XestorDeTarefas
       2. Emprega o método engadir para as seguintes tarefas en última posición: "Traballo de Sostenibilidade", "Estudiar Programación" e "Actualizar a versión de Java"
       3. Engade na posición 0 a tarefa "Pagar premiun ChatGPT", e na posición 2 "Facer unha copia de seguridade da BD"
       4. Mostra por pantalla os datos do xestor
       5. Crea unha nova lista de tarefas e engade as tarefas "Ir ao super" e "Ir a peixería"
       6. Engade a nova lista de tarefas ao xestor e mostra por pantalla os seus datos
       7. Recupera sen eliminala a tarefa da posición 3
       8. Recupera eliminandoa a tarefa da posición 3 e mostra por pantalla os datos do xestor
       9. Recupera a posición da tarefa "Estudiar Programación"
       10. Recupera o número de elementos do xestor
2. Implementa o seguinte modelo de datos para unha tenda de xogos:
   1. Un **Xogo** é un elemento que permite realizar actividades de ocio. Consta de título, prezo e stock, que indica a cantidade de unidades dispoñibles na tenda. Un xogo debe de ter:
      1. Un constructor que reciba un título e un prezo, e estableza a 0 o número de unidades
      2. Conta con getters e setters para os seus atributos
      3. Implementa un método xogar(), que devolve vacío que vai a ser implementado de forma diferente por cada unha dos xogos concretos que se van a crear.
      4. Redefine o método toString()
      5. Redefine o método equals para que dous xogos son iguais se o seu nome é o mesmo
   2. Un **Videoxogo** é un tipo de xogo que se utiliza en dispositivos dixitais. Consta de un atributo plataforma, que pode tomar os valores de PC, PS5 e XBOX. Un videoxogo debe de ter:
      1. Un constructor que reciba título, prezo e plataforma
      2. Conta con getters e setters para os seus atributos
      3. Un método xogar() que mostra por pantalla "Xogando a \[TITULO] na \[PLATAFORMA]."
      4. Redefine o método toString()&#x20;
      5. Redefine o método equals() para que dous videoxogos sexan o mesmo se titulo e plataforma son o mesmo
   3. Un **XogoDeMesa** é un tipo de xogo que se xoga en taboleiro. Consta de un numero máximo de xogadores, consta de:
      1. Un constructor que reciba título, prezo e numero máximo de xogadores
      2. Conta con getters e setters para os seus atributos
      3. Un método xogar() que mostra por pantalla "Preparanodo o taboleiro para unha partida de  \[TITULO] ata \[NUMXOGADORES]."
      4. Redefine o método toString()&#x20;
      5. Redefine o método equals() para que dous xogos de mesa sexan o mesmo se o titulo e o numero de xogadores son o mesmo.
   4. Unha **Tenda** e un espacio físico que conta con un nome e con un listado de xogos.&#x20;
      1. Conta con un constructor que recibe únicamente un nome como parámetro
      2. Conta con getters e setters para os seus atributos
      3. Implementa un método indiceXogo(String nome), que recupera a posición do xogo no array.
      4. Implementa un método recuperarXogo(int pos), que recupera o xogo de unha posicion
      5. Implementa un método engadirXogo, co seguinte comportamento:
         1. Se o xogo non existe, engade o xogo na posición final
         2. Se o xogo xa existe, actualiza o número de unidades do xogo a actual  + as unidades indicadas no obxecto xogo a engadir
      6. Implementa un método eliminarXogo, que reciba un Xogo é o elimine se existe&#x20;
      7. Implementa un método toString() para a clase tenda
   5. Implementa unha clase **App** na que fagas o seguinte:&#x20;

      1. Instancia dous videoxogos e dous xogos de mesa, establece un stock inicial para cada un de eles
      2. Crea unha Tenda e engadexe os xogos creado no punto anterior
      3. Mostra por pantalla a tenda
      4. Crea un xogo co mesmo nome e atributos a un dos creados no punto 1. Engade o xogo a lista
      5. Mostra por pantalla a tenda
      6. Recupera a posicion en posteriormente o elemento do primeiro xogo de mesa que creaches.
      7. Elimina o xogo de mesa do punto anterior da tenda
      8. Mostra por pantalla a tenda

      ¿O comportamento da tenda é o que vimos de unha lista?&#x20;


---

# 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/list-e-arraylist.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.
