什么是面向对象的程序设计思想 什么是面向对象程序设计的基本思想

作者&投稿:段欢 (若有异议请与网页底部的电邮联系)

一种程序设计范型,同时也是一种程序开发的方法。对象指的是类的实例。它将对象作为程序的基本单元,将程序和数据封装其中,以提高软件的重用性、灵活性和扩展性。

面向对象程序设计可以看作一种在程序中包含各种独立而又互相调用的对象的思想,这与传统的思想刚好相反:传统的程序设计主张将程序看作一系列函数的集合,或者直接就是一系列对电脑下达的指令。

面向对象程序设计中的每一个对象都应该能够接受数据、处理数据并将数据传达给其它对象,因此它们都可以被看作一个小型的“机器”,即对象。



扩展资料

面向对象程序设计的优点:

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




用车轮
式(
)让


托运(

式拉
面向

类物体
属性
所具备

理论
参照面向

函数
理解
面向

















楼主
设想
网络游戏

游戏
怪物
种类


东西


类怪物
类招数

属性
象思想



如果是答题或者面试的话就回答抽象,封装,继承,多态,就可以了。

面向对象程序设计的发展背景,核心思想是什么?~



什么是面向对象的程序设计语言?
答:所谓面向对象的程序设计,就是把面向对象的思想应用到软件工程中,并指导开发维护软件。 对象是由数据和容许的操作组成的封装体,所谓面向对象,就是基于对象的概念,以对象为中心,类和继承为构造机制,认识了解刻画客观世界以及开发出相应的软件系统。 面向对象的程序设计(OOP)并不是刚刚提出来的...

面向对象的程序设计语言是什么?
答:面向对象的采用方法从问题域表示到面向对象分析,再到面向对象设计与实现始终稳定不变。一致的表示方法不但有利于在软件开发过程中始终使用统一的概念,也有利于维护人员理解软件的各种配置成分。(2)可重用性。为了能带来可观的商业利益.必须在更广泛的范围中运用重用机制,而不是仅仅在程序设计这个层次上...

什么是面向对象程序设计的基本思想
答:1. 一切皆对象(Everything is an object)2。把相关对象的共同部分(属性和动作)进行抽象,形成一个类。也就是说,不同对象通过继承(extends)可以共享这部分内容。通过不断归纳共同部分,就可形成不同层次的类(父类、子类)。3。其他诸如封装、多态。可参考百度百科中---PHP5面向对象编程 我也是...

什么是面向对象编程思想?
答:面相对象不是某一种语言的特性,而是一种编程思想。面向对象的编程的主要思想是把构成问题的各个事物分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描述一个事物在解决问题的过程中经历的步骤和行为。面向对象的三大特征分别是:封装、继承、多态,这三者是面向对象编程的基本要素 面向对象编程...

程序设计中面向对象指的什么
答:面向对象是一种程序设计方法,它以对象作为基本的单元来构建系统,它利用对象将系统的复杂性隐藏在对象里(也就是常说的封装),从而构建大型的工业级系统和大型系统(注意是工业及系统和大型软件系统而不是播放器等小型的系统),当然也可以用与小型软件程序的开发。面向对象包括三个过程:面向对象分析(...

什么是面向对象的程序设计
答:什么是面向对象的设计思想?也许有不少初学者对这个概念还有许多不明白的地方,特别是这个处于新旧思想交替的时代,许多人刚刚学完现在看来是快要淘汰的只是面向过程的 语言。他们的脑子还没有脱离面向过程思想的束缚,抬头却发现,“面向对象”早已经流行 开来,这个陌生的词漫天飞舞。随便拿起一本流行计算机技术书籍,那里会...

2. 面向过程的程序设计和面向对象的程序设计分别指什么?两者分别有什 ...
答:一、面向过程概念 面向过程是一种以过程为中心的编程思想,面向过程编程是基于“冯·诺依曼”模型的。在这种模型中,程序与变量一起存储,程序中包含一系列指令,并把这些指令以函数的方式组织起来。特性 自顶向下、逐步求精、模块化 优点 性能比面向对象高,因为类调用需要实例化,开销比较大,比较消耗...

什么是面向对象编程?
答:一.前言 其实不管是java还是.net都是属于面向对象程序设计语言,归根结底,它们都离不开面向对象,所以什么是面向对象呢,意思就是object-oriented将对数据和对数据的操作作为一个相互依赖的关系、不可分割的整体,才用信息隐蔽技术和数据抽象,更简单地解决现实当中的问题!上面的概念比较抽象,这里涉及到一...

面向对象程序设计的三大思想是什么?
答:封装、继承、多态

什么是面向对象的设计
答:“面向对象的设计”里面的“面向”是个形象的翻译,其实本意是“基于”对象的设计,是一种程序设计方法,这之前的程序设计方法是“基于”过程的,编程就是指定计算机运行的详细过程,有顺序、分支、循环三种基本机构。“基于”对象的程序设计颠覆了那个传统,程序设计者的人物是规定程序处理的各个对象的属性...