面向对象的程序设计你一定很喜欢,发表你的高见如何?

元明 2000-03-13 08:10:00
加精
面向对象我真的很喜欢,但我还是不能够通透的去理解这个问题,我也曾经看过类似此问题的书籍,但苦于本人目前技术所限,看起来苦涩难懂。当然在此我更想看到一些您的高见,也希望您帮我推荐几本此方面的好专著,并告知是哪个出版社的,以方便我购买。各位网友请加入这个话题进行探讨吧!
...全文
532 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
evilzydar 2001-10-28
  • 打赏
  • 举报
回复
看完众多专家高手的意见,zydar真是“胜读十年书啊”,感谢各位热心的帮助解答,从中学到了不少东西,我刚开始学C++,以后有问题希望各位高手能指点,先谢谢了!
yanwl 2001-05-26
  • 打赏
  • 举报
回复
面向对象是一种实在的思维方式,并且是符合客观实际,可以很容易的被人接受和使用的一种方式.
所谓面向对象技术,就是说用面向对象的方法来解决实际问题.
在现实世界中,对象是客观存在的事物客体,类是客体的集合,属性是客体所表现出的性质,调用是主体对客体的作用,方法是客观事物的规律...
只有善于观察,抓住规律,才能弄清事物的本质.
面向对象编程就是把现实事物在编程中描述出来,这是建立在观察(感性)和分析(理性)的基础上的.
并不是说面向对象编程一定要使用基于对象的语言,最重要的应当是思维方式...
dbbdggdbbdgg 2000-06-10
  • 打赏
  • 举报
回复
中国UML播种机
www.umlchina.com
上有好多资料
flyingknight 2000-06-10
  • 打赏
  • 举报
回复
呵呵,其实面向对象是一种思路,而不是某几种具体的语言...
学习它首先要明白它和传统面向过程的区别. 我举一个简单的例子吧!
吃苹果...面向过程可以把"吃"作为一个过程,而苹果只是一个参数...当然你也可以用其它的参数调用"吃"的过程,比如说吃桔子,吃香蕉...
而面向对象可以把苹果作为一个对象来处理..."吃"在这儿只是"苹果"对象的一个方法, 当然可能还有其它的方法,比如说可以拿来扔掉!"扔掉"在这儿也是一个方法,虽然我们好像不怎么用它...哈哈.....
至于继承的问题,我们可以想象苹果,桔子,香蕉都是由水果派生出来的,它们的共同特点是"水果"...
好啦,不再多唠叨了,上面所说的一切都是我随口而出的...要是有什么看法,说说看嘛!
gun2 2000-05-30
  • 打赏
  • 举报
回复
《C++使用指南》(《Using C++》):手册性质,MFC风格的例子代码,较为全面的描述,适合初级和中级读者(见仁见智,一家之言)
Northwolf 2000-05-25
  • 打赏
  • 举报
回复
请问一下各位朋友,国内除了playcase还有其它软件工程方面的工具吗本人对软件工程
特别感兴趣,希望能同各位朋友多多交流。
luckybat 2000-04-01
  • 打赏
  • 举报
回复
按我的理解,面向对象纯粹是一种方法论,一种思想,而不是指具体的方法,任何编程语言甚至汇编都可贯彻实现。我曾在95年独立开发过一个类C++的编译程序,当时的目的是为了能在dos及unix下同时编译运行我的应用软件(那时还没能用上java),该工程用的是ANSI C语言,仅.c文件就多达近200个,现在想来,如果没有这种思想的指导,肯定不会顺利地让它成功运行到现在。
不过近几年流行的开发平台好象都在“强迫”用户利用面向对象技术,所以,除非是必须考虑一个源模块/文件在100个以上的程序,你其实无须在这方面花太多心思,反而应集中考虑“面向界面”的问题,尤其是在windows系统下。
近几年没有再专门读过面向对象程序设计的书了,感觉这方面的书虽然很多,有价值的却少之又少,多是东抄西凑的滥货,那本汤姆.斯旺的书我也看过,算是一本C++入门书,还行。要让我推荐一本,那一定是《高级C++程序设计技巧》(北京科海培训中心 王松编),此书是我94年买的,18元,现在居然还有卖的,一是内容确实好,二是包装实在太差(不过里面极少发现错误)。
JavaForce 2000-03-30
  • 打赏
  • 举报
