Completar la implementación en C# las clases indicadas a continuación, con sus responsabilidades y colaboraciones, también indicadas a continuación.
Note
Crea tu propio repositorio a partir de esta plantilla y clona ese repositorio en tu equipo.
Important
Para compilar el código en Visual Studio Code ejecuten el comando Run Build Task... del menú Terminal y elijan dotnet: build.
Tip
Aunque todavía no vamos a ver cómo escribir ni ejecutar casos de prueba, este repositorio usa casos de prueba para que puedan comprobar su solución.
Los casos de prueba están comentados para que la solución compile sin errores. Quita los comentarios que hay en DishTests.cs, MenuTests.cs, TableTests.cs y WaiterTests.cs.
Una vez que ya no haya errores de compilación, ejecuta los casos de
prueba usando el comando Testing del menú View para mostrar el explorador
de tests, y luego, haz como aparece a continuación:
A continuación la descripción de las clases, sus responsabilidades de hacer y de conocer, y sus colaboraciones.
Representa un platillo individual en el menú del restaurante.
| Dish | |
|---|---|
|
Conocer el nombre del platillo Conocer el precio del platillo Conoce si el platillo es vegetariano o no |
|
-
Responsabilidades de conocer:
- Name: Conocer el nombre del platillo.
- Price: Conocer el precio del platillo.
- IsVegetarian: Conocer si el platillo es vegetariano o no.
-
No tiene responsabilidades de hacer.
-
No tiene colaboradores.
Important
Debe ser posible crear una instancia de Dish e inicializar sus propiedades
en una sola operación.
Aquí está el código provisto de la clase Dish.
Representa el conjunto de platillos disponibles en el restaurante.
| Menu | |
|---|---|
|
Conocer la lista de platillos disponibles en el restaurante Agregar un platillo a la lista de platillos del menú Eliminar un platillo de la lista del menú Buscar y devolver un platillo específico del menú basado en su nombre |
Dish |
-
Responsabilidades de conocer:
dishes: Conocer la lista de platillos disponibles en el restaurante; esta responsabilidad está ya implementada con la variable de instanciadishesen el código provisto.
-
Responsabilidades de hacer
AddDish(Dish): Agregar un platillo a la lista de platillos del menú.RemoveDish(Dish): Eliminar un platillo de la lista del menú.Dish GetDishByName(string): Buscar y devolver un platillo específico del menú basado en su nombre; retornanullsi no encuentra en platillo.
-
Colaboradores
- Dish
Tip
Puedes acceder al i-ésimo elemento de la variable de instancia dishes con
dishes[i] y las estructuras de repetición condicional que consideres
apropiadas. También puedes recorrer los platillos en esa variable de instancia
con la estructura repetitiva condicional foreach.
Aquí está el código provisto de la clase Menu.
3. Clase Table
Representa una mesa en el restaurante.
| Table | |
|---|---|
|
Conocer el número identificador de la mesa Conocer si la mesa está ocupada o no Conocer la lista de platillos que han sido ordenados en la mesa Marcar la mesa como ocupada Liberar la mesa y vaciar la lista de pedidos Agregar un platillo a los que han sido ordenados en la mesa Determinar si la mesa tiene pedidos o no |
Dish |
-
Responsabilidades de conocer:
Number: Conocer el número identificador de la mesa.IsOccupied: Conocer si la mesa está ocupada o no.Order: Conocer la lista de platillos que han sido pedidos en la mesa; esta responsabilidad está ya implementada con la variable de instanciaorderen el código provisto.
-
Responsabilidades de hacer:
Occupy(): Marcar la mesa como ocupada.Free(): Liberar la mesa y vaciar la lista de pedidos.AddToOrder(Dish): Agregar un platillo a la lista de pedidos.bool HasOrders(): Determinar si la mesa tiene pedidos o no; retornatruesi los tiene yfalseen caso contrario.
-
Colaboradores:
- Dish
Tip
El método Clear() de la clase ArrayList vacía la lista.
Important
Debe ser posible crear una instancia de Table e inicializar sus propiedades
en una sola operación.
Aquí está el código provisto de la clase Table.
Representa un mozo en el restaurante, encargado de atender mesas.
| Waiter | |
|---|---|
|
Conocer el nombre del mozo Conocer las mesas asignadas al mozo Asignar una mesa al mozo Tomar un pedido para una mesa específica y agregar el platillo a la orden de esa mesa |
Dish Table |
-
Responsabilidades de conocer:
Name: Conocer el nombre del mozo.assignedTables: Conocer las mesas asignadas al mozo; esta responsabilidad está ya implementada con la variable de instanciaassignedTablesen el código provisto.
-
Responsabilidades de hacer:
AssignTable(Table): Asignar una mesa al mozo.TakeOrder(Table, Dish): Tomar un pedido para una mesa específica y agregar el platillo a la orden de esa mesa.
-
Colaboradores:
- Dish
- Table
Important
Debe ser posible crear una instancia de Waiter e inicializar sus propiedades
en una sola operación.
Aquí está el código provisto de la clase Waiter.
Es posible usar GitHub Copilot en este repositorio. Consulta cómo usar Copilot para aprender.
