首页 新闻 会员 周边 捐助

面向对象与非面向对象的区别?

0
悬赏园豆:5 [已解决问题] 解决于 2011-10-21 08:56

面向对象与非面向对象的区别?
意思上是,封装,继承,多态
-----------------------------------
以下是我理解的意思:

封装:把自己三层里的数据层封装生成DLL,然后要使用数据层的时候去调DLL里的方法

继承:把通用的方法写成通用的共用的,然后在项目使用过程中有类似的功能就去继承通用的类和方法去实现。而且不用重新去写一个全新的方法去实现

多态:不同的类调用同一个函数,实现不同的功能

现在问题是:

-------------------------------------

1,我上面的理解对了吗?还是理解错了?还是只理解了一点点皮毛?

2,这些在具体的项目代码中的体现是怎么样的?

3,我写的代码,他们都说我写的不是面向对象,或者是面向对象用到的地方非常少,但我功能全部都实现了,这问题又来,功能都能实现了,面向对向的好处是在那?功能重用?效率高?好维护?


有劳大家知道大帮忙解决一下这问题?

jason2013的主页 jason2013 | 小虾三级 | 园豆:1998
提问于:2011-10-20 09:15
< >
分享
最佳答案
0

1、你的理解错了,偏差不是一点点——回答得比较直接别介意
2、至于代码中的体现,一时还真不知怎么说——如果你的代码里常有抽象类、接口、重写等等就说明代码是面向对象的,但仅仅这些不能说明就是是好代码。
3、面向对象好处:重用和可维护性是一定的(前提是够好的设计,如果设计不好还不如面向过程),面向对象没有任何效率优势,相反,平庸的或差的设计反而降低效率。

说到面向对象,基本会想到封装、继承、多态这三个特性。不过我记得上学时,教科书里说的是四个特性,还有一个就是抽象,我觉得这才是面向对象的重中之重。
面向对象是一个大的概念,分析、设计、编码都可以是面向对象的。面向对象是一种思想,不要把它局限于代码这个层面上去理解。

个人不建议你现在就去看设计模式,一方面因为没有面向对象基础直接看不好理解,另一方面那只是面向对象的一个局部。
建议你对面向对象有个系统认识,对各个概念和原则有所了解再看设计模式。

收获园豆:1
Higel | 菜鸟二级 |园豆:464 | 2011-10-20 17:53

非常感谢你的指点,再次感谢!!!

jason2013 | 园豆:1998 (小虾三级) | 2011-10-20 18:04
其他回答(5)
0

建议你去看下设计模式,要不和你说估计也起不了多大的作用。

收获园豆:1
LCM | 园豆:6876 (大侠五级) | 2011-10-20 09:23
0

我也想知道,求解..继承我跟你是同一理解

深蓝色梦想 | 园豆:6 (初学一级) | 2011-10-20 09:23

大家都忙去了,没人帮忙解决一下啊

支持(0) 反对(0) jason2013 | 园豆:1998 (小虾三级) | 2011-10-20 10:22
0

多练习。。

收获园豆:1
鸟儿鸟儿快点飞 | 园豆:217 (菜鸟二级) | 2011-10-20 10:55
0

给你推荐一本书 《大话设计模式》 通过这本书你会发现你的理解有偏差

收获园豆:1
Arthur1024 | 园豆:91 (初学一级) | 2011-10-20 14:51
0

面向对象程序设计中的概念主要包括:对象、类、数据抽象、继承、动态绑定、数据封装、多态性、消息传递。通过这些概念面向对象的思想得到了具体的体现。

 

  1)对象 对象是运行期的基本实体,它是一个封装了数据和操作这些数据的代码的逻辑实体。

 

  2)类 类是具有相同类型的对象的抽象。一个对象所包含的所有数据和代码可以通过类来构造。

 

  3)封装 封装是将数据和代码捆绑到一起,避免了外界的干扰和不确定性。对象的某些数据和代码可以是私有的,不能被外界访问,以此实现对数据和代码不同级别的访问权限。

 

  4)继承 继承是让某个类型的对象获得另一个类型的对象的特征。通过继承可以实现代码的重用:从已存在的类派生出的一个新类将自动具有原来那个类的特性,同时,它还可以拥有自己的新特性。

 

  5)多态 多态是指不同事物具有不同表现形式的能力。多态机制使具有不同内部结构的对象可以共享相同的外部接口,通过这种方式减少代码的复杂度。

 

  6)动态绑定 绑定指的是将一个过程调用与相应代码链接起来的行为。动态绑定是指与给定的过程调用相关联的代码只有在运行期才可知的一种绑定,它是多态实现的具体形式。

 

  7)消息传递 对象之间需要相互沟通,沟通的途径就是对象之间收发信息。消息内容包括接收消息的对象的标识,需要调用的函数的标识,以及必要的信息。消息传递的概念使得对现实世界的描述更容易。

 

  8)方法 方法(Method)是定义一个类可以做的,但不一定会去做的事。

 

 

面向对象主要特征:

 

  封装性:封装是一种信息隐蔽技术,它体现于类的说明,是对象的重要特性。封装使数据和加工该数据的方法(函数)封装为一个整体,以实现独立性很强的模块,使得用户只能见到对象的外特性(对象能接受哪些消息,具有那些处理能力),而对象的内特性(保存内部状态的私有数据和实现加工能力的算法)对用户是隐蔽的。封装的目的在于把对象的设计者和对象者的使用分开,使用者不必知晓行为实现的细节,只须用设计者提供的消息来访问该对象。

 

  继承性:继承性是子类自动共享父类之间数据和方法的机制。它由类的派生功能体现。一个类直接继承其它类的全部描述,同时可修改和扩充。继承具有传递性。继承分为单继承(一个子类只有一父类)和多重继承(一个类有多个父类)。类的对象是各自封闭的,如果没继承性机制,则类对象中数据、方法就会出现大量重复。继承不仅支持系统的可重用性,而且还促进系统的可扩充性。

 

  多态性:对象根据所接收的消息而做出动作。同一消息为不同的对象接受时可产生完全不同的行动,这种现象称为多态性。利用多态性用户可发送一个通用的信息,而将所有的实现细节都留给接受消息的对象自行决定,如是,同一消息即可调用不同的方法。例如:Print消息被发送给一图或表时调用的打印方法与将同样的Print消息发送给一正文文件而调用的打印方法会完全不同。多态性的实现受到继承性的支持,利用类继承的层次关系,把具有通用功能的协议存放在类层次中尽可能高的地方,而将实现这一功能的不同方法置于较低层次,这样,在这些低层次上生成的对象就能给通用消息以不同的响应。在OOPL中可通过在派生类中重定义基类函数(定义为重载函数或虚函数)来实现多态性。

收获园豆:1
幸福的猪lin | 园豆:211 (菜鸟二级) | 2011-10-20 16:47
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册