- 论坛徽章:
- 8
|
原帖由 flw 于 2009-3-31 14:09 发表
别本质本质的,C 程序员的最大的毛病就是喜欢说“本质上”。你的本质还是碳水化合物呢。
本质和表象是不可分隔的整体。
抽象有很多种方法,OO 只不过是其中一种。
你用别的方法达到了 OO 想要达到的目的, ...
看问题的角度不同而已。
http://en.wikipedia.org/wiki/Object_oriented
Object-oriented programming (OOP) is a programming paradigm that uses "objects" and their interactions to design applications and computer programs. Programming techniques may include features such as information hiding, data abstraction, encapsulation, modularity, polymorphism, and inheritance. It was not commonly used in mainstream software application development until the early 1990s. Many modern programming languages now support OOP.
如上,如果抠字眼的话,一个文件描述符就代表着一个文件对象(对象);这个文件对象可以通过fwrite/fread方法来访问和操作(方法),这两个接口也只能操纵文件描述符(或代表文件描述符的句柄);除了基本的文件描述符区域,特定的设备文件还有自己特定的数据区,可以通过相对应的xxctl类接口操纵这些特殊区域(继承)……
请问,这个表述是否符合面向对象标准?
现在我把它的设计完全用面向对象的术语描述出来,然后再用C实现一遍,即使最终源代码一模一样,也是前者绝对不是面向对象而后来的实现才是面向对象的,哪怕它们最终写出的源码一模一样?
或者说,只有使用面向对象术语,才算“正宗”的面向对象,否则就是名不正言不顺、更不是主观上故意向面向对象靠拢的,自然就不能算面向对象?
或者,你的意思是: 必须先照着OOC之类教材搞出个C模拟OO框架出来,然后用这个框架搭建才叫面向对象?
不妨看看GTK+,看看它没有模拟任何面向对象关键字和语法,它的作者是否时时处处都受着面向对象的影响?它的整体设计是不是面向对象的?
我想,你的意思总不会是不用面向对象语言就写不出面向对象程序吧?
事实上,我认为你完全没有理解我的意思。
我的意思就是说:
虽然设计时还没有面向对象概念,但从面向对象的角度去看,泛文件设计称得上是真正的面向对象。
只有从那些并非刻意要面向对象的系统出发去发现它们的优点,并找到面向对象的对应物,这才有可能真正理解面向对象最基本最重要的是什么,才能真正朴素的认识到面向对象的好处;也才知道面向对象要抽象的究竟是什么。
相反,嚷嚷了很久面向对象,熟记了很多术语特性特殊用法,究竟为了什么?就为了争执生僻语言特性?!
[ 本帖最后由 shan_ghost 于 2009-3-31 15:10 编辑 ] |
|