在C#中,如何理解面向对象?求大神解答。

问题描述

在C#中,如何理解面向对象?最近老遇到这个问题,求大神解答。

解决方案

解决方案二:

解决方案三:

每个人对面向对象的理解不一样,如果用词条这样的东西来解决,太过于官方了所以我一直觉得这个问题一直都不会找到答案,但是却可以一直被大家讨论着
解决方案四:

不对的场景,面向对象理解的含义是不同的
解决方案五:

别理解了,写完1w行代码自然就理解了。
解决方案六:

我理解的就是封装,把一堆代码封装成一个有用的东西就叫对象,我个人理解
解决方案七:

想真正理解它,应该系统学习《软件工程》入门知识,通过3~5年的学习,你在设计上就可以基本上从“结构化设计和开发”转变到“面向对象系统分析和设计”方向上了。现在只能知道一些概念,所有的编程入门书都有提及。
解决方案八:

面向对象系统设计方法,你在画一个软件蓝图(涉及几十个对象类型)时就是面向对象的,这个图具有“抽象和扩展”的功能。例如一个商业会计系统,它里边可能有300种类型,而主要的系统蓝图可能只涉及20种类型,例如其中的“信用卡”类型,在系统扩展的“下一级”蓝图中被扩展为7种不同的信用卡,然后每一种不同的信用卡又可能在“第三级”扩展蓝图中分别被几十种具体的信用卡所继承。那么第二级、以及第三级信用开子类,并不需要跟一级蓝图上的与信用卡无关的类型直接交互,而是通过一级蓝图上“抽象父类”的公共接口来交互的。这样就降低了系统扩展时的耦合性。否则,如果你不会抽象,那么当你的信用卡类型扩展时,程序复杂性就会成指数膨胀了!于是面向对象系统分析和设计技术,就会有一系列操作步骤告诉你如何识别对象,如何分辨含糊、错误、重复、遗漏的对象类型,如何处理组合和扩展的区别,如何处理多重关联,甚至如何在程序中、关系数据库中、其它开发活动中去映射这种类图结构。等等知识。而能够对一个系统整体画出对象(类)图,这只是面向对象系统设计分析知识中不足20%的知识。你需要花精力在涉及到对象之间的“通讯方式、时序设计、状态规划、功能计算、活动”等等方面,分别学会应用“抽象和扩展”的技术。比如说你设计了客户的信用卡跟单位银行账的开户行接口之间的业务处理时序,那么当不同大类的信用卡有所差别时,如何在下一级的时序设计上画出这种差别来进行沟通、分析、汇报工作?只看过一点概念的人,自认为什么都会了,但是一旦需要自己动手时就头脑空空了。这就需要时间去真正学习和实践。
解决方案九:

面向对象是指抽象和扩展的设计技术,不是仅仅知道“对象”。
解决方案十:

看看thinkinginuml里面有将面向过程和面向对象的比较~如果还不理解再问吧~
解决方案十一:

代码写多了,理解就深刻了~
解决方案十二:

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

这样,BLL根本不用管用的是哪种数据库,也不用管有没有ORM,只要有一个接口的实例,然后调用相关的方法可以了。由于内容较多,时间有限,就只写这么多,其实都还没有说清楚,楼主只管慢慢体会,其实网上关于这方面的内容多得很,要善用搜索引擎。
解决方案十三:

这个三言两语说不透彻,或者说你没有一定OO基础,别人的真知灼见你也没能体会到。
解决方案十四:

我自己的理解是跟C++一样的~!只是把跟多的操作都封装到了类里~
解决方案十五:

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

时间: 2024-10-07 09:56:29

在C#中,如何理解面向对象?求大神解答。的相关文章

对java中递归问题的输出不理解,求大神解答!谢谢

问题描述 对java中递归问题的输出不理解,求大神解答!谢谢 对于这一段代码我能够理解,压栈然后出栈就是6,5,4 package recursion; public class testRecursion { public static void main(String[] args) { int num=3; recursion(num); } private static void recursion(int n){ n++; if(n<7){ recursion(n); System.o

obotium测试框架-在使用Robotium自动测试框架中遇到问题,求大神解答

问题描述 在使用Robotium自动测试框架中遇到问题,求大神解答 我测试一个Activity,想点击最下方id为video_iv的imageview,代码如下: @Before protected void setUp() throws Exception { super.setUp(); this.solo = new Solo( this.getInstrumentation(), this.getActivity() ); } @After protected void tearDown

在Java中能运行,在jsp中却挂了,求大神解答

问题描述 这是java中的:packagevo;importjava.util.List;importdao.lmpl.StudentDAOlmpl;publicclassTest2{publicstaticvoidmain(String[]args){Liststus=null;StudentDAOlmplds=newStudentDAOlmpl();try{stus=ds.getAllStudent();}catch(Exceptione){//TODO自动生成的catch块e.printS

c语言二叉树问题,代码不太理解,求大神解释,急

问题描述 c语言二叉树问题,代码不太理解,求大神解释,急 问题:A Binary Tree is called balanced if, for each node in the tree, the height of its left and right subtrees differ by no more than one. Write a function int height_if_balanced( Tnode *root ) which returns -1 if the tree

我是菜鸟,在c++编程中遇到问题,求大神帮忙

问题描述 我是菜鸟,在c++编程中遇到问题,求大神帮忙 对于这个题目: 定义一个基类Person,数据成员包含字符指针类型变量Name用于保存姓名, 函数成员包括默认构造函数.带形参构造函数用于初始化数据成员.输出 姓名的成员函数PrintName().从Person类派生出Student类,增加长整型 数据成员Number用于保存学号,派生类的函数成员包括带形参构造函数用 于初始化数据成员,输出学生信息的成员函数PrintInfo(). 要求:在函数PrintInfo()中需要调用基类的成员函

jsp文件中滚动条无效!求大神!急!!!

问题描述 jsp文件中滚动条无效!求大神!急!!! jsp文件中点击展开菜单后展开内容,但是右侧滚动条没有变化,以至于看不到下面的内容!1

求大神解答一下-java中对象流objectstream问题

问题描述 java中对象流objectstream问题 输出的为什么不是cyh男20 ym女20求大神解答!!!!!!!!!! 解决方案 你的代码和我这个一样吗?麻烦把你的代码粘全了,我看看 解决方案二: 这个是照片......... 解决方案三: 我和你写的差不多,不知道你为啥会这样,我给你粘出我的代码package lianxi; import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOE

代码-android中发送验证码,才开始学的,求大神解答。

问题描述 android中发送验证码,才开始学的,求大神解答. 这个现在还没有数据库,只是我学习用的,点发送验证码,后面会提示多少秒后重新获取验证码,求大神给段代码. 解决方案 MyCoun myCoun = new MyCoun(60000 1000); /** * 倒计时定时器 * * @author 1 * */ public class MyCoun extends CountDownTimer { public MyCoun(long millisInFuture long count

spark dataframe 中write 方法,求大神指点下,不胜感激

问题描述 spark dataframe 中write 方法,求大神指点下,不胜感激 dataframe的write方法将spark分析后的结果放到pg数据库,结果表中有个自曾字段,而那个write方法不能指定添加那几个字段只能全部添加,怎么办,求大神指导换种思路也行,不胜感激,小弟欲哭无泪啊 解决方案 http://www.open-open.com/lib/view/open1452259673808.html