admin管理员组文章数量:1794759
OOP
=aladdin转载出处!
此处百科解释的挺好的!
面向对象的程序设计
面向对象程序设计(英语:Object-oriented programming,缩写:OOP)是一种 程序设计范型,同时也是一种程序开发的方法。对象指的是类的实例。它将对象作为程序的基本单元,将程序和数据封装其中,以提高软件的重用性、灵活性和扩展性。 面向对象程序设计可以看作一种在程序中包含各种独立而又互相调用的对象的思想,这与传统的思想刚好相反:传统的程序设计主张将程序看作一系列函数的集合,或者直接就是一系列对电脑下达的指令。面向对象程序设计中的每一个对象都应该能够接受数据、处理数据并将数据传达给其它对象,因此它们都可以被看作一个小型的“机器”,即对象。 目前已经被证实的是,面向对象程序设计推广了程序的灵活性和可维护性,并且在大型项目设计中广为应用。 此外,支持者声称面向对象程序设计要比以往的做法更加便于学习,因为它能够让人们更简单地设计并维护程序,使得程序更加便于分析、设计、理解。反对者在某些领域对此予以否认。 当我们提到面向对象的时候,它不仅指一种程序设计方法。它更多意义上是一种程序开发方式。在这一方面,我们必须了解更多关于面向对象系统分析和 面向对象设计(Object Oriented Design,简称OOD)方面的知识。- 中文名
- 面向对象的程序设计 外文名
- Object-oriented programming
- 所 属
- 计算机编程架构 使用领域
- CAD技术、人工智能等
目录
- 1 基本理论
- ▪ 类
- ▪ 对象
- ▪ 消息传递
- ▪ 继承
- ▪ 封装性
- ▪ 多态
- ▪ 抽象性
- 2 OOP名词释意
面向对象的程序设计基本理论
编辑 一项由Deborah J. Armstrong进行的长达40年之久的计算机著作调查显示出了一系列面向对象程序设计的基本理论。 [1] 它们是面向对象的程序设计类
类(Class)定义了一件事物的抽象特点。通常来说, 类定义了事物的属性和它可以做到的(它的行为)。举例来说,“狗”这个类会包含狗的一切基础特征,即所有“狗”都共有的特征或行为,例如它的孕育、毛皮颜色和吠叫的能力。类可以为程序提供模版和结构。一个类的方法和属性被称为“ 成员”。 我们来看一段 伪代码:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | 类 狗 开始 公有成员: 吠叫(): 私有成员: 毛皮颜色: 孕育:结束 //Java示例: public class Dog{ public void bark(){ //... } private String colorOfFur; private boolean breed; } |
面向对象的程序设计对象
对象(Object)是类的 实例。例如,“狗”这个类列举狗的特点,从而使这个类定义了世界上所有的狗。而莱丝这个对象则是一条具体的狗,它的属性也是具体的。狗有皮毛颜色,而莱丝的皮毛颜色是棕白色的。因此,莱丝就是狗这个类的一个实例。一个具体对象属性的值被称作它的“状态”。(系统给对象分配内存空间,而不会给类分配内存空间。这很好理解,类是抽象的系统不可能给抽象的东西分配空间,而对象则是具体的。) 假设我们已经在上面定义了狗这个类,我们就可以用这个类来定义对象:1 2 3 4 | 定义莱丝是狗 莱丝.毛皮颜色:棕白色 莱丝.吠叫() Dog lars |
面向对象的程序设计消息传递
一个对象通过接受消息、处理消息、传出消息或使用其他类的方法来实现一定功能,这叫做消息传递机制(Message Passing)。 如: 莱丝可以通过 吠叫引起 人的注意,从而导致一系列的事发生。面向对象的程序设计继承
继承性(Inheritance)是指,在某种情况下,一个类会有“子类”。子类比原本的类(称为父类)要更加具体化。例如,“狗”这个类可能会有它的子类“牧羊犬”和“吉娃娃犬”。在这种情况下,“莱丝”可能就是牧羊犬的一个 实例。子类会继承父类的属性和行为,并且也可包含它们自己的。我们假设“狗”这个类有一个方法(行为)叫做“吠叫()”和一个属性叫做“毛皮颜色”。它的子类(前例中的牧羊犬和吉娃娃犬)会继承这些成员。这意味着程序员只需要将相同的代码写一次。 在伪代码中我们可以这样写:1 2 3 4 5 6 7 8 9 10 | 类牧羊犬:继承狗 定义莱丝是牧羊犬 莱丝.吠叫() /* 注意这里调用的是狗这个类的吠叫方法。*/ public class Shepherd extends Dog{ } Shepherd shep = new Shepherd(); shep.bark(); |
1 2 3 4 5 6 7 8 9 | 类吉娃娃犬:继承狗 开始 公有成员: 颤抖() 结束 类牧羊犬:继承狗 定义莱丝是牧羊犬 莱丝.颤抖() /* 错误:颤抖是吉娃娃犬的成员方法。 */ |
面向对象的程序设计封装性
具备封装性(Encapsulation)的面向对象程序设计隐藏了某一方法的具体执行步骤,取而代之的是通过消息传递机制传送消息给它。因此,举例来说,“狗”这个类有“吠叫()”的方法,这一方法定义了狗具体该通过什么方法吠叫。但是,莱丝的朋友并不知道它到底是如何吠叫的。 封装是通过限制只有特定类的对象可以访问这一特定类的成员,而它们通常利用接口实现消息的传入传出。举个例子,接口能确保幼犬这一特征只能被赋予狗这一类。通常来说,成员会依它们的访问权限被分为3种:公有成员、 私有成员以及保护成员。有些语言更进一步:Java可以限制同一包内不同类的访问; C#和 VB.NET保留了为类的成员聚集准备的关键字:internal(C#)和Friend(VB.NET); Eiffel语言则可以让用户指定哪个类可以访问所有成员。面向对象的程序设计多态
多态(Polymorphism)是指由继承而产生的相关的不同的类,其对象对同一消息会做出不同的响应。 [2] 例如,狗和鸡都有“叫()”这一方法,但是调用狗的“叫()”,狗会吠叫;调用鸡的“叫()”,鸡则会啼叫。 我们将它体现在伪代码上:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | 类狗 开始 公有成员: 叫() 开始 吠叫() 结束 结束 类鸡 开始 公有成员: 叫() 开始 啼叫() 结束 结束 定义莱丝是狗 定义鲁斯特是鸡 莱丝.叫() 鲁斯特.叫() |
面向对象的程序设计抽象性
抽象(Abstraction)是简化复杂的现实问题的途径,它可以为具体问题找到最恰当的类定义,并且可以在最恰当的继承级别解释问题。举例说明,莱丝在大多数时候都被当作一条狗,但是如果想要让它做牧羊犬做的事,你完全可以调用牧羊犬的方法。如果狗这个类还有动物的父类,那么你完全可以视莱丝为一个动物。面向对象的程序设计OOP名词释意
编辑 编程范型 对于OOP的准确定义及其本意存在着不少争论。 通常,OOP被理解为一种将程序分解为封装数据及相关操作的模块而进行的编程方式。有别于其它编程方式,OOP中的与某数据类型相关的一系列操作都被有机地封装到该数据类型当中,而非散放于其外,因而OOP中的数据类型不仅有着状态,还有着相关的行为。OOP理论,及与之同名的OOP实践相结合创造出了新的一个编程架构;OOP思想被广泛认为是非常有用的,以致一套新的 编程范型被创造了出来。(其它的编程范型例如函数式编程或过程式编程专注于程序运行的过程,而逻辑编程专注于引发程序代码执行的断言) 对面向模拟系统的语言(如:SIMULA 67)的研究及对高可靠性系统架构(如:高性能操作系统和CPU的架构)的研究最终导致了OOP的诞生。转载于:.html
本文标签: oop
版权声明:本文标题:OOP 内容由林淑君副主任自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.xiehuijuan.com/baike/1692596426a151183.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论