什么是面向对象的程序设计思想
一种程序设计范型,同时也是一种程序开发的方法。对象指的是类的实例。它将对象作为程序的基本单元,将程序和数据封装其中,以提高软件的重用性、灵活性和扩展性。
面向对象程序设计可以看作一种在程序中包含各种独立而又互相调用的对象的思想,这与传统的思想刚好相反:传统的程序设计主张将程序看作一系列函数的集合,或者直接就是一系列对电脑下达的指令。
面向对象程序设计中的每一个对象都应该能够接受数据、处理数据并将数据传达给其它对象,因此它们都可以被看作一个小型的“机器”,即对象。
扩展资料
面向对象程序设计的优点:
1、数据抽象的概念可以在保持外部接口不变的情况下改变内部实现,从而减少甚至避免对外界的干扰。
2、通过继承大幅减少冗余的代码,并可以方便地扩展现有代码,提高编码效率,也减低了出错概率,降低软件维护的难度。
3、结合面向对象分析、面向对象设计,允许将问题域中的对象直接映射到程序中,减少软件开发过程中中间环节的转换过程。
4、通过对对象的辨别、划分可以将软件系统分割为若干相对为独立的部分,在一定程度上更便于控制软件复杂度。
5、以对象为中心的设计可以帮助开发人员从静态(属性)和动态(方法)两个方面把握问题,从而更好地实现系统。
6、通过对象的聚合、联合可以在保证封装与抽象的原则下实现对象在内在结构以及外在功能上的扩充,从而实现对象由低到高的升级。
参考资料来源:百度百科-面向对象程序设计
参考资料来源:百度百科-面向对象的程序设计
面向对象
面向对象(Object Oriented,OO)是当前计算机界关心的重点,它是90年代软件开发方法的主流。面向对象的概念和应用已超越了程序设计和软件开发,扩展到很宽的范围。如数据库系统、交互式界面、应用结构、应用平台、分布式系统、网络管理结构、CAD技术、人工智能等领域。
谈到面向对象,这方面的文章非常多。但是,明确地给出对象的定义或说明对象的定义的非常少——至少我现在还没有发现。其初,“面向对象”是专指在程序设计中采用封装、继承、抽象等设计方法。可是,这个定义显然不能再适合现在情况。面向对象的思想已经涉及到软件开发的各个方面。如,面向对象的分析(OOA,Object Oriented Analysis),面向对象的设计(OOD,Object Oriented Design)、以及我们经常说的面向对象的编程实现(OOP,Object Oriented Programming)。许多有关面向对象的文章都只是讲述在面向对象的开发中所需要注意的问题或所采用的比较好的设计方法。看这些文章只有真正懂得什么是对象,什么是面向对象,才能最大程度地对自己有所裨益。这一点,恐怕对初学者甚至是从事相关工作多年的人员也会对它们的概念模糊不清。
面向对象是当前计算机界关心的重点,它是90年代软件开发方法的主流。面向对象的概念和应用已超越了程序设计和软件开发,扩展到很宽的范围。如数据库系统、交互式界面、应用结构、应用平台、分布式系统、网络管理结构、CAD技术、人工智能等领域。
一、传统开发方法存在问题
1.软件重用性差
重用性是指同一事物不经修改或稍加修改就可多次重复使用的性质。软件重用性是软件工程追求的目标之一。
2.软件可维护性差
软件工程强调软件的可维护性,强调文档资料的重要性,规定最终的软件产品应该由完整、一致的配置成分组成。在软件开发过程中,始终强调软件的可读性、可修改性和可测试性是软件的重要的质量指标。实践证明,用传统方法开发出来的软件,维护时其费用和成本仍然很高,其原因是可修改性差,维护困难,导致可维护性差。
3.开发出的软件不能满足用户需要
用传统的结构化方法开发大型软件系统涉及各种不同领域的知识,在开发需求模糊或需求动态变化的系统时,所开发出的软件系统往往不能真正满足用户的需要。
用结构化方法开发的软件,其稳定性、可修改性和可重用性都比较差,这是因为结构化方法的本质是功能分解,从代表目标系统整体功能的单个处理着手,自顶向下不断把复杂的处理分解为子处理,这样一层一层的分解下去,直到仅剩下若干个容易实现的子处理功能为止,然后用相应的工具来描述各个最低层的处理。因此,结构化方法是围绕实现处理功能的“过程”来构造系统的。然而,用户需求的变化大部分是针对功能的,因此,这种变化对于基于过程的设计来说是灾难性的。用这种方法设计出来的系统结构常常是不稳定的 ,用户需求的变化往往造成系统结构的较大变化,从而需要花费很大代价才能实现这种变化。
二、面向对象的基本概念
(1)对象。
对象是人们要进行研究的任何事物,从最简单的整数到复杂的飞机等均可看作对象,它不仅能表示具体的事物,还能表示抽象的规则、计划或事件。
(2)对象的状态和行为。
对象具有状态,一个对象用数据值来描述它的状态。
对象还有操作,用于改变对象的状态,对象及其操作就是对象的行为。
对象实现了数据和操作的结合,使数据和操作封装于对象的统一体中
(3)类。
具有相同或相似性质的对象的抽象就是类。因此,对象的抽象是类,类的具体化就是对象,也可以说类的实例是对象。
类具有属性,它是对象的状态的抽象,用数据结构来描述类的属性。
类具有操作,它是对象的行为的抽象,用操作名和实现该操作的方法来描述。
(4)类的结构。
在客观世界中有若干类,这些类之间有一定的结构关系。通常有两种主要的结构关系,即一般--具体结构关系,整体--部分结构关系。
①一般——具体结构称为分类结构,也可以说是“或”关系,或者是“is a”关系。
②整体——部分结构称为组装结构,它们之间的关系是一种“与”关系,或者是“has a”关系。
(5)消息和方法。
对象之间进行通信的结构叫做消息。在对象的操作中,当一个消息发送给某个对象时,消息包含接收对象去执行某种操作的信息。发送一条消息至少要包括说明接受消息的对象名、发送给该对象的消息名(即对象名、方法名)。一般还要对参数加以说明,参数可以是认识该消息的对象所知道的变量名,或者是所有对象都知道的全局变量名。
类中操作的实现过程叫做方法,一个方法有方法名、参数、方法体。消息传递如图10-1所示。
二、面向对象的特征
(1)对象唯一性。
每个对象都有自身唯一的标识,通过这种标识,可找到相应的对象。在对象的整个生命期中,它的标识都不改变,不同的对象不能有相同的标识。
(2)分类性。
分类性是指将具有一致的数据结构(属性)和行为(操作)的对象抽象成类。一个类就是这样一种抽象,它反映了与应用有关的重要性质,而忽略其他一些无关内容。任何类的划分都是主观的,但必须与具体的应用有关。
(3)继承性。
继承性是子类自动共享父类数据结构和方法的机制,这是类之间的一种关系。在定义和实现一个类的时候,可以在一个已经存在的类的基础之上来进行,把这个已经存在的类所定义的内容作为自己的内容,并加入若干新的内容。
继承性是面向对象程序设计语言不同于其它语言的最重要的特点,是其他语言所没有的。
在类层次中,子类只继承一个父类的数据结构和方法,则称为单重继承。
在类层次中,子类继承了多个父类的数据结构和方法,则称为多重继承。
在软件开发中,类的继承性使所建立的软件具有开放性、可扩充性,这是信息组织与分类的行之有效的方法,它简化了对象、类的创建工作量,增加了代码的可重性。
采用继承性,提供了类的规范的等级结构。通过类的继承关系,使公共的特性能够共享,提高了软件的重用性。
(4)多态性(多形性)
多态性使指相同的操作或函数、过程可作用于多种类型的对象上并获得不同的结果。不同的对象,收到同一消息可以产生不同的结果,这种现象称为多态性。
多态性允许每个对象以适合自身的方式去响应共同的消息。
多态性增强了软件的灵活性和重用性。
http://zhidao.baidu.com/question/77842507.html?si=2
对象,强调物体属性, 比如实现逻辑 物体A 移动到B点,
对象思想就是要你想象 你吧A 看成什么 你可以吧它看成车, 用车轮的方式(方法)让它走动, 可以看成托运(方法)的方式拉过去。
面向对象的方法 是一类物体的属性 所具备的 行为,理论上 可以参照面向过程的函数去理解
儿面向过程, 我不关心你用什么方式,看成什么 ,管你是推,是拽,只要你运过来就行 相对而言 没有针对性
楼主可以 设想一下网络游戏, 你玩的游戏 的怪物, 是分种类的, 他们都是自动的东西, 没人去手动生成, 一类怪物 有一类招数和样子, 行为属性, 这就是对象思想
面向
象
面向
象(Object
Oriented,OO)
前计算机界关
重点
90
代软件
发
主流
面向
象
概念
应用已超越
程序设计
软件
发
扩展
宽
范围
数据库系统、交互式界面、应用结构、应用平台、
布式系统、网络管理结构、CAD技术、
工智能等领域
谈
面向
象
面
文章非
明确
给
象
定义或说明
象
定义
非
少——至少我现
没
发现
其初
面向
象
专指
程序设计
采用封装、继承、抽象等设计
定义显
能再适合现
情况
面向
象
思想已经涉及
软件
发
各
面
面向
象
析(OOA
Object
Oriented
Analysis)
面向
象
设计(OOD
Object
Oriented
Design)、
及我
经
说
面向
象
编程实现(OOP
Object
Oriented
Programming)
许
关面向
象
文章都
讲述
面向
象
发
所需要注意
问题或所采用
比较
设计
看
些文章
真
懂
象
面向
象
才能
程度
自
所裨益
点
恐怕
初
者甚至
事相关工作
员
概念模糊
清
面向
象
前计算机界关
重点
90
代软件
发
主流
面向
象
概念
应用已超越
程序设计
软件
发
扩展
宽
范围
数据库系统、交互式界面、应用结构、应用平台、
布式系统、网络管理结构、CAD技术、
工智能等领域
、传统
发
存
问题
1.软件重用性差
重用性
指同
事物
经修改或稍加修改
重复使用
性质
软件重用性
软件工程追求
目标
2.软件
维护性差
软件工程强调软件
维护性
强调文档资料
重要性
规定
终
软件产品应该由完整、
致
配置
组
软件
发
程
始终强调软件
读性、
修改性
测试性
软件
重要
质量指标
实践证明
用传统
发
软件
维护
其费用
本仍
高
其原
修改性差
维护困难
导致
维护性差
3.
发
软件
能满足用户需要
用传统
结构化
发
型软件系统涉及各种
同领域
知识
发需求模糊或需求
态变化
系统
所
发
软件系统往往
能真
满足用户
需要
用结构化
发
软件
其稳定性、
修改性
重用性都比较差
结构化
本质
功能
解
代表目标系统整体功能
单
处理着手
自顶向
断
复杂
处理
解
处理
层
层
解
直
仅剩
若干
容易实现
处理功能
止
用相应
工具
描述各
低层
处理
结构化
围绕实现处理功能
程
构造系统
用户需求
变化
部
针
功能
种变化
于基于
程
设计
说
灾难性
用
种
设计
系统结构
稳定
用户需求
变化往往造
系统结构
较
变化
需要花费
代价才能实现
种变化
二、面向
象
基本概念
(1)
象
象
要进行研究
任何事物
简单
整数
复杂
飞机等均
看作
象
仅能表示具体
事物
能表示抽象
规则、计划或事件
(2)
象
状态
行
象具
状态
象用数据值
描述
状态
象
操作
用于改变
象
状态
象及其操作
象
行
象实现
数据
操作
结合
使数据
操作封装于
象
统
体
(3)类
具
相同或相似性质
象
抽象
类
象
抽象
类
类
具体化
象
说类
实例
象
类具
属性
象
状态
抽象
用数据结构
描述类
属性
类具
操作
象
行
抽象
用操作名
实现该操作
描述
(4)类
结构
客观世界
若干类
些类
间
定
结构关系
通
两种主要
结构关系
即
般--具体结构关系
整体--部
结构关系
①
般——具体结构称
类结构
说
或
关系
或者
is
a
关系
②整体——部
结构称
组装结构
间
关系
种
与
关系
或者
has
a
关系
(5)消息
象
间进行通信
结构叫做消息
象
操作
消息发送给某
象
消息包含接收
象
执行某种操作
信息
发送
条消息至少要包括说明接受消息
象名、发送给该
象
消息名(即
象名、
名)
般
要
参数加
说明
参数
认识该消息
象所知道
变量名
或者
所
象都知道
全局变量名
类
操作
实现
程叫做
名、参数、
体
消息传递
图10-1所示
二、面向
象
特征
(1)
象唯
性
每
象都
自身唯
标识
通
种标识
找
相应
象
象
整
命期
标识都
改变
同
象
能
相同
标识
(2)
类性
类性
指
具
致
数据结构(属性)
行
(操作)
象抽象
类
类
种抽象
反映
与应用
关
重要性质
忽略其
些
关内容
任何类
划
都
主观
必须与具体
应用
关
(3)继承性
继承性
类自
共享父类数据结构
机制
类
间
种关系
定义
实现
类
候
已经存
类
基础
进行
已经存
类所定义
内容作
自
内容
并加入若干新
内容
继承性
面向
象程序设计语言
同于其
语言
重要
特点
其
语言所没
类层
类
继承
父类
数据结构
则称
单重继承
类层
类继承
父类
数据结构
则称
重继承
软件
发
类
继承性使所建立
软件具
放性、
扩充性
信息组织与
类
行
效
简化
象、类
创建工作量
增加
代码
重性
采用继承性
提供
类
规范
等级结构
通
类
继承关系
使公共
特性能够共享
提高
软件
重用性
(4)
态性(
形性)
态性使指相同
操作或函数、
程
作用于
种类型
象
并获
同
结
同
象
收
同
消息
产
同
结
种现象称
态性
态性允许每
象
适合自身
式
响应共同
消息
态性增强
软件
灵
性
重用性
http://zhidao.baidu.com/question/77842507.html?si=2
象
强调物体属性
比
实现逻辑
物体A
移
B点
象思想
要
想象
吧A
看
吧
看
车
用车轮
式(
)让
走
看
托运(
)
式拉
面向
象
类物体
属性
所具备
行
理论
参照面向
程
函数
理解
面向
程
我
关
用
式
看
管
推
拽
要
运
行
相
言
没
针
性
楼主
设想
网络游戏
玩
游戏
怪物
种类
都
自
东西
没
手
类怪物
类招数
行
属性
象思想
如果是答题或者面试的话就回答抽象,封装,继承,多态,就可以了。
什么是面向对象?
面向对象(ObjectOriented)是软件开发方法,一种编程范式。面向对象的概念和应用已超越了程序设计和软件开发,扩展到如数据库系统、交互式界面、应用结构、应用平台、分布式系统、网络管理结构、CAD技术、人工智能等领域。面向对象是一种对现实世界理解和抽象的方法,是计算机编程技术发展到一定阶段后的产物。面向...
什么是面向对象开发程序的思想??
同时,面向对象能有效提高编程的效率,通过封装技术,消息机制可以像搭积木的一样快速开发出一个全新的系统。面向对象是指一种程序设计范型,同时也是一种程序开发的方法。对象指的是类的集合。它将对象作为程序的基本单元,将程序和数据封装其中,以提高软件的重用性、灵活性和扩展性。面向对象的程序设计...
什么是程序设计的结构化程序设计和面向对象程序设计方法?
在结构化程序设计中,任何程序段的编写都基于3种结构:分支结构、循环结构和顺序结构。程序具有明显的模块化特征,每个程序模块具有惟一的出口和入口语句。结构化程序的结构简单清晰,模块化强,描述方式贴近人们习惯的推理式思维方式,因此可读性强。2、面向对象程序设计 面向对象程序设计方法是尽可能模拟人类...
在C语言中,什么叫做“面向对象”,什么叫做“面向过程”?
功能上的统一保证了面向对象设计的可扩展性。比如我要加入悔棋的功能,如果要改动面向过程的设计,那么从输入到判断到显示这一连串的步骤都要改动,甚至步骤之间的循序都要进行大规模调整。如果是面向对象的话,只用改动棋盘对象就行了,棋盘系统保存了黑白双方的棋谱,简单回溯就可以了,而显示和规则判断则...
什么是面向对象技术
问题三:什么是面向对象对象,什么是面向过程,什么是面向对象 面向对象技术是一种以对象为基础,以事件或消息来驱动对象执行处理的程序设计技术。它具有抽象性、封装性、继承性及多态性。 面向对象与面向过程程序设计有如下不同: (1)面向过程程序设计方法采用函数(或过程)来描述对数据的操作,但又将函数与其操作的数...
面向对象的程序设计语言是?
相关举例如下:1、Smalltalk:Smalltalk被公认为历史上第二个面向对象的程序设计语言和第一个真正的集成开发环境 (IDE)。由Alan Kay,Dan Ingalls,Ted Kaehler,Adele Goldberg等于70年代初在Xerox PARC开发。Smalltalk对其它众多的程序设计语言的产生起到了极大的推动作用,主要有:Objective-C,Actor, Java...
2. 面向过程的程序设计和面向对象的程序设计分别指什么?两者分别有什 ...
一、面向过程概念 面向过程是一种以过程为中心的编程思想,面向过程编程是基于“冯·诺依曼”模型的。在这种模型中,程序与变量一起存储,程序中包含一系列指令,并把这些指令以函数的方式组织起来。特性 自顶向下、逐步求精、模块化 优点 性能比面向对象高,因为类调用需要实例化,开销比较大,比较消耗...
了解面向过程和面向对象
一个复杂问题,肯定是由若干稍简单的问题构成的。模块化是把程序要解决的总目标分解为子目标,再进一步分解为具体的小目标,把每一个小目标称为一个模块。2.面向对象的程序设计(Object-Oriented Programming)面向对象的程序设计方法强调直接以现实世界中的物体为中心来思考和认识问题,并按照这些事物的本质...
什么是面向过程的编程语言和面向对象的编程语言
它的最大特点是能够大幅度的提高软件项目的成功率,减少日后的维护费用,提高软件的可移植性和可靠性。面向对象的程序设计立意于创建软件重用代码,具备更好地模拟现实世界环境的能力,这使它被公认为是自上而下编程的优胜者。它通过给程序中加入扩展语句,把函数“封装”进编程所必需的“对象”中。面向...
有没有一种面向对象的编程语言?
1、Smalltalk Smalltalk被公认为历史上第二个面向对象的程序设计语言和第一个真正的集成开发环境 (IDE)。由Alan Kay,Dan Ingalls,Ted Kaehler,Adele Goldberg等于70年代初在Xerox PARC开发。Smalltalk对其它众多的程序设计语言的产生起到了极大的推动作用,主要有:Objective-C,Actor, Java 和Ruby等。90...
史审丙氨: 面向对象(Object Oriented,OO)是当前计算机界关心的重点,它是90年代软件开发方法的主流.面向对象的概念和应用已超越了程序设计和软件开发,扩展到很宽的范围.如数据库系统、交互式界面、应用结构、应用平台、分布式系统、网络...
方正县13049452021: 面向对象的程序设计思想是什么??
史审丙氨: 界面化的.
方正县13049452021: 面向对象程序设计的基本思想是什么?求 - ?
史审丙氨: 简单来说,自己的问题自己解决,就是扩展标准c中的结构,组成具体对象属性,这些属性有些是让外面能看到,能读写操作的,有些是隐藏的; 结构中放置一些操作这些参数的函数,也是分成可见和不可见两种 因此对于使用(调用)者来说,对象就是个黑匣子,不用关心具体功能是如何实现的,只需要根据其公开的特性操作即可 因此面向对象设计的思路一个是自顶向下模块化设计,另一个就是黑盒子
方正县13049452021: 什么是面向对象开发程序的思想?? - ?
史审丙氨: 面向对象(Object Oriented,OO)是软件开发方法.面向对象的概念和应用已超越了程序设计和软件开发,扩展到如数据库系统、交互式界面、应用结构、应用平台、分布式系统、网络管理结构、CAD技术、人工智能等领域.面向对象是一种对...
方正县13049452021: 什么是面向对象程序设计的基本思想 - ?
史审丙氨: 1. 一切皆对象(Everything is an object) 2.把相关对象的共同部分(属性和动作)进行抽象,形成一个类.也就是说,不同对象通过继承(extends)可以共享这部分内容.通过不断归纳共同部分,就可形成不同层次的类(父类、子类). 3.其他诸如封装、多态.可参考百度百科中---PHP5面向对象编程 我也是刚学的,呵呵.
方正县13049452021: Java面向对象的程序设计思想是什么? - ?
史审丙氨: 面向对象的程序设计简称OOP是当今主流的程序设计范型,面向对象的程序是由对象组成的,每个对象包含对用户公开的特定功能部分和隐藏的实现部分.万物皆对象的概念,由具有共同特征和行为的对象抽象出此类对象的模型称之为“类”
方正县13049452021: 什么是面向对象的编程思想? - ?
史审丙氨: 看了很多面向对象的定义,绝对这句最妥切,面向对象的web开发是面向对象开发的一种,我们要离开语言谈思想,如下:从现实世界中客观存在的事物(即对象)出发来构造软件系统,并在系统构造中尽可能运用人类的自然思维方式,强调直接以问题域(现实世界)中的事物为中心来思考问题,认识问题,并根据这些事物的本质特点,把它们抽象地表示为系统中的对象,作为系统的基本构成单位(而不是用一些与现实世界中的事物相关比较远,并且没有对应关系的其它概念来构造系统).这可以使系统直接地映射问题域,保持问题域中事物及其相互关系的本来面貌.
方正县13049452021: 帮忙 举例说明什么是面向对象程序设计的思想? 谢谢 - ?
史审丙氨: 面向对象的程序设计语言必须有描述对象及其相互之间关系的语言成分.这些程序设计语言可以归纳为以下几类:系统中一切皆为对象;对象是属性及其操作的封装体;对象可按其性质划分为类,对象成为类的实例;实例关系和继承关系是对象之间的静态关系;消息传递是对象之间动态联系的唯一形式,也是计算的唯一形式;方法是消息的序列.好比一个一个的人.这个人拿着一把刀.人与刀都是实物.所以说两个的关系就是对象,那么人有什么属性呢?比人有攻击力=100,刀有攻击力150 那么人+刀就是对象
方正县13049452021: 到底什么是面向对象的程序设计?
史审丙氨: 所谓面向对象的程序设计,就是把面向对象的思想应用到软件工程中,并指导开发维护软件. 对象是由数据和容许的操作组成的封装体,所谓面向对象,就是基于对象的概念,以对象为中心,类和继承为构造机制,认识了解刻画客观世界以及开发出相应的软件系统. 面向对象的程序设计(OOP)并不是刚刚提出来的,主要是由于C++和Java这类语言的传播,OOP最近才显得越来越重要了.为什么面向对象的设计如此流行呢?从理论上讲,用面向对象的语言可以处理任何其他计算机语言所能完成的事情.然而当建立基于智能体的模型时,OOP对于开始的程序员和后来的程序读者都表现出了很大的优势.
方正县13049452021: 什么是面向对象的编程思想?可以用一个形象的例子说明一下么? - ?
史审丙氨: 时间万物皆是对象,也就是说你能看得见的或者看不见的东西,只要实际存在,它就是对象.对象是就某个具体个体而言的.比如你自己的班级,对于你来说,你们班就是一个班级对象.而班级中的某个具体的人,他也是一个对象.面向对象...