对“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();
}
}
//--------------------------------------------------------------------
}
说明:将原文中无关紧要的部分去掉。您可以试着运行一下。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?