日期:2014-05-17  浏览次数:20752 次

谁能比喻一下"类","对象","接口","委托","事件","泛型"等概念.
自己的水平还停留在"变量"的阶段,感觉这些概念都是一种"变量".
可惜程序这玩意儿是老外发明的,翻译教材的大牛又都有"西方思维方式",可苦了我这"老内"了,捧本书看n遍也记不住这些概念.求哪位给打个比喻,帮助理解一下.

------解决方案--------------------
类:比如一个人,就是一个类
对象:比如具体的某个人,就是一个对象
接口:是为了规范,比如B类继承了A接口,B类就必需实现A接口中所有的方法.就是A接口有什么东西,B类中必需有.
委托:比如今天有个快递,你没空签收,这时你就得委托别人去帮你签收.
事件:就是控件本身封装好的,比如click
泛型:List<int> 有一组int型的集合,看起来跟数组差不多,但是这个更高效,只是我们表面上看不出来.
------解决方案--------------------
委托和事件
--------------------------------------
比如你去书店买书,不过碰巧书没有,过两天才会来,那你交待书店等书来了就打我电话,我过来拿。

从委托和事件的角度来看,你把“打电话”这样一个事情委托给了书店,在“书到了”这个事件的时候触发,不知道这样解释你是不是可以理解。

“打电话”这个动作并不是在你去书店的时候发生,因为当时书没来,理解这个很重要。

类和对象
---------------------------------------
类指的是一个模板,而实例是根据这个模板创建出来的东西
比如造楼前有设计图纸,图纸就是模板,而根据图纸造出10栋楼,10栋楼就是10个对象
再比如做棒冰,那个模子就是模板,而通过这个模子做出来的棒冰就是对象
在运行时,对象是实实在在存在的东西,具有"生命",而那个模板已经失去意义了,当然这只是个比喻,实际模板还是有点用的,呵呵

另外在弱类型中,比如javascript,ruby,pyhon中是可以不通过模板直接创建对象,他们的理论就是根据行为回馈来获得的,比如这个对象会鸭子叫,又会像鸭子这样走路,那他就是鸭子,而不必从那个模子里出来,扯远了,顺便提一句。

接口
------------------------------------------
你应该指得的是csharp中的interface,原本方法(同message)在对象上,通过对象可以给他发消息(同method),但为了隔离发消息和实现消息2个概念,设计出interface这个概念,这样在开发设计中,可以针对interface进行编程,因为interface不包括实现部分,这样有效隔离变化,是对象协作的一个基础,相当于2个公司之间的合同契约,我不关心你怎么实现合同内容,我只是根据合同来收钱。

------解决方案--------------------
走在马路上,看到最多的就是汽车(类)。这时突然看到其中一辆(对象)闯了红灯(事件),那是一辆黄色的两厢POLO(属性)轿车,交警叔叔于是把他拦了下来并对其违法行为进行了教育和处罚(委托)。

至于接口的概念,就是一种规范,其实生活中处处可见,例如电源插座,无论什么电气设备,只要其能够工作在220V电压下,并且插头设计成标准尺寸就可以在电源插座上使用了。电脑上的USB接口也是样的道理。

泛型与接口有着异曲同工的作用,接口用于规范类型本身,而泛型侧重于规范类型的成员。例如很多城市设在路边的垃圾箱都分为可回收垃圾和不可回收垃圾两个桶,再例如某些停车场把停车区域划分为小车停车区、货车停车区、客车停车区等,在这两个例子中,垃圾桶和停车区就是两个基本类型,再结合所容纳物品的类型,就派生出五个不同的类型,但其实质是不变的,仅仅是对内容进行了规范。

不知道有没有解释得清楚,希望对你有帮助。
------解决方案--------------------
    我在学习类的概念的时候老师也是举的也是人。在理解类的概念最好和类的属性一起理解,这就好比人。把人看做1个类(也就是人类),而人又有不同。(中国人、美国人、法国人)对了,只要是人都有共有的特点也就是属性(名字,生日等等),可这些不能单独存在,因为这样单拿出来没有什么意义,所以必须属性要在1个容器之中 class Preson{ string name{set;get;};} 但我想给这些熟悉填上其的特点,这就要用对象的概念 Person p = new Person() p一般会被说成对象,但它更应该说成1个实例。这里实例和对象要分开,不是1个东西。这里我不多讲,因为我说不明白。但是 p你就认为是你要调用Person中的方法和属性的桥梁。
    
------解决方案--------------------
没办法比喻。这如同像小孩子解释什么是结婚一样。

而且更糟糕的是。除非你真正理解了,否则光生动形象是没用的,因为生动形象的部分你理解了,不理解的还是不理解。

如同和小孩子说,结婚就是爸爸妈妈住在一起了,如果你理解结婚,那么这是生动形象的。但是小孩子完全没有概念,他又不理解了,我和弟弟也住在一起了,是不是可以结婚呢。
------解决方案--------------------

学习好像也有一道一道鸿沟,当过去了就觉得很容易,当没过去的时候就感觉沟后面很陌生,

------解决方案--------------------
不矫情,面对对象用最朴素的话说就是 直观反应你头脑中的现实对象模型(那些是模型的本质,那些是模型的内涵,那些是模型的外延,那些是模型的功能,那些是需要其他人配合迪,那些是暂时未定需要临时确定迪)
不同的人看问题的方式和看问题的角度不同,所以我们根本无法用啥一个比喻去比喻他,这也是所有有关设计模式和对象书籍统一的毛病(谁告诉你那本书上对象一定如此,谁告诉你这个模式一定就得这样,书上很多就是为了告诉你如此,所以就硬造了一个场景去描述,而对这个场景其实不同人不同项目观点不同,所以就算是同一个场景我们也未必就这个模式,这个技巧,这个抽象)

所以,我们不能比喻,只能告诉你最上面那排红字。至于你怎么去看“哈姆雷特”我不知道,我只知道一千个人一千个哈姆雷特,虽然有些看法可以相同,但是我们也可以有不同的看法
------解决方案--------------------
这些东西就是抽象的说法!!

类(也就是方法):里面包含了你做的事情!比如吃饭、睡觉、玩等等

对象:任何东西都是对象!就像你就是我的对象,那个椅子是我的对象,我是你的对象(就是目标的意思)

委托:就是你让别人去买东西,让别人去干嘛

接口:就是“规定”!假如接口定义了“手、脚、头、身体”,那你继承这个接口的时候,你就必须设置好“手、脚、头、身体”的肤色、长度、重力等!

事件:就是触发了什么事!
------解决方案--------------------