在C#中,如何理解面向对象?求大神解答。 面向对象 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 http://bbs.csdn.net/topics/390835308 看看 thinking in uml里面有将面向过程和面向对象的比较~如果还不理解 再问吧~ 设想这样一个应用场景:界面上有用户列表,选一个用户以后,点击删除按钮来删除这个用户。实现这个功能通常需要以下几个步骤。1、从界面控件中获得要删除用户的ID2、从数据库中根据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,只要有一个接口的实例,然后调用相关的方法可以了。由于内容较多,时间有限,就只写这么多,其实都还没有说清楚,楼主只管慢慢体会,其实网上关于这方面的内容多得很,要善用搜索引擎。 int a--这个a是变量,也可以理解为变量对象,也可以不去理解为对象a=1这个赋了值的a是具体对象,实打实对象所以只要记住只要是赋了具体值的一切皆为对象 winform 怎样使键盘左右键失效? 数据库问题 制作的安装程序,在安装时Windows Installer文件出现错误?我在VS2005下开发,想装在VS2003的机器上! 怎么在win2003里配置开发环境呀 ...? ·急!!!有关Datagrid问题 大家来看一下 求一个avi文件,当让用户等待的时候使用,谢谢。 关于用timer定时刷新的问题 regasm如何使用 怎样在数据库中添加图形文件 各位大哥帮帮忙~ 关于编辑器的小问题? 一个.net系统,输入用户名密码后登录总是提示请先登录,进不去主页 时区(时间)转换
里面有将面向过程和面向对象的比较~
如果还不理解 再问吧~
实现这个功能通常需要以下几个步骤。
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,只要有一个接口的实例,然后调用相关的方法可以了。由于内容较多,时间有限,就只写这么多,其实都还没有说清楚,楼主只管慢慢体会,其实网上关于这方面的内容多得很,要善用搜索引擎。
a=1这个赋了值的a是具体对象,实打实对象
所以只要记住只要是赋了具体值的一切皆为对象