什么是面向对象的程序设计思想
面向对象(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)继承性。
继承性是子...
什么是面向对象的程序设计? 能通俗得说明吗?
所谓面向对象的程序设计,就是把面向对象的思想应用到软件工程中,并指导开发维护软件。
对象是由数据和容许的操作组成的封装体,所谓面向对象,就是基于对象的概念,以对象为中心,类和继承为构造机制,认识了解刻画客观世界以及开发出相应的软件系统。
你学习过C语言没有,C语言就是面向过程的。
JAVA就是面向对象的。
C++兼容了C,但是基本上编程思想是面向对象的。
对象,例:一辆车就是一个对象。
车中的那些组成零件也是对象。
C++中定义一个对象来表示车就很容易。
class car{private://定义一些车的属性//价格。
车名。
型号。
重量。
};你学下C++或JAVA就很容易明白了。
面向对象,说白了就是把现实中的事务看成一个对象,在写程序时,把你要写的事务与现实中的事务联系起来。
如:写一个学生管理系统的项目。
你会有很多对象。
学生。
老师。
学课。
教学楼。
宿舍。
如果你学C++,当你多用几次class之后,你就明白了。
面向对象程序设计语言有哪些?
之前写过和这个题目相关的论文,摘选一部分看对您有没有什么帮助:面向对象程序设计的基本概念:面向对象, 概括地说, 就是把问题抽象为对象, 设置属性(数据) , 指定事件或处理方式(代码) 来达到目的, 强调从问题域的概念到软件程序和界面的直接映射。
面向对象程序设计中的概念主要包括:对象、类、数据抽象、继承、动态绑定、数据封装、多态性、消息传递。
通过这些概念面向对象的思想得到了具体的体现。
面向对象程序设计的基本特征1)对象:对象是运行期的基本实体,它是一个封装了数据和操作这些数据的代码的逻辑实体。
2)类:类是具有相同类型的对象的抽象。
一个对象所包含的所有数据和代码可以通过类来构造。
3)封装性:封装是一种信息隐蔽技术,它体现于类的说明,是对象的重要特性。
封装使数据和加工该数据的方法(函数)封装为一个整体,以实现独立性很强的模块,使得用户只能见到对象的外特性(对象能接受哪些消息,具有那些处理能力),而对象的内特性(保存内部状态的私有数据和实现加工能力的算法)对用户是隐蔽的。
封装的目的在于把对象的设计者和对象者的使用分开,使用者不必知晓行为实现的细节,只须用设计者提供的消息来访问该对象。
4)继承性:继承性是子类自动共享父类之间数据和方法的机制。
它由类的派生功能体现。
一个类直接继承其它类的全部描述,同时可修改和扩充。
继承具有传递性。
继承分为单继承(一个子类只有一父类)和多重继承(一个类有多个父类)。
类的对象是各自封闭的,如果没继承性机制,则类对象中数据、方法就会出现大量重复。
继承不仅支持系统的可重用性,而且还促进系统的可扩充性。
5)多态性:对象根据所接收的消息而做出动作。
同一消息为不同的对象接受时可产生完全不同的行动,这种现象称为多态性。
利用多态性用户可发送一个通用的信息,而将所有的实现细节都留给接受消息的对象自行决定,如是,同一消息即可调用不同的方法。
例如:Print消息被发送给一图或表时调用的打印方法与将同样的Print消息发送给一正文文件而调用的打印方法会完全不同。
多态性的实现受到继承性的支持,利用类继承的层次关系,把具有通用功能的协议存放在类层次中尽可能高的地方,而将实现这一功能的不同方法置于较低层次,这样,在这些低层次上生成的对象就能给通用消息以不同的响应。
在OOPL中可通过在派生类中重定义基类函数(定义为重载函数或虚函数)来实现多态性。
6)动态绑定绑定指的是将一个过程调用与相应代码链接起来的行为。
动态绑定是指与给定的过程调用相关联的代码只有在运行期才可知的一种绑定,它是多态实现的具体形式。
7)消息传递:对象之间需要相互沟通,沟通的途径就是对象之间收发信息。
消息内容包括接收消息的对象的标识,需要调用的函数的标识,以及必要的信息。
消息传递的概念使得对现实世界的描述更容易。
面向对象语言一个语言要称为面向对象语言必须支持几个主要面向对象的概念。
根据支持程度的不同,通常所说的面向对象语言可以分成两类:基于对象的语言,面向对象的语言。
基于对象的语言仅支持类和对象,而面向对象的语言支持的概念包括:类与对象、继承、多态。
举例来说,Ada就是一个典型的基于对象的语言,因为它不支持继承、多态,此外其他基于对象的语言还有Alphard、CLU、Euclid、Modula。
面向对象的语言中一部分是新发明的语言,如Smalltalk、Java,这些语言本身往往吸取了其他语言的精华,而又尽量剔除他们的不足,因此面向对象的特征特别明显,充满了蓬勃的生机;另外一些则是对现有的语言进行改造,增加面向对象的特征演化而来的。
如由Pascal发展而来的Object Pascal,由C发展而来的Objective-C,C++,由Ada发展而来的Ada 95等,这些语言保留着对原有语言的兼容,并不是纯粹的面向对象语言,但由于其前身往往是有一定影响的语言,因此这些语言依然宝刀不老,在程序设计语言中占有十分重要的地位。
面向对象程序设计有哪些基本特征?
展开全部 【回答】 面向对象程序设计有4个主要特点,分别是:抽象、封装、继承、多态。
以下是具体解释; 一、抽象和封装 类和对象体现了抽象和封装 抽象就是解释类与对象之间关系的词。
类与对象之间的关系就是抽象的关系。
一句话来说明:类是对象的抽象,而对象则是类得特例,即类的具体表现形式。
封装两个方面的含义:一是将有关数据和操作代码封装在对象当中,形成一个基本单位,各个对象之间相对独立互不干扰。
二是将对象中某些属性和操作私有化,已达到数据和操作信息隐蔽,有利于数据安全,防止无关人员修改。
把一部分或全部属性和部分功能(函数)对外界屏蔽,就是从外界(类的大括号之外)看不到,不可知,这就是封装的意义。
二、继承 面向对象的继承是为了软件重用,简单理解就是代码复用,把重复使用的代码精简掉的一种手段。
如何精简,当一个类中已经有了相应的属性和操作的代码,而另一个类当中也需要写重复的代码,那么就用继承方法,把前面的类当成父类,后面的类当成子类,子类继承父类,理所当然。
就用一个关键字extends就完成了代码的复用。
三、多态 没有继承就没有多态,继承是多态的前提。
虽然继承自同一父类,但是相应的操作却各不相同,这叫多态。
由继承而产生的不同的派生类,其对象对同一消息会做出不同的响应。
【拓展回答】 一、面向对象程序设计概念 面向对象程序设计(Object Oriented Programming)作为一种新方法,其本质是以建立模型体现出来的抽象思维过程和面向对象的方法。
模型是用来反映现实世界中事物特征的。
任何一个模型都不可能反映客观事物的一切具体特征,只能对事物特征和变化规律的一种抽象,且在它所涉及的范围内更普遍、更集中、更深刻地描述客体的特征。
通过建立模型而达到的抽象是人们对客体认识的深化。
类当中有两个方面,一是封装属性,二是封装函数。
在自己声明的类当中要既有属性又有函数,这就是类。
其实结构体的声明当中有很多不同数据类型的成员,在一个结构体当中,这就是对属性的封装,但是结构体与类相比较,还缺少了一个重要的环节,结构体当中只有属性,只封装了属性,但没有封装相应的操作,也就是没有封装操作成员属性的函数。
在结构体中声明一个结构体就相当于我们设计了一个类,定义一个结构体就相当于我们定义了一个对象,定义给两个结构体,相当于我们定义了两个对象。
初始化结构体,相当于对象的初始化。
客观世界中任何一个事物都可以看成一个对象(Object),任何一个对象都有两个要素:一个是静态特征,这种静态特征称为属性。
一个是动态特征,这种动态特征称为行为(或功能)。
二、面向对象程序设计架构特点 面向对象设计方法以对象为基础,利用特定的软件工具直接完成从对象客体的描述到软件结构之间的转换。
这是面向对象设计方法最主要的特点和成就。
面向对象设计方法的应用解决了传统结构化开发方法中客观世界描述工具与软件结构的不一致性问题,缩短了开发周期,解决了从分析和设计到软件模块结构之间多次转换映射的繁杂过程,是一种很有发展前途的系统开发方法。
但是同原型方法一样, 面向对象设计方法需要一定的软件基础支持才可以应用,另外在大型的MIS开发中如果不经自顶向下的整体划分,而是一开始就自底向上的采用面向对象设计方法开发系统,同样也会造成系统结构不合理、各部分关系失调等问题。
所以面向对象设计方法和结构化方法仍是两种在系统开发领域相互依存的、不可替代的方法。
【参考资料】 百度百科——面向对象程序设计 面向对象程序设计的特点
怎么提高面向对象编程能力?
面向对象的概念和应用已超越了程序设计和软件开发,扩展到很宽的范围。
如数据库系统、交互式界面、应用结构、应用平台、分布式系统、网络管理结构、CAD技术、人工智能等领域。
谈到面向对象,这方面的文章非常多。
但是,明确地给出对象的定义或说明对象的定义的非常少——至少我现在还没有发现。
其初,“面向对象”是专指在程序设计中采用封装、继承、抽象等设计方法。
可是,这个定义显然不能再适合现在情况。
面向对象的思想已经涉及到软件开发的各个方面。
如,面向对象的分析(OOA,object Oriented Analysis),面向对象的设计(OOD,ObjECt Oriented DESign)、以及我们经常说的面向对象的编程实现(OOP,Object Oriented Programming)。
许多有关面向对象的文章都只是讲述在面向对象的开发中所需要注意的问题或所采用的比较好的设计方法。
看这些文章只有真正懂得什么是对象,什么是面向对象,才能最大程度地对自己有所裨益。
这一点,恐怕对初学者甚至是从事相关工作多年的人员也会对它们的概念模糊不清。
面向对象是当前计算机界关心的重点,它是90年代软件开发方法的主流。
面向对象的概念和应用已超越了程序设计和软件开发,扩展到很宽的范围。
如数据库系统、交互式界面、应用结构、应用平台、分布式系统、网络管理结构、CAD技术、人工智能等领域。
面向对象的要素(1)抽象。
抽象是指强调实体的本质、内在的属性。
在系统开发中,抽象指的是在决定如何实现对象之前的对象的意义和行为。
使用抽象可以尽可能避免过早考虑一些细节。
类实现了对象的数据(即状态)和行为的抽象。
(2)封装性(信息隐藏)。
封装性是保证软件部件具有优良的模块性的基础。
面向对象的类是封装良好的模块,类定义将其说明(用户可见的外部接口)与实现(用户不可见的内部实现)显式地分开,其内部实现按其具体定义的作用域提供保护。
对象是封装的最基本单位。
封装防止了程序相互依赖性而带来的变动影响。
面向对象的封装比传统语言的封装更为清晰、更为有力。
(3)共享性面向对象技术在不同级别上促进了共享同一类中的共享。
同一类中的对象有着相同数据结构。
这些对象之间是结构、行为特征的共享关系。
在同一应用中共享。
在同一应用的类层次结构中,存在继承关系的各相似子类中,存在数据结构和行为的继承,使各相似子类共享共同的结构和行为。
使用继承来实现代码的共享,这也是面向对象的主要优点之一。
在不同应用中共享。
面向对象不仅允许在同一应用中共享信息,而且为未来目标的可重用设计准备了条件。
通过类库这种机制和结构来实现不同应用中的信息共享。
结构化程序设计和面向对象程序设计的主要特征各是什么?
“面向过程程序设计”、主要是为拉大型的工程计算或者为拉完成某个任务而求出结果的对界面则要求不高 其优点是运行速度快“面向对象程序设计”主要是对各种事物能形象的描述并且模拟在计算机上运行它兼容以上面向过程的好多功能 优点是界面比较好做 缺点执行速度和容量没有上面的快 结构化程序设计 对于以上二者均适合 这只是说明设计是的思路和方法 按照俺自己的理解:前者是按照人们日常做事的顺序来设计语言,即无论做什么事都是按照顺序来执行的,一个个的功能模块都是联系在一起的。
总之:做事是有一个个的动作完成的。
后者则是把我们客观世界里的事物都封装起来,各个事物之间是相互独立的。
做什么事情都是由一个个的事物共同完成的,而不是顺序执行。
总之:做事是由一个个的事物共同完成的。
程序设计中面向对象指的什么
1、面向对象编程是一种很重要的编程思想和软件工程方案,最典型的语言是C++,其次JAVA,.NET等都采用了面向对象编程思想,而象C语言则是典型的面向过程编程2、程序设计中面向对象指的有两方面:采用面向对象语言;采用面向对象的软件工程思想 3、更多交流参考我空间主页有关文章
面向对象程序设计的优点是什么?
展开全部 1、维护简单面向对象程序设计的一个特征就是模块化。
实体可以被表示为类以及同一名字空间中具有相同功能的类,可以在名字空间中添加一个类而不影响该名字空间的其他成员。
这种特征为程序的维护提供了便捷性。
2、可扩充性如果有一个具有某一种功能的类,就可以扩充这个类,创建一个具有扩充功能的类。
3、代码重用功能是被封装在类中的,类是作为一个独立实体而存在的,因此可以很简单的提供类库,使代码得以重复使用。
扩展资料 面向对象程序设计(Object Oriented Programming)作为一种新方法,其本质是以建立模型体现出来的抽象思维过程和面向对象的方法。
模型是用来反映现实世界中事物特征的。
任何一个模型都不可能反映客观事物的一切具体特征,只能对事物特征和变化规律的一种抽象,且在它所涉及的范围内更普遍、更集中、更深刻地描述客体的特征。
通过建立模型而达到的抽象是人们对客体认识的深化。
...
转载请注明出处51数据库 » 面向对象程序设计软件