C#、C++、Java面向对象比较研究.docx
《C#、C++、Java面向对象比较研究.docx》由会员分享,可在线阅读,更多相关《C#、C++、Java面向对象比较研究.docx(68页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、目 录摘要3ABSTRACT4第一章面向对象概述51.1面向对象的基本概念51. 1. I 对象51. 1.2 类61. 1.3消息和方法61.2面向对象的基本特征7*本继多2. 1类的定义格式9小纟口93. 2类中成员的访问修饰符10小结114. 3类中的数据成员112.3.1 常数据成员11小结132.3.2 静态数据成员13小结152. 4类中的成员函数152.1.1 普 乂贝函数15小结182.1.2 静态成员函数18小结202.1.3 构造函数20小结232. 5对象的撤销23小结24第三章继承253. 1继承的定义格式25小结273. 2类中成员的属性:28小结293. 3派生类的
2、构造函数30小结313.4类中的同名覆盖32小结373. 5对象转换37小结403. 5多重继承403. 5. 1接口的定义格式41小结423. 5. 2接口多重继承的实现42小结453. 5. 3复杂的多重继承46小结50第四章多态性514. !静态联编514. 1. 1函数重载与模板51小结554. 1.2运算符重载55小结564.1.3指针与强制多态56小结594. 2动态联编604. 2. I虚函数60小结62422抽象类63小结66总 结错误!未定义书签。致谢6869参考文献摘要面向对象的程序设计技术是目前最流行、最实用的软件开发手段。与 传统的面向过程程序设计结构化技术完全不同。它
3、的出现是程序设计语言 的场革命。它主要包括类、对象、消息、方法、属性等基本概念,具有 封装性、继承、多态性、重载等特点。在面向对象的程序设计中,现实世 界的对象被抽象为“类”。程序员将精力主要集中于要处理的对象的设计 和研究上,通过继承、多态、重载可以很方便的实现代码的重用,从而大 大提高了软件的开发效率。C+、Java和C#都是目前最流行的面向对象程 序设计语言,它们都可以为面向对象的技术提供全面的支持。本文共分为四章,第一章主要介绍了面向对象的基本概念和特征。第 二章主要比较了 C+、Java和C#语言类中成员的定义、访问权限、对象 的撤消等。第三章主要比较了 C+、Java和C#语言在继
4、承方面的异同点, 并且给出了相关的程序。第四章主要比较了 C+、Java和C#语言在多态 性方面的异同点,并且给出了相关的程序。最后总结了 C+、Java和C#语 言的优劣并给出了进行毕业设计的心得体会。关键词:面向对象类继承多态性重载ABSTRACTThe Object Oriented Programming (OOP) is the most popular and useful method of software developing now. It is different from the traditional Process Oriented structured Progr
5、amming. Its emergence is a revolution of programming language. It mainly includes these basic concepts such as classes objects messages methods attributes etc and these characteristics such as encapsulationinheritance、polymorphism、 overloading and so on. In the Object Oriented Programming, the objec
6、ts in the world are abstracted as classes. Programmers chiefly concentrate the design and research of objects. By means of the encapsulation、inheritance、polymorphism and overloading, programmers can very conveniently complete codes of reusing, thus greatly increasing the development efficiency of so
7、ftware. C+、Java and C# are the most popular Object Oriented Programming language at present.They can provid overall support for Object Oriented Programming.There are four chapters in the thesis. In the first chapter, the basic concept and characteristic ofobject-oriented is introduced. In the second
8、 chapter, the definition of member, the access authority ,the object remove were chiefly compared in the C+、Java and C# language. In the third chapter ,similiarities and differences at the aspect of the inheritance in the C+、Java and C# language were compared and given out the program of correlation
9、. In the 4th chapter, similiarities and differences at the aspect of the polymorphism in the C+、Java and C# language were compared and given out the program of correlation. Finally sum up the good and bad of C+ , Java and C#*s language and given out the tag of graduation design.Key Words:Object Orie
10、nted Class Inherit Polymorphism Overloading第一章面向对象概述1.1 面向对象的基本概念1.1.1 对象客观世界的问题都是由客观世界的实体及实体间的相互关系构成的, 我们把客观世界的实体称为问题空间的对象。显然,“对象”不是固定的。 一本书是个对象,一家书店也可以是一个对象。世界上的各个事物都是 由各种“对象”组成的。任何事物都是对象,复杂的对象可以由相对比较 简单的对象以某种方式组成。从这种意义上讲,整个客观世界可认为是 个最复杂的对象。从动态的观点看,对象的操作就是对象的行为。问题空间对象的行为 是极其丰富多彩的,而解空间对象的行为是死板的,只有借
11、助于复杂的算 法才能操纵解空间的对象而得到解。传统的程序设计语言限制了程序员定 义解空间对象,而面向对象语言提供了 “对象”概念。这样,程序员就可 以自己去定义解空间对象。从存储的角度看,“对象”是一片私有存储,其中有数据也有方法。 其他对象的方法不能直接操纵该对象的私有数据,只有对象自己的方法 可操纵它。从对象的实现机制来看,“对象”是一台自动机,其中私有数据表示 了对象的状态,该状态只能由自身的方法改变它。每当需要改变对象的状 态时。只能由其他对象向该对象发进消息,对象响应消息后按照消息模式 找出匹配的方法,并执行该方法。在面向对象的设计中,“对象”是应用领域中的建模实体。所有对象 在外观
12、上都表现出相同的特性,即固有的处理能力和通过传邀消息实现的 统一的联系方式。在面向对象的程序设计中,“对象”是系统中的基本运行实体。换 句话说,“对象”是具有特殊属性(数据)和行为方式(方法)的实体。 对象占有存储空间且具有传统程序设计语言的数据,如变量、数组、字 符串等。给对象分配存储空间就确定了给定时刻对象的状态,与每一个 对象相关的方法定义了该对象上的操作。1.1. 2 类在面向对象的程序设计中,“对象是程序的基本单位,相似的对象可 以和传统语言中的变量与类型关系样,归并到类(class)中去。类 实质上定义的是种对象类型,它是对具有相似行为的对象的一种抽象, 描述了属于该类型的所有对象
13、的性质。例如:integer是个类,它描述了所有整数的性质,“、“2” 等具体整数都是integer这个类的对象,都具备算术运算和大小比较的处 理能力。对象是在执行过程中由其所属的类动态生成的,个类可以生成多个 不同的对象。同一个类的所有对象具有相同的性质,即其外部特性和内部 实现都是相同的。个对象的内部状态(私有属性)只能由其自身来修改, 任何别的对象都不能来修改名。因此,同一个类的对象虽然在内部状态的 表现形式上相同,但它们可以有不同的内部状态。这些对象并不是一模 样的。1.2. 3消息和方法如何要求对象完成一定的处理工作?对象间如何进行联系?所有这 一切都只能通过传递消息来实现。消息用来
14、请求对象执行某处理或回答 某些信息的要求,消息统一了数据流和控制流。某对象在执行相应的处 理时,如果需要,它可以通过传递消息请求其他对象完成某些处理工作或 冋答某些信息。其他对象在执行所要求的处理活动时,同样可以通过传 递消息与别的对象联系。因此,程序的执行是靠在对象间传递消息来完成 的。发送消息的对象称为发送者,接收消息的对象称为接收者。消息中只 包含发送者的要求,它告诉接收者需要完成哪些处理,但并不指示接收者 应该怎样完成这些处理。消息完全由接收者解释,接收者独立决定采用什 么方式完成所需的处理。一个对象能够接收不同形式、不同内容的多个消 息:相同形式的消息可以送往不同的对象;不同的对象对
15、于形式相同的消 息可以有不同的解释,能够作出不同的反应。对于传来的消息,对象可以 返回相应的应答信息,但这种返回并不是必需的。消息的形式用消息模式(message pattern)刻画,个消息模式定义 了一类消息,它可以对应不同内容的消息。对于同一消息模式的不同消息, 同一 个对象所作的解释和处理都是相同的,只是处理的结果可能不同。因 此有处理能力接消息分类,个消息模式定义对象的种处理能力。这种 处理能力是通过该模式及消息引用表现出来的。所以,只要给出对象的所 有消息模式及相应于每个消息模式的处理能力,也就定义了一个对象的固 有处理能力。它是定义对象接口的唯一信息。使用对象只需了解它的消 息模
16、式,所以对象具有极强的“黑盒”性。把所有对象分成各种对象类, 每个对象类都定义一组“方法”,代表允许作用于该类对象上的各种操作。1.3. 向对象的基本特征L2.1封装封装是种信息隐蔽技术,用户只能看到对象封装界面上的信息, 对象内部对用户是隐蔽的。封装的目的在于将对象的使用者和设计者分 开,使用者不必知道行为实现的细节,只需用设计者提供的消息来访问这 对象。封装的定义为。(1)一个清楚的边界,所有对象的内部软件的范围被限定在这个边界内;(2) 一个接口,这个接口描述该对象和其他对象之间的相互作用:(3)受保护的内部实现。这个实现给出了由软件对象提供的功能的细节, 实现细节不能在定义这个对象的类
17、的外面访问。封装的概念和类说明有关,而且同样提供如何将一个问题解的各个组 件组装在起的求精过程。封装的基本单位是对象。这个对象的性质由它 的粪说明来描述,这个性质被具有同样类的其他对象共享。对象用作封装 比讲个类表示的封装更具体化。有了封装这个定义个类的每个实例在 个问题求解中是一个单独的封装,或称作组件。对象用于封装的概念可以和集成电路芯片作一类比。块集成电路芯 片被封装起来,其内部电路是不可见的,也是使用者不关心的。芯片的使 用者只关心芯片引脚的个数、引脚的电气参数以及引卿提供的功能,通过 对各个引脚功能的了解,可以将不同的芯片引脚连在起,组装成具有一 定功能的产品。同样,软件设计者可以通
18、过对类和对象的使用达到这个目 的。显式地将对象的定义和对象的实现分开是面向对象系统的一大特色。 封装本身即模块化,把定义模块和实现模块分开,就使得用面向对象技术 所开发设计的软件的维护性、修改性大为改善,这也是软件技术追求的目 标之。1.2. 2继承广义地说,继承是指能够直接获得已有的性质和特性,而不必重复定 义它们。在面向对象的软件技术中,继承是子类自动地共享基类(或父类) 中定义的数据和方法的机制。个类直接继承其父类的全部描述(数据和 操作)。继承具有传递性,继承性使得相似的对象可以共享程序代码和数据结 构,从而大大减少了程序中的冗余信息。使得对软件的修改变得比过去容 易得多了。继承性使得
19、用户在开发新的应用系统时不必完全从零开始,可以继承 原有的相似系统的功能或者从类库中选取需要的类,再派生出新的类以实 现所需要的功能,所以,继承的机制主要是支持程序的重用和保持接口的 一致性。1.2. 3多态性所谓多态(plymorphic)即个名字可具有多种语义。在大多数面向 对象的语言中,如果类P是子类S的父类,则子类S的对象s可以用在 父类P的对象p使用的地方,这就意味着一个公共的消息集(操作)可 以送到类P和类S的对象上。当同样的消息可以被送到个父类的对象 和其子类的对象上时这被称作多态性(polymophism)。在不同的对象上 对个相似的操作使用相同消息的方法和人们在解决问题中的思
20、考方式 是相遇的,我们不必为打印整数、浮点数、字符而使用不同的束语。面向对象的语言中,多态引用表示可引用多个类的实例。由于多态具 有可表示对象的多个类的能力,因此,它既与动态类型有关,又与静态类 型有关。动态类型是在程序执行期间随时可以改变的类型。在强类型面向对象 环境中,运行系统根据动态类型自动地保留标记的全部多态引用。静态类型是在程序正文中声明实体 时确定下来的类型。在编译时已经知邀并确定了对象在运行时的有效类型 集合。第二章类与对象2.1 类的定义格式C+中类的定义格式:Class 类名称I修饰符:成员函数或数据成员的说明;);其中是定义类的关键字。类名称是一中标识符,对花括号内是 类的
21、说明部分。说明该类成员。类的成员包含数据成员和成员函数两部分。 Java中类的定义格式:修饰符Class类名称(类的属性与方法;)类名称的第一个字母为大写,例如:SystemoC#中类的定义格式:修饰符Class类名称!类的成员;小结在C+中类定义不存在类修饰符,而C#和沸va中类修饰符决定了 这个类的属性。在Java中类名称的第一个字母必须大写,而C#和C+ 中类名称无需这个必要。2.2 类中成员的访问修饰符C+提供了 3个不同的访问权符,它们规定的成员访问属性互不同:(1)public (公有的)具有这种访问属性的成员,可被与该类对象处在同 一作用域内的任何函数使用。(2) private
22、 (私有的)私有的成员只能被它所在类中的成员函数及该类 的友元函数使用。(3) protected (保护的)具有这种访问属性的成员只能被它所在类及从 该类派生的子类的成员函数及友元函数使用成员访问控制类自身派生类其他类Public可被访问可被访问可被访问Private可被访问不可被访问不可被访问Protected可被访问可被访问不可被访问Java提供了 4个不同的访问权符,它们规定的成员访问属性互不同:(1) public (公有的)定义成这种等级的属性,可以被任何对象存取,适 用于完全公开的数据。(2) private (私有的)定义成这种等级的属性,只可以被同一类的方法 所存取,适用于类
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 面向 对象 比较 研究
限制150内