Completar la implementación en C# las clases indicadas a continuación, con sus responsabilidades y colaboraciones también indicadas a continuación. Cada clase debe ser agregada por un estudiante diferente y deben trabajar en ramas diferentes.
-
Uno de los estudiantes del equipo crea un repositorio privado a partir de este repositorio plantilla haciendo clic en el botón
Use this template
y luego en el comandoCreate new repository
. -
El estudiante que creó el repositorio agrega a los demás integrantes del equipo haciendo clic en
Settings
,Collaborators and Teams
,Add people
para cada uno de los miembros del equipo, usando sus nombres de usuario. -
Todos clonan el repositorio creado a sus equipos.
-
Todos crean una rama con el nombre que quieran, la única condición es que deben ser diferentes para cada miembro del equipo.
-
Distribuyan las siguientes clases entre los miembros del equipo. Cada miembro implementa una clase diferente.
-
El código no va a funcionar hasta que integren el trabajo en la rama
main
, por lo que deberán unir los cambios con frecuencia.
Important
Para compilar el código en Rider usen el comando Build Solution
del menú
Build
.
Aunque todavía no vamos a ver cómo hacer casos de prueba, este repositorio usa
casos de prueba para comprobar la implementación. Para ejecutar los casos de
prueba ejecuten el comando Run All Tests from Solution
en el menú Tests
de
Rider. Deberían ver una imagen como la siguiente si todo funcionó bien:
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 instanciadishes
en 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; retornanull
si 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 instanciaorder
en 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; retornatrue
si los tiene yfalse
en 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 instanciaassignedTables
en 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
.