回复
啥子叫类?我觉得说白了就是传统软件设计中数据结构的概念.
std_ream 2000-03-30
  • 打赏
  • 举报
回复
gun2兄高见,我最近在看《thinking in C++》这是我看到的最好的C++ 书籍(对我来说),强烈推荐
元明 2000-03-30
  • 打赏
  • 举报
回复
在这末多的回复中,我认为gun2,mach,badjava比较有代表性,当然也更感谢大家的肺腑之言,希望更多的人加入这个话题,重在切磋,重在参与.
hibor 2000-03-30
  • 打赏
  • 举报
回复
同意JavaForce的意见,其实没有必要支搞清楚类的定义或是概念,如果你曾经做过C你可就当它为结构的延伸。这只是人们在程序中对外部事物的一种自认为合适的程序定义方式。有时使用类是因为它能隐含许多细节在使用时调用方便,而更多定义一个类是为了迎合人的思维方式。总之你认为程序 中定义类对你没有帮助就不要去定义他否则会画蛇活足
badjava 2000-03-29
  • 打赏
  • 举报
回复
now there are so many people talking about OOA,OOD,so I'm interesting in
this topic. But who can tell me in China some real case (real big project) which is
developed using OOA or OOD ? Now The OOA,OOD technology seems more suitable for small projects for examples in realtime or embeded system.
this is just my opinion,I'm green bird in OOA/OOD,but I think OOA/OOD
is furture and furture is OOA/OOD!!!
halfdream 2000-03-19
  • 打赏
  • 举报
回复
从语言的角度来说,如果C++中找不到感觉的话,我建议先学学JAVA,
另外,国内面向对象理论方面的书也不少啦,可到具体开发的时候,唉!
这其实有很多因素,不仅仅是知识方面的问题。
希望UML在中国流行起来。我从网上下了一个PlayCase(国产),倒是
差强人意,尽管介绍得比较好,但是离Rational Rose还是差距不小:(
gun2 2000-03-17
  • 打赏
  • 举报
回复
在C++的发明者B.S.的“The C++ Programming Language”一书中,作者非常详尽而朴实的描述了C++语言的方方面面。但没有对OO提出自己的定义和观点,而是就事论事地谈C++。学习C++当以此书为最好,“Thinking in C++”是国内能买到的最好的学习教材(恕我寡闻)。Swan的书也不错,有一定C/C++基础读,收获大些(并不是说这本书有多深)。如果要剖析一个类库,MFC太杂而庞大,技巧玩得太多;vcl相对好一点,但也有此弊;Turbo Vision太老,但风格不错;tools++(?记不清了,大多数人可能听都没听过)太偏。我个人认为,根据自己的条件选用,但一定要采各家之长。

在国内的不少书籍中都或多或少会论及一些OO的观点,比如:OO的历史(通常是某一OOPL的历史),什么是OOA,OOD等等。

OO技术的广泛应用是和OOPL的发展密切联系的,因此有人往往将两着相提并论。简单而笼统地可将各时期OOPL的代表罗列如下:

LISP(非OOPL,但引入动态绑定(dynamic binding))->Simula(60年代,公认的OOPL鼻祖)->Smalltalk(70年代,OOPL和OO技术成熟的代表作,弱类型语言)->C++(80年代,与C兼容,运行效率不减,开发效率极高,OOPL的事实代言人,强类型语言)->Java(90年代,不完全的OOPL,革命性的“一次写各处运行”,受internet浪潮影响明显)->?(21世纪)

同时,OOPL还受以Pascal->Modula/ModulaII->Ada->Eiffel/Object Pascal为代表的结构化,模块化,包(Package)的引入的这一系列语言的影响,相互借鉴、吸收而发展、熔合。一千个读者有一千个哈姆雷特,不必在此学究。

我个人认为(其实以上都是我个人的看法),不妨从“数据的封装”“数据的抽象”“数据的交互(代码的复用)”三方面看OOPL:

“数据的封装”引出:对象;
“数据的抽象”引出:类;
“代码的复用”引出:继承,类属(强类型语言),多态:多态引出动态绑定等;

从上述5点出发把握OOPL。

受OOPL的影响,OO技术渗透到计算机领域的各个层面,出现了OOA,OOD,OOQA,OODB等等,还有OOGUN2,:)。在OOSE方面流派甚多,研究较早的是Coad&Yourdon,现在影响较大的是合Booch、Rumbaugh、Jacobson之长的“UML”的那个(对不起,又忘了!)。其实,仔细看看,都差不多。顺便提提,清华的那本书只讲了OOA。

