就是老鼠看到猫有什么反应,之间的类与类的之间关系,我忘了题目,现在急用,谢谢大家了.

解决方案 »

  1.   

    观察者模式 和 事件模型 分别实现http://www.aspxboy.com/private/showthread.asp?threadid=939
      

  2.   

    事件嘛
    mouse  m = new mouse()
    cat ca = new cat();
    m.run += new EventHandel(ca.DistanceChange)
    class cat()
    {void DistanceChange ()
    {
    if ( getDistance(cat ,mouse) < cat.视力范围)
    {
        bite();
    }
    else
    {
        sleeping()
    }
    }
    }//核心代码基本上这么多,能看懂就行
      

  3.   

    夜晚,一只猫大叫,所有的老鼠逃窜,主人被惊醒,起身........ 要求:画出UML图 
              2、根据以上编写一个程序。
    要点:1.   联动效果,运行代码只要执行Cat.Cryed()方法。2.   对老鼠和主人进行抽象   
    评分标准: 
      <1> .构造出Cat、Mouse、Master三个类,并能使程序运行(2分)   
    <2> 从Mouse和Master中提取抽象(5分)   
    <3> 联动效应,只要执行Cat.Cryed()就可以使老鼠逃跑,主人惊醒。(3分)   
      程序代码 
    1using   System;   
    2using   System.Collections;   

    4namespace   ConsoleApplication1   
    5{   
    6   public   interface   Observer   
    7   {   
    8   void   Response();   //观察者的响应,如是老鼠见到猫的反映   
    9   }   
    10   public   interface   Subject   
    11   {   
    12   void   AimAt(Observer   obs);   //针对哪些观察者,这里指猫的要扑捉的对象---老鼠   
    13   }   14 
    15   public   class   Mouse   :   Observer   
    16   {   
    17   private   string   name;   
    18   public   Mouse(string   name,   Subject   subj)   
    19   {   
    20   this.name   =   name;   
    21   subj.AimAt(this);   
    22   }   
    23   
    24   public   void   Response()   
    25   {   
    26   Console.WriteLine(name   +   "   attempt   to   escape! ");   
    27   }   
    28   }   
    29 
    30   public   class   Master   :   Observer   
    31   {   
    32   public   Master(Subject   subj)   
    33   {   
    34   subj.AimAt(this);   
    35   }   
    36   
    37   public   void   Response()   
    38   {   
    39   Console.WriteLine( "Host   waken! ");   
    40   }   
    41   }   
    42   
    43 
    44   public   class   Cat   :   Subject   
    45   {   
    46   private   ArrayList   observers;   
    47   public   Cat()   
    48   {   
    49   this.observers   =   new   ArrayList();   
    50   }   
    51   public   void   AimAt(Observer   obs)   
    52   {   
    53   this.observers.Add(obs);   
    54   }   
    55   public   void   Cry()   
    56   {   
    57   Console.WriteLine( "Cat   cryed! ");   
    58   foreach   (Observer   obs   in   this.observers)   
    59   {   
    60   obs.Response();   
    61   }   
    62   }   
    63   }   
    64 
    65   class   MainClass   
    66   {   
    67   /**////   <summary>   
    68   ///   应用程序的主入口点。   
    69   ///   </summary>   
    70   [STAThread]   
    71   static   void   Main(string[]   args)   
    72   {   
    73   Cat   cat   =   new   Cat();   
    74   Mouse   mouse1   =   new   Mouse( "mouse1 ",   cat);   
    75   Mouse   mouse2   =   new   Mouse( "mouse2 ",   cat);   
    76   Master   master   =   new   Master(cat);   
    77   cat.Cry();   
    78   }   
    79   }   
    80}   
    设计方法二:   使用event   --   delegate设计..   
      程序代码 
    1using   System;   
    2using   System.Collections;   


    5namespace   ConsoleApplication1   
    6{   
    7   public   delegate   void   SubEventHandler();   
    8   public   abstract   class   Subject   
    9   {   
    10   public   event   SubEventHandler   SubEvent;   
    11   protected   void   FireAway()   
    12   {   
    13   if   (this.SubEvent   !=   null)   
    14   this.SubEvent();   
    15   }   
    16   }   
    17   public   class   Cat   :   Subject   
    18   {   
    19   public   void   Cry()   
    20   {   
    21   Console.WriteLine( "cat   cryed. ");   
    22   this.FireAway();   
    23   }   
    24   }   
    25 
    26   public   abstract   class   Observer   
    27   {   
    28   public   Observer(Subject   sub)   
    29   {   
    30   sub.SubEvent   +=   new   SubEventHandler(Response);   
    31   }   
    32   public   abstract   void   Response();   
    33   }   
    34   public   class   Mouse   :   Observer   
    35   {   
    36   private   string   name;   
    37   public   Mouse(string   name,   Subject   sub)   :   base(sub)   
    38   {   
    39   this.name   =   name;   
    40   }   
    41   public   override   void   Response()   
    42   {   
    43   Console.WriteLine(name   +   "   attempt   to   escape! ");   
    44   }   
    45   }   
    46   public   class   Master   :   Observer   
    47   {   
    48   public   Master(Subject   sub)   :   base(sub){}   
    49   public   override   void   Response()   
    50   {   
    51   Console.WriteLine( "host   waken ");   
    52   }   
    53   }   
    54 
    55   class   MainClass   
    56   {   
    57   /**////   <summary>   
    58   ///   应用程序的主入口点。   
    59   ///   </summary>   
    60   [STAThread]   
    61   static   void   Main(string[]   args)   
    62   {   
    63   Cat   cat   =   new   Cat();   
    64   Mouse   mouse1   =   new   Mouse( "mouse1 ",   cat);   
    65   Mouse   mouse2   =   new   Mouse( "mouse2 ",   cat);   
    66   Master   master   =   new   Master(cat);   
    67   cat.Cry();   
    68   }   
    69   }   
    70}