解决方案 »

  1.   

    http://bbs.csdn.net/topics/390835308
      

  2.   

    看看 thinking in uml
    里面有将面向过程和面向对象的比较~
    如果还不理解 再问吧~
      

  3.   

    设想这样一个应用场景:界面上有用户列表,选一个用户以后,点击删除按钮来删除这个用户。
    实现这个功能通常需要以下几个步骤。
    1、从界面控件中获得要删除用户的ID
    2、从数据库中根据ID读取用户信息
    3、验证用户是否能够删除
    4、从数据库里删除用户记录和相关数据
    5、其它功能模块中删除与用户相关的数据
    刚入门的程序员,甚至是一些“资深”的,很容易把这些代码直接写在删除按钮的处理程序里,初看这样没有问题,因为功能实现了,但如果在其它界面上也有一个相同功能按钮,是不是需要同样的代码再复制一遍呢?如果你觉得可以这样做,就没有必要再往下看了。
    个人认为,面向对象的精髓不是对象,而是它的三大特性:继承、封装和多态,合理地利用这三大特性可以很好的控制代码重用,并增加系统的可伸缩性和可扩展性,要做到这点必须要懂得怎么分割代码,简单的说,就是要在写代码之前考虑好这段代码应该放在哪个位置,代码和代码之间怎么关联。
    以上面的场景为例,结合典型的三层架构来看看怎么分割代码。三层架构是一个老掉牙的概念了,但用来理解面向对象还是很有帮助的。UI层负责与用户交互,BLL层负责处理业务逻辑,因此可以看出,上述第1步属于UI,其它都在BLL里完成。通过这样的分割,UI里只要调用BLL的一个删除用户的方法就可以了,而在UI里根本不用管到底是怎么删除的,这样就实现了封装特性。
    在三层架构中还有一个数据访问层DAL,它负责与数据库交互。通常这个层很少使用,数据的访问直接在BLL中就完成了,但对于软件产品来说,可能会考虑在部署时允许使用不同的数据库,这样就必须要使用DAL了。
    DAL是典型的继承和多态的体现,架构师会制一定系列的接口规范,这样在BLL中可能调用,而在DAL中也要按照接口规范来实现,对于以上场景,可能会有这样的一个接口。public interface IMasterDataProvider
    {
      // 获取用户信息
      User GetUser(int userId);
      // 删除用户
      void DeleteUser(int userId);
    }这样,BLL根本不用管用的是哪种数据库,也不用管有没有ORM,只要有一个接口的实例,然后调用相关的方法可以了。由于内容较多,时间有限,就只写这么多,其实都还没有说清楚,楼主只管慢慢体会,其实网上关于这方面的内容多得很,要善用搜索引擎。
      

  4.   

    int a--这个a是变量,也可以理解为变量对象,也可以不去理解为对象
    a=1这个赋了值的a是具体对象,实打实对象
    所以只要记住只要是赋了具体值的一切皆为对象