1. 程式人生 > >C# 第四章 上機練習模擬顧客點餐

C# 第四章 上機練習模擬顧客點餐

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Cook
{
    //顧客類
    public class Client
    {
        /// <summary>
        /// 點菜
        /// </summary>
        public void Order(Waitress waitress,Order order)
        {
            Console.WriteLine("顧客開始點菜:{0}!", order.mealList);
            waitress.GetOrder(order);
        }

        /// <summary>
        /// 用餐
        /// </summary>
        public void Eat() 
        {
            Console.WriteLine("客人用餐!");
        }

    }
}

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Cook
{
    /// <summary>
    /// 服務員類
    /// </summary>
    public class Waitress
    {
        private Order order;

        /// <summary>
        /// 記錄客人的點餐
        /// </summary>
        /// <param name="order"></param>
        public void GetOrder(Order order)
        {
            this.order = order;
        }

        /// <summary>
        /// 給廚師提交選單

        /// </summary>
        ///<param name="client">點菜顧客的物件</param>
        public void SendOrder(Chef chef)
        {
            Console.WriteLine("服務員將菜{0}傳給廚師", order.mealList);
            chef.GetOrder(order);
        }

        /// <summary>
        /// 傳菜
        /// </summary>
        public void TransCook()
        {
            Console.WriteLine("服務員將菜{0}送給客戶{1}!",order.mealList,order.id);
            order.customer.Eat();
        }
    }
}

namespace Cook
{
    //廚師類
    public class Chef
    {
        private Order order;
        /// <summary>
        /// 獲得選單
        /// </summary>
        public void GetOrder(Order order) 
        {
            this.order = order;
        }

         /// <summary>
         /// 廚師做菜
         /// </summary>
        public void Cook()
        {
            Console.WriteLine("廚師烹製:{0}",order.mealList);
            Console.WriteLine("製作完畢");
        }

        /// <summary>
        /// 提醒飯菜製作完畢
        /// </summary>
        /// <param name="waitress"></param>
        public void SendAlert(Waitress waitress)
        {
            Console.WriteLine("廚師提示服務員取菜!");
            waitress.GetOrder(order);
        }
    }
}

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Cook
{
    //選單類
    public class Order
    {
        public Client customer;  //顧客
        public int id;          //餐桌號
        public string mealList; //點的選單
    }
}

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
/***
 * 
 * 顧客(Client),服務員(Waitress),廚師 物件之間協作以完成點菜過程。

 * 假設一個顧客的服務員負責將顧客點的菜傳給廚師,並把做好的菜傳給這個顧客。

 * **/
namespace Cook
{
    class Program
    {
        static void Main(string[] args)
        {
            //初始化客戶、服務員、廚師

            Client wang = new Client();
            
            Waitress  waitress = new Waitress();
            Waitress zhang = new Waitress();
            Chef  chef = new Chef();

            //初始化點選單
            Order order = new Order();
            //設定訂了該選單的顧客
            order.customer = wang;
            order.id = 100;
            order.mealList = "水煮魚";

            //顧客wang選中waitress服務員給自己服務
            wang.Order(waitress,order);

            //服務員將選單資訊告知廚師chef
            waitress.SendOrder(chef);

            //廚師根據選單做菜
            chef.Cook();
            chef.SendAlert(waitress);
            waitress.TransCook();
           
            
            Console.Read();

        }
    }
}