真正的面向对象编程思想是怎样的?
真正的面向对象编程思想就是忘掉一切关于计算机的东西,从问题领域考虑问题, :-)
从问题想?
我的理解:
1、将分析过程为抽象的过程:简言之:分成多个小问题(组成部分),直到无法再细;
2、对每个对象(小问题)进行分析,抽象,提取处共同的内容(数据成员和操作方法),
3、有相似的对象的,构造基类;再有基类派生出各个确定的对象(小问题);
4、解决问题的过程就是操作这些对象的过程。
我的体会:
1、从现在开始构造对象,逐渐总结、体会;不要等到看到教材的最后一页才动手。
就是忘掉语言本身!
只有逻辑!
回复人: qiuanhong(练从难处练,用从易处用)
我的理解:
与实际生活联系起来。
将要处理的‘问题’抽象成一个或多个‘事件’
找一个地方使用我的智慧
你不说我倒还明白,你越说我越糊涂
就是学习数据结构时,一般教材用的“类自然语言”。
就是从实际的对象出发,而不是用计算机语言考虑问题
比如说一头驴:从实际出发,这头驴有各种属性(高矮、胖瘦、驴种(白的、黄的、花的)),还有各种功能(可以骑、可以卖、可以吃);
而在计算机专家的角度,他会想(这头驴可以用什么数据结构
实现??要多大空间??说不定还会写出一个 骑()函数。。。。)
面向对象的技术的出现就是因为软件的规模和复杂度不断扩大,导致
了软件开发的危机,人们终于认识到人脑的分析和理解能力是有限度的。
面向对象的思想的出现就是软件开发界的一次“反朴归真”,犹如金庸小说
中张三丰教无忌太极拳一样,“忘掉一切,你就领悟太极的真谛了”,哈哈,
说得有点玄。
其实面向对象技术就是要软件开发者从技术层面向管理层面倾斜,以宏观的眼光
看待系统。
要以面向对象的方法进行系统的分析,愚以为:
1。了解系统的功能。列举出它的对外接口,即对于使用者来说它有什么功能。把这整个系统作为一个对象。
2。环境。系统不是运行在真空中的,操作系统等外部环境都可能会影响它。所以把环境也作为一个大的对象。
3。内部。在系统的内部,一般都比较复杂,一般的做法是规定一个粒度,枚举出该粒度上所有的物体。比如说人体,如果在器官的粒度上,就有心,肝,肺。而小于该粒度的物体(或称对象),比如血细胞,就忽略,作为其它物体(或称子系统的内部对象)。
4。子系统。不断缩小粒度,沿用步骤1~3,直到不能再抽象为止。
5。无形的物体。一个完整的互连的系统需要许多无形的物体,比如消息等了,一般这样的对象比较难发现。当你发现各个子系统无法正确合作或理顺关系时,试着加入一些辅助对象。
一切都是为了让人明白,有能让机器理解的思想
我想分析和抽象能力的高低是个关键,首先要从问题域分析和抽象出准确的对象模型,再根据这些模型进行处理,当然在过程种少不了楼上前辈们说的一些思想和细节,但是别忘了,我们的目的是解决问题,不要为了面向对象而面向对象!
我想分析和抽象的能力对这个问题是个关键。首先要在问题域仔细分析、抽象得到相关的对象模型,然后才是相应的设计。可是面向对象只是我们解决问题一种思想,切不可忘了问题本身,弄成为了面向对象而面向对象了!当然过程种少不了楼上一些前辈说的思想和细节了。
一种为了解决问题而产生的编程模式,你完全可以不用它,而且有可能做的更好。
但就现在的形式看,还是掌握的好,就我看面向对象就是:把实体转化成对象。
耕具我多年的实践:面向对象包括两个思想:
从大往小想,从小往大做
从难往易想,从易往难做
同意一下观点-----能深入浅出,真高手也!
真正的面向对象编程思想就是忘掉一切关于计算机的东西,从问题领域考虑问题, :-)
把问题从大到小都抽象成对象(指针只是对象的使用形式),在设计和编写程序的时候把你设计的对象合理的编排组合就是面向对象编程了。
面向对象,就是面对现实;
现实中的一切都是对象,他们有分类,就产生了“类”;
他们有不同,类和类之间的不同,使用类来区分;
同一个类中不同的对象的区别,使用成员区分。
所以,面向对象的内部逻辑是分类。
真正的面象对象思想也不实用,举一个例子:
在一个文本编辑器中,如果完全按照面向对象的思想来设计的话,每个字符都将是一个对象,这样的开销太大,以致于不能形成程序。(所以才有设计模式中有关于此的讨论,注意:不是一种模式能够解决的)
最合适的还是一个结合吧,就象生活中的各种事情一样,其实程序本来就是为生活服务的呀!
一本C++编程思想可以帮助你所有的难题
P.S.《深入浅出MFC》离真正的面向对象还很遥远……
侯先生应该是科普领域的名人,不应该是程序员的偶像!
还有,面象对象也不是唯一,现在的通用编程技术就是对面向对象技术的一个很好的补充,还是那句话:一个综合各种因素的结合点才是我们的目标!
C++编程思想那本书其实也有它的局限性,如果看过它之后就不再看其它的东西了,思想就会囿于其说而不能自拔,没有一本书能够“帮助你所有的难题”,相信您已经超越这一阶段但是您想过没有,您的这句话会对初学者造成一些不正确的印象。从某种角度来说您的话是正确的,但是它有可能会误导啊!
这个问题问的好,像我这样的低手真的该总结总结到底什么样的思想是面象对象的思想了,看看大家回答的都各有各的道理,真是感觉好啊! 总之这个问题问的好,大家可以一学习和复习一下!好!
就算你水平再高,你也觉得自己写的代码还不够面向对象!但是在水平比你低的人看来你的代码就非常面向对象了,所以没有绝对的面向对象,只有相对的,螺旋上升的!——愚见
不能全面向对象,在设计系统时不能一味追求结构
面向对象是一种思维方式,使用计算机语言描述现实世界的一种方式,以你所感兴趣的实体为对象,通过一定的数据结构和类型来描述该实体,这种数据在C++中就是类class。你可以将你所感兴趣的现实中的实体都建一个类,这样,你算感兴趣的所有实体都有一个类与其相对应。
不使用面向对象的方式,我们也可以解决问题,如dos时代,使用面向对象的方式,我们可以更好的解决问题。Windows就比较精彩。
我的看法是:
面向对象编程思想就象数学上的一些概念,如:空间、群、环、域等
原始的编程思想就象古典数学,人们只在一个集合上探讨问题,没有系统的方法(即运算)定义,于是仁者见仁、智者见智,这样在一定程度上造成了理论的一种混乱局面,不利于科学的发展。于是近代数学向公理化发展,这是什么意思呢?就是说,人们除了在限定论域(即上面的集合,面向对象也有此概念)外,还在此论域上加进了一套通用的、公认的运算(方法);集合加上集合上定义的运算就构成了数学上的空间、群等,在计算机领域里,就称之为“类”。这种集合上定义了操作的东东利用起来就方便多了,这使得人们讨论问题时都在给定集合的运算能力上下工夫,即有通用性有可事半功倍。
面向对象的编程思想就要想近世代数的分析思想,首先要确定“论域”,即工程所涉及到的所有的“对象”,然后要分类处理,把隶属同一类别的对象集合在一起(做成一个集合),定义他们之间的运算性质及可以进行的操作,这样就构建了一个类,当然以后用到这个类的对象时都要通过已经定义了的操作来完成各项功能,这就是常要求的类的“类的成员变量要通过共有函数来操作”。
好了,就说这些吧,有些专业,不知你明白了吗?
通用编程是“横向”的,面向对象是“纵向”的,两者要结合
现在谁敢说自己不使用模板?(当然使用模板不能说就是通用编程,但是模板用多了,就会向通用编程的方向发展了)
不说STL,现在连VC.net里的CString也是模板了,呵呵,发展的大方向所致
操作系统就是一个很好的例子!
“请问怎样才能算是真正的面向对象编程思想? ”我想不应该是编程思想,应该是面向对象的分析方法才对!
我的大白话理解是:把你要解决问题中涉及的东西一个一个分析清楚,找出彼此之间的差异和共同点,相互之间的联系,对于共性的呢,就定义成父类,在父类的基础上在进行分析,直到描述了每个东西。
学学达尔文的进化论吧
hehe,或者看看初中的生物书也行,
对继承,多态什么的就容易理解
当然实际工程中的类、对象比花鸟虫鱼要抽象一点点
如此而已
见识浅陋,贻笑大方了
同意只关注逻辑的观点.
应该很少考虑语言或者开发工具,
面向对象就是开发对象,简单地说,一个程序模块不需要原程序员的解释,
另一个程序员就可以进行2次开发,这就是对象封装成功了。
至于如何封装是技术问题,
怎么划分模块界线是工程问题,
不讨论了
微软的方法是使用各种平台,将各种语言程序融合起来,使用相同的控件,
这就是将对象应用到程序当中去了。
我同意checkitout(不累)说法,语言太多了。就像盖房子,有了好的基础,上面才可能漂亮。
就是你编的程序能放在手里也能放在篮子里,落到地上又不会碎,别人捡去也能吃。ok!!!!!!!!!!!!!!!!!
先理解什么是对象?
然后根据对象的特点编程
一个主要的关键的重要的特征就是继承。像封装多态抽象模块化这些特征面向过程也有,质的区别就在于OO提出了继承。所以说有对象而没继承的只能叫基于对象,只有有了继承才能叫面向对象。
↑以上是我在其他网站看到的一些留言,不是连续的,你看时可能会很乱,但也先看看别人在说什么吧
↓下面我们也来发表一下自己的意见如何?
[em07]