黑马程序员技术交流社区

标题: 面向对象思想 [打印本页]

作者: 汪伟楠    时间: 2014-1-13 11:21
标题: 面向对象思想
有人敲门,我去开门。这件事怎么用面向对象的思想来思考,而且用代码怎么实现???
作者: 李程    时间: 2014-1-13 11:34
门是对象,定义两个功能,一个是发出响声的功能,另一个是开的功能,这样可以吗?
作者: 淡夜清风    时间: 2014-1-13 12:31
两个类:一个人和一个门。
人:有敲门和开门的方法,还有监听门是否响的方法
门:有开的状态和关的状态,还有发出响声的方法或状态
---------
敲门:当人发现门的状态为关着的,就敲门。门这时候就发生响了。
开门:当我监听到门发生响声后,就开门。将门的状态置为开。。
作者: app297    时间: 2014-1-13 12:48
不知道可以一,我自己觉得还说得通
我的理解是,  
门是一个类: 有开门 和 门铃响的方法。
人是一个类: 人 敲门 方法。
  1. public class Test {
  2.        
  3.         public static void main(String[] args) {
  4.                 Person p = new Person();
  5.                 p.knock(new Door());
  6.         }
  7. }

  8. class Door{
  9.         public void openDoor(){
  10.                 System.out.println("门开了");
  11.         }
  12.         public  void diabolo(){
  13.                 System.out.println("响铃");
  14.         }
  15. }
  16. class Person{
  17.         public void knock(Door door){  //人敲哪个门?
  18.                 door.diabolo();
  19.         }
  20. }
复制代码




作者: 程玉习    时间: 2014-1-13 12:51
本帖最后由 程玉习 于 2014-1-13 13:10 编辑

  1. class OpenDoor
  2. {
  3.         public static void main(String args[])
  4.         {
  5.                 Person p = new Person();
  6.                 p.qiao();
  7.                
  8.                 Door d = Door.getInstance();
  9.                 d.dingDong();

  10.                 Me m = Me.getInstance();
  11.                 m.answer();
  12.                 d.open();
  13.         }
  14. }

  15. class Person
  16. {
  17.         public void qiao()
  18.         {
  19.                 System.out.println("有人吗?");
  20.         }
  21. }

  22. class Door  
  23. {  
  24.     private static Door d = null;  
  25.   
  26.     private Door(){}  
  27.   
  28.     public static Door getInstance()  
  29.     {  
  30.         if(d == null)
  31.         {  
  32.             synchronized(Door.class)
  33.             {  
  34.                 if(d == null)  
  35.                     d = new Door();  
  36.             }  
  37.         }  
  38.         return d;  
  39.     }
  40.        
  41.         public void dingDong()
  42.         {
  43.                 System.out.println("叮咚");
  44.         }

  45.         public void open()
  46.         {
  47.                 System.out.println("门开了");
  48.         }
  49. }

  50. class Me  
  51. {  
  52.     private Me(){}  
  53.   
  54.     private static Me m = new Me();  
  55.   
  56.     public static Me getInstance()  
  57.     {  
  58.         return m;  
  59.     }  
  60.         public void answer()
  61.         {
  62.                 System.out.println("来了!");
  63.         }
  64. }
复制代码






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2