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