黑马程序员技术交流社区
标题:
面向对象思想
[打印本页]
作者:
2012
时间:
2013-9-17 14:36
标题:
面向对象思想
本帖最后由 杨增坤 于 2013-9-18 11:24 编辑
只要一提到面向对象,我脑海中就出现了面向对象的三大特征,封装,继承,多态。
只知道书面含义,但在实际生活中,不能灵活的将面向对象的思想。
比如,面对一扇门,一个条鱼,我们应该怎么使用面向对象的思想对这些进行分析呢?
希望大神们能给我一点意见。
作者:
雪龙
时间:
2013-9-17 14:58
本帖最后由 雪龙 于 2013-9-17 15:01 编辑
面向对象设计把握一个重要的经验:谁拥有数据,谁就对外提供操作这些数据的方法。就是明确把谁设计成为一个类,谁是研究对象。
典型的案例:人在黑板上画圆, 创建的类 : 圆
列车司机紧急刹车,创建的类 :列车
售货员统计收获小票的金额,创建的类 : 小票
你把门关上了等。创建的类 : 门
这是张老师的经典总结
这里还有一个不错的帖子你看看
教你30分钟内快速理解面向对象思想
http://bbs.itheima.com/thread-40931-1-1.html
(出处: 黑马程序员训练营论坛)
作者:
杨修
时间:
2013-9-17 15:29
面向对象好处简单一句话:就是从执行者变成调用者。
面向对象就是把一些功能根据他的所属,封装到对象的内部。在C里面,通常都是在程序中定义一个个的方法,它里面就是一个个方法之间互相作用。而面向对象的基本功能单位使对象,对象里面定义对象的方法,
也就是说,在一个对象里面先建立其他对象的引用,然后引用的对象来对象内部的方法。
举个例子:公安机关在执行特殊案件需要向部队支援的时候,他首先要找到某一个部队,而不是直接找士兵。这就是先有了部队对象,然后调用了部队上层的管理功能,执行任务。
作者:
❀瑶池里的鱼
时间:
2013-9-17 15:54
“面向对象”与“面向过程”是两个不同的概念。
“面向过程”就是一步一步的,后面的必须在前面的做完才能轮流到。
“面向对象”就是面向具体的事物。比如:造车。“面向过程”,就是先造车轮,再造发动机,再造机壳。。。。。依次制造,造完前面的,才能造后面的。
“面向对象”,就是不分前后,造完所有的(车轮,发动机,机壳。。。),再组装起来。面向的是具体的事物。
作者:
1098918523
时间:
2013-9-17 18:01
面向对象其实是现实世界模型的自然延伸。现实世界中任何实体都可以看作是对象。对象之间通过消息相互作用。另外,现实世界中任何实体都可归属于某类事物,任何对象都是某一类事物的实例。如果说传统的面向过程式编程语言是以过程为中心以算法为驱动的话,面向对象的编程语言则是以对象为中心以消息为驱动。用公式表示,过程式编程语言为:程序=算法+数据;面向对象编程语言为:程序=对象+消息。
所有面向对象编程语言都支持三个概念:封装、多态性和继承,Java也不例外。现实世界中的对象均有属性和行为,映射到计算机程序上,属性则表示对象的数据,行为表示对象的方法(其作用是处理数据或同外界交互)。所谓封装,就是用一个自主式框架把对象的数据和方法联在一起形成一个整体。可以说,对象是支持封装的手段,是封装的基本单位。Java语言的封装性较强,因为Java无全局变量,无主函数,在Java中绝大部分成员是对象,只有简单的数字类型、字符类型和布尔类型除外。而对于这些类型,Java也提供了相应的对象类型以便与其他对象交互操作。
多态性就是多种表现形式,具体来说,可以用"一个对外接口,多个内在实现方法"表示。举一个例子,计算机中的堆栈可以存储各种格式的数据,包括整型,浮点或字符。不管存储的是何种数据,堆栈的算法实现是一样的。针对不同的数据类型,编程人员不必手工选择,只需使用统一接口名,系统可自动选择。运算符重载(operator overload)一直被认为是一种优秀的多态机制体现,但由于考虑到它会使程序变得难以理解,所以Java最后还是把它取消了。
继承是指一个对象直接使用另一对象的属性和方法。事实上,我们遇到的很多实体都有继承的含义。例如,若把汽车看成一个实体,它可以分成多个子实体,如:卡车、公共汽车等。这些子实体都具有汽车的特性,因此,汽车是它们的"父亲",而这些子实体则是汽车的"孩子"。Java提供给用户一系列类(class),Java的类有层次结构,子类可以继承父类的属性和方法。与另外一些面向对象编程语言不同,Java只支持单一继承。
作者:
javamov
时间:
2013-9-17 20:25
一扇门
关门的功能是门,因为是门在关门;开门的功能也是门,因为是门开门,我们
只是调用了开门的功能和关门的功能。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2