真正的面向对象编程思想是怎样的?

真正的面向对象编程思想是怎样的?
真正的面向对象编程思想就是忘掉一切关于计算机的东西,从问题领域考虑问题, :-)
从问题想?
我的理解:
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]
[url]http://ria999.com[/url]

坚持4 离线
级别: 贵宾

UID: 62700
精华: 0
发帖:
3103
铜币:
46093 枚
威望:
0 点
E积分:
0 点
技术积分:
0 分
在线时间: 0(时)
注册时间:
2006-12-23
最后登录: 2010-06-22
沙发  发表于: 2007-01-12   

上面未完,下面继续↓

我觉得是不是用面向对象的思想来编程
什么是面向对象的思想?
我认为面向对象的思想的重点是发现对象和寻找对象之间的关系
对这方面我还是初学阶段
有一本书上解释得比较清楚
<<uml与模式应用:面向对象分析与设计导论>>
找来看看,你可能会茅塞顿开
 回复人: tolimit(为JAVA鞠躬尽瘁,死而后已) ( ) 信誉:100  2002-05-18 20:56:42Z  得分:0 
 那顺便问问,代码重构如何做的更好呢,极限编程和面向对象的联系呢
 回复人: jakecat(『钢筋混凝土』混进银行...) ( ) 信誉:100  2002-05-18 23:28:18Z  得分:0 
 面向对象的Paradigm就是让我们用看待自然或者现实世界的眼光来看待软件开发中的问题。
to crazy_lazy_pig :观点令我耳目一新,不错不错:),你是学数学的吗?
关于面向对象思想(不是编程思想),我想大家如果看懂了《设计模式》就会理解大部,偶正在看第二遍,第一遍没看懂,现在总算找到些感觉。
努力中!
先拆后组
面对对象只是提供了一套设计软件时的方法或者说是思维工具,什么是真正的面对对象,我认为并不重要,因为面对对象有他的好处,也有缺点。关键在于设计时的目的,怎么样的设计才是一个好的设计,软件的可扩展性,灵活性,效率,稳定性要求一个设计人员有比较广阔的思路,博采各种思想。
这么多年的开发,我发现了一个非常普遍的现象,一旦用OO,就都是OO,一旦用Interface/COM,就都是Interface/COM。
我认为没有一个方法能放之四海而皆准,其实OO之所以产生,COM之所以产生,都是在大量实际设计软件过程中,把一些好的经验总结的结果。
从语言的角度来讲,JAVA就是纯粹的面向对象语言!
《设计模式》《think in C++》《深度探索 C++ 对象模型》
关于面向对象思想,我的认为是:面向对象主要是一种模块化的思想,每个模块的设计,应该是一个独立的。在调用该模块时,就像楼上那位大虾所说(一头驴他属性有高矮、胖瘦、驴种(白的、黄的、花的))只要知道其名字,并知道其属性就能用该模块,而不用管他内部是如何构建的。就像那头驴只要知道它的外在特征(如耳朵,眼睛,腿,身形,叫声等)就能判断它是驴。而不用管他里面有几个心脏,心脏大小等。
关于这类书太多了!
面向对象 哈哈 就是把什么都当作对象!(不女朋友那个对象呦!)
程序 = 对象 + 对象 + .......
对象 = 属性 + 行为
总之,还是亲手编才能体会到!
高度藕合的数据和代码封装在一起,自己的事自己做。——面向对象的特征之一。
看atl源代码,看懂了就知道了
1)哪种方法能最好地解决问题就用哪种方法,不一定非要用OO,OO也有缺点
2)不用OO Language也能使用OO思想(注:^☉^OO就是指面向对象)
非常赞同duanrain(dyl)的说法。
科学家们为什么会研究出OO的思想出来,根本的出发点就是为了更好的完成我们手头上要做的项目(这是我的理解)。但实际中,是不是用OO就一定能很好的完成项目呢?我觉得不见得。对于不同的项目它们的设计有易有难,有的很容易就能找出对象集和它们之间的关系,有的就不容易经常会有无凌两可的局面。可能用OO很难表达的一些东西,采用过程式的开发就马上把它搞定。所以用不用面向对象的思路进行开发不是关键,关键是要采用一种自己可控的、别人能很好理解的、系统性能稳定的可扩展的方式去开发。这样做才能稳中求胜。
我有这样的一个经历,我刚对OO编程开始有点领悟时就“大试小牛刀”在一个项目里定义了一个逻辑臃肿对象模型。虽然逻辑很符合应用上的业务逻辑,但里面存在了很多编程上的弊端。在操作上(我们开发人员少,就我一个)和性能上(设计符合应用逻辑但与操作数据库的操作有点相违背)都不太好。
之后又另一个项目,这我吸取了上一次的教训以后,我就没很详细的去设计对象模型,只做了一些小对象,在界面编程上实现业务逻辑。反而编码无论在修改BUG还是在添加新功能上都明显简单快捷多了,系统在性能上都很稳定。
我觉得,要用OO编程思想去设计项目是一个很大风险的举动,一个好的OO设计对于设计者各方面的素质都要求很高。设计得当就对编码工作有很大的帮助,设计不当时编码就寸步难行了。
我认为就“面向对象思想”来说,《Object Oriented Software Construction》(Bertrand Meyer)的阐述最为经典,最为彻底。
语言:Eiffel,C++ Critique;
可重用:Design By Contract;
软件工程:直接受语言本身的支持,集成开发环境将语言编译、代码优化、图形化显示、系统分析等功能做得浑然一体,真是无与伦比!
可惜ISE公司不做操作系统,不能象微软那样依托操作系统设施设计出COM+来。
要是Eiffel的集成开发环境与Windows的系统注册表、COM+技术做得浑然一体,我必弃VC而用Visual Eiffel。

 暂时转播完毕,吃完饭回来,再吃牛。88

[em01][em01]
  • 0
    点赞
  • 0
    评论
  • 2
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

参与评论
请先登录 后发表评论~
©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页

打赏作者

子庚

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值