对“OOP一点小题,请前辈赐教”的求助,试着做一下
以下是今天在博客见到的一篇文章。摘其部分试着做一下,如果有误,请指出不要笑话!
-----------------------------------------------------------------------------
    4. 绘制一个UML图,其中包含下述类和接口:
抽象类HotDrink,它有方法Drink()、AddMilk()和AddSugar(),以及属性Milk和Sugar。
接口ICup,它有方法Refill()和Wash(),以及属性Color和Volume。
派生于HotDrink的类CupOfCoffee,支持ICup接口,还有一个属性BeanType。
派生于HotDrink的类CupOfTea支持ICup接口,还有一个属性LeafType。
     5. 为一个函数编写一些代码,接受上述示例的两个杯子对象中的一个,作为一个参数。该函数应可以为它传送的任何胚子对象调用AddMilk()、Drink()和Wash()方法。
----------------------------------------------------------------------------
using System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApplication1
{
    //--------------------------------------------------------------------
    public interface ICup                            // 定义接口
    {
        void Wash();                                 // 空方法
    }
    //--------------------------------------------------------------------
    public abstract class HotDrink              // 抽象类
    {
        public abstract void Drink();            // 声明抽象方法
        public abstract void AddMilk();         // 声明抽象方法
    }
    //--------------------------------------------------------------------
    public class CupOfCoffee : HotDrink, ICup   // 继承于抽象类与接口
    {
        public string dd;                            // 声明字段
        public string aa;
        public string ww;
        public CupOfCoffee( string d, string a, string w )  // 构造函数
        {
            dd = d;                                      // 初始字段
            aa = a;
            ww = w;
        }
        public override void Drink()            // 重写方法
        {
            Console.WriteLine( "想喝什么? {0}", dd );
            Console.WriteLine();
        }
        public override void AddMilk()          // 重写方法
        {
            Console.WriteLine( "想加奶吗? {0}", aa );
            Console.WriteLine();
        }
        public void Wash()                      // 实现接口中的方法
        {
            Console.WriteLine( "要洗手吗? {0}", ww );
            Console.WriteLine();
        }
    }
    //--------------------------------------------------------------------
    public class CupOfTea : HotDrink, ICup      // 继承于抽象类与接口
    {
        public string dd;                       // 声明字段
        public string aa;
        public string ww;
        public CupOfTea( string d, string a, string w ) // 构造函数
        {
            dd = d;                             // 初始字段
            aa = a;
            ww = w;
        }
        public override void Drink()            // 重写方法
        {
            Console.WriteLine( "想喝什么? {0}", dd );
            Console.WriteLine();
        }
        public override void AddMilk()          // 重写方法
        {
            Console.WriteLine( "想加奶吗? {0}", aa );
            Console.WriteLine();
        }
        public void Wash()                      // 实现接口中的方法
        {
            Console.WriteLine( "要洗手吗? {0}", ww );
            Console.Read();
        }
    }
    //--------------------------------------------------------------------
    class Program
    {
        static void Main(string[] args)
        {
            CupOfCoffee aa = new CupOfCoffee( "咖啡", "可以", "谢谢!" );
            aa.Drink();
            aa.AddMilk();
            aa.Wash();
CupOfTea bb = new CupOfTea( "绿茶", "少来", "狗屁!" );
            bb.Drink();
            bb.AddMilk();
            bb.Wash();
        }
    }
    //--------------------------------------------------------------------
}
说明:将原文中无关紧要的部分去掉。您可以试着运行一下。
 
                    
                
 
 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号