最近挺忙,过几天列个书目。
onion 2000-03-16
  • 打赏
  • 举报
回复
我的建议是:实践+看书。光看书如同雾里看花,即使看懂也不会有深刻的体会和理解;加上实践就使问题变的清晰。使用MFC可以加深对OOP的理解。
mach 2000-03-15
  • 打赏
  • 举报
回复
大家讲的好像都是oop和编程语言方面的,其实
oo的提出是由于在一些大型软件的开发中,传统的面向过程的软件生命周期法无法很好的解决问题,使用oo的设计方法在效率上可能不如结构化的设计,但由于其贴近人的自然思维方式,使得对于软件的需求(问题域)和实现(解决域)在形式上是一致的,很便于理解.
在oo的方法中oop不是最重要的,ooa和ood才是基础,只有通过ooa将问题域准确的提炼出来,并通过ood设计出一个真正能够解决该问题的模型后,再通过oop将这个模型实现,这时用何种语言已经不重要了,使用前面的设计结果,你可以用c++实现它,或在其他平台用java实现它,都很容易.没有ooa/d的过程,即使你用vc也不是真正的面向对象.
oo的精华就在于先通过ooa根据需求找出在该问题中有那些类,各个类之间有什么关系,然后通过ood细化它,整理出每个类的属性,方法等,并视需要添加一些实现该需求所需的其他类,如用户界面,任务管理,数据存储等.有了类模型后,再通过oop实现它,这是一个逐步求精的过程,如果一上来就是oop,那么你将直接陷入细节的处理中,反而无法看到系统的全貌了.
之所以很多人对于面向对象感到不好理解,是因为他们是从oop的角度来看的,管中窥豹,何以见其全体呢.
要学习oo,不妨找一些uml(通用建模语言)方面的资料,这可是国外现在流行的oo工具,通过各种图来实现ooa和ood,并可据此生成代码.visual studio98 中带的visual modeler就是一个uml case工具.
清华大学出版社的《软件工程导论》,里边有将近一半篇幅是讲面向对象的,写的还可以,书也便宜22.5元
王释之 2000-03-15
  • 打赏
  • 举报
回复
我同意guzhigang的意见,汤姆.斯旺是专家,他的<<C++编程秘诀>>写得挺好!
还有<<最新C++精华>>第二版。
我推荐外国的比较好!!
fupf88 2000-03-14
  • 打赏
  • 举报
回复
use MFC to program will help you know C++
guzhigang 2000-03-14
  • 打赏
  • 举报
回复
学好C++,必读汤姆.斯旺的《C++程序设计》,书名可能不太正确,记不清了。
fish007 2000-03-14
  • 打赏
  • 举报
回复
提供一个电子书籍的网址,相信你能找到有关的书:
http://www.lhmz.yn.cninfo.net/chenhao/
加载更多回复(1)

64,637

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