`
yydy1983
  • 浏览: 47718 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
社区版块
存档分类
最新评论

程序设计: 猫大叫一声,所有的老鼠都开始逃跑,主人被惊醒。(C#语言)

阅读更多
 

程序设计: 猫大叫一声,所有的老鼠都开始逃跑,主人被惊醒。(C#语言)
要求:  
1.要有联动性,老鼠和主人的行为是被动的。
2.考虑可扩展性,猫的叫声可能引起其他联动效应。


 要点:1. 联动效果,运行代码只要执行Cat.Cryed()方法。2. 对老鼠和主人进行抽象
评分标准: <1>.构造出Cat、Mouse、Master三个类,并能使程序运行(2分)
            <2>从Mouse和Master中提取抽象(5分)
            <3>联动效应,只要执行Cat.Cryed()就可以使老鼠逃跑,主人惊醒。(3分)


    public interface Observer
    {
        void Response();    //观察者的响应,如是老鼠见到猫的反映
    }
    public interface Subject
    {
        void AimAt(Observer obs);  //针对哪些观察者,这里指猫的要扑捉的对象---老鼠
    }
    public class Mouse : Observer
    {
        private string name;
        public Mouse(string name, Subject subj)
        {           
            this.name = name;
            subj.AimAt(this);
        }
        
        public void Response()
        {
            Console.WriteLine(name + " attempt to escape!");
        }
    }
    public class Master : Observer
    {   
        public Master(Subject subj)
        {           
            subj.AimAt(this);
        }
        
        public void Response()
        {
            Console.WriteLine("Host waken!");
        }  
    }
 
    public class Cat : Subject
    {
        private ArrayList observers;
        public Cat()
        {   
            this.observers = new ArrayList();
        }
        public void AimAt(Observer obs)
        {
            this.observers.Add(obs);
        }
        public void Cry()
        {
            Console.WriteLine("Cat cryed!");
            foreach (Observer obs in this.observers)
            {
                obs.Response();
            }
        }
    }
    class MainClass
    {       
        static void Main(string[] args)
        {
            Cat cat = new Cat();
            Mouse mouse1 = new Mouse("mouse1", cat);
            Mouse mouse2 = new Mouse("mouse2", cat);
            Master master = new Master(cat);
            cat.Cry();
        }
    }


//---------------------------------------------------------------------------------------------

设计方法二: 使用event -- delegate设计..
    public delegate void SubEventHandler();
    public abstract class Subject
    {
        public event SubEventHandler SubEvent;
        protected void FireAway()
        {
            if (this.SubEvent != null)
                this.SubEvent();
        }   
    }
    public class Cat : Subject
    {  
        public void Cry()
        {
            Console.WriteLine("cat cryed.");
            this.FireAway();
        }
    }
    public abstract class Observer
    {
        public Observer(Subject sub)
        {
            sub.SubEvent += new SubEventHandler(Response);
        }
        public abstract void Response();    
    }
    public class Mouse : Observer
    {
        private string name;
        public Mouse(string name, Subject sub) : base(sub)
        {   
            this.name = name;
        }
        public override void Response()
        {
            Console.WriteLine(name + " attempt to escape!");
        }
    }
    public class Master : Observer
    {
        public Master(Subject sub) : base(sub){}
        public override void Response()
        {
            Console.WriteLine("host waken");
        }
    }
    class Class1
    {
        static void Main(string[] args)
        {
            Cat cat = new Cat();
            Mouse mouse1 = new Mouse("mouse1", cat);
            Mouse mouse2 = new Mouse("mouse2", cat);
            Master master = new Master(cat);
            cat.Cry();
        }

    }

分享到:
评论

相关推荐

    《C#与.NET 4高级程序设计:第5版》源码

    此为《C#与.NET 4高级程序设计:第5版》中文版一书的源码。 Amazon超级畅销书,权威新版王者归来 全面涵盖C# 2010,用IL深入揭示语言特性 多位微软MVP联手翻译,名著佳译相得益彰 本书是C# 领域久负盛名的经典著作...

    老鼠走迷宫源程序(C#实现有图形界面还可加载地图)

    该压缩包包含一个基于C#实现的老鼠走迷宫程序,具有图形用户界面,并且支持加载自定义地图。这个项目可以被看作是C#编程、算法和数据结构的实践应用,尤其对于初学者来说,这是一个很好的学习资源。 首先,我们要...

    Visual C# 2010程序设计教程(教程PPT+源代码)

    Visual C# 2010程序设计教程》详细介绍了Visual C# 2010程序设计的基础知识、基本方法和应用技巧,共分14章,主要内容包括.NET平台与Visual Studio 2010开发环境、C#语言基础及面向对象程序设计、C#程序设计、C# Web...

    C# WinForm 程序的界面多语言切换

    C# WinForm 程序的界面多语言切换 C# WinForm 程序的界面多语言切换是一种常见的需求,特别是在全球化的今天。在本文中,我们将介绍一种只需对现有代码做较小改动的方法来实现 WinForm 程序的界面多语言切换。 ...

    《C#程序设计教程第2版》配套源码

    此为《C# 程序设计教程 第2版》一书的配套源码 作者:郑阿奇 梁敬东 主编 朱毅华 时跃华 赵青松 编著 出版日期:2011年08月04日 C#程序设计教程(第2版)以Microsoft. Visual Studio.NET 2008/2010作为平台,在继承...

    C#程序设计及应用教程(第3版)-全部习题答案

    《C#程序设计及应用教程(第3版)》是一本深入浅出的C#学习教材,由马骏主编,其特色在于结合丰富的实例和课后习题来帮助读者掌握C#编程的基础与进阶技巧。这个压缩包包含了该书各章节的习题解答,覆盖了从基础到...

    C#程序设计课件(李春葆)

    《C#程序设计课件(李春葆)》是...总之,《C#程序设计课件(李春葆)》是一份宝贵的教育资源,它系统地介绍了C#编程语言的关键概念和技术,对于任何希望在软件开发领域取得进步的人来说,都是一个不可多得的学习资源。

    马骏-第3版-C#程序设计教程-全部上机实验源代码

    《马骏-第3版-C#程序设计教程》是一本深入浅出的C#学习教材,专注于提升读者的编程能力和实践技巧。此压缩包包含了该书的所有上机实验源代码,是学生考试复习和平时作业的重要参考资料。通过这些源代码,我们可以...

    一道asp.net c#面试题

    题目要求通过C#实现一个模拟场景:当猫(Cat)大叫(Cry)时,老鼠(Mouse)会逃跑,主人(Master)会被惊醒。同时,要考虑代码的联动性和可扩展性,意味着猫的叫声可能会触发更多的联动效应。 首先,我们定义了三...

    金旭亮《C#面向对象程序设计》教案_1

    金旭亮《C#面向对象程序设计》教案之1:CSharp程序设计语言与dotNET面向对象程序设计概述。 后继教案将陆续发布,请关注作者的博客更新信息:http://blog.csdn.net/bitfan

    C#程序设计案例教程

    《C#程序设计案例教程》是一本专注于C#编程实践的教材,旨在通过丰富的实例帮助学习者掌握C#语言的核心概念和技术。C#是微软公司推出的一种面向对象的编程语言,广泛应用于Windows桌面应用、游戏开发、Web服务以及...

    C# 2010 与.NET 4高级程序设计(第5版)

    书中介绍了C# 的各种语言构造、.NET 2.0 的类、核心API 、公共中间语言(CIL)、动态程序集和ASP.NET 扩展等内容;同时也介绍了.NET 3.0 和.NET 4 中新的编程API,包括WPF 、WCF 和WF 的功能;另外,还介绍了最新的...

    C#入门:基于C#的Windows窗口应用程序教程与实例

    本教程“C#入门:基于C#的Windows窗口应用程序教程与实例”是为那些希望踏入编程世界的初学者设计的,它将引导你从零开始学习如何使用C#和Visual Studio开发环境构建功能丰富的Windows应用程序。 首先,让我们深入...

    数据结构与算法:C#语言描述(中,英文 完全版)

    此资源吐血推荐 面向C#语言 介绍程序设计数据结构和算法!共分17章!数据结构与算法的学习对于进行软件开发的专业程序员而言是非常关键的。虽然有许许多多关于数据结构与算法的书籍,但是这些书籍通常都是大学教材,...

    C#接口学习总结

    Console.WriteLine("猫大叫一声!"); foreach (Observer obss in observers) { obss.Response(); } } } ``` `CCat`类实现了`Subject`接口,并重写了`AimAt`方法来添加观察者,以及`Cry`方法来触发事件。当猫...

    C#程序设计经典教程

    《C#程序设计经典教程》是一本全面而系统的C#开发技术指南,旨在帮助读者深入理解和熟练掌握C#编程语言。C#,全称为“C Sharp”,是由微软公司推出的面向对象的编程语言,广泛应用于Windows应用程序开发、游戏开发、...

    抢答器用C#语言实现

    这是一个在.NET环境中,用c#实现的抢答器。采用c#的remoting技术。有服务器端,多个客户端(假设最多3个),用winform实现界面。有声音提示。当然网上的资料给了我极大的帮助,现奉献给大家,仅供学习参考使用。 ...

    C#(.net)多语言 国际化 本地化示例demo合集

    在.NET框架中,C#语言提供了强大的支持来进行多语言国际化和本地化开发。这使得开发者可以构建出能够适应全球不同地区和语言环境的应用程序。以下是对标题和描述中提到的知识点的详细说明: 1. **多语言(Multi-...

Global site tag (gtag.js) - Google Analytics