Ru语言面向对象的分析及简单实现论文

上传人:cn****1 文档编号:563922563 上传时间:2023-10-20 格式:DOC 页数:14 大小:321.27KB
返回 下载 相关 举报
Ru语言面向对象的分析及简单实现论文_第1页
第1页 / 共14页
Ru语言面向对象的分析及简单实现论文_第2页
第2页 / 共14页
Ru语言面向对象的分析及简单实现论文_第3页
第3页 / 共14页
Ru语言面向对象的分析及简单实现论文_第4页
第4页 / 共14页
Ru语言面向对象的分析及简单实现论文_第5页
第5页 / 共14页
点击查看更多>>
资源描述

《Ru语言面向对象的分析及简单实现论文》由会员分享,可在线阅读,更多相关《Ru语言面向对象的分析及简单实现论文(14页珍藏版)》请在金锄头文库上搜索。

1、 程序设计与方法学课程论文 Ruby语言面向对象的分析及简单实现 学号:2014282110175 姓名:方栋健 专业:计算机技术 摘要:本文首先介绍了面向对象编程中的概念和特性,主要分析了近几年比较流行的脚本语言Ruby的一些基本语言原理和特性,并通过实例测试了该语言的面向对象的实现过程,可以使我们能更加了解Ruby的特性及其与其他语言的不同,同时对Ruby的应用有更加直观的体会,有助于提高Ruby程序设计效率。 关键词:程序语言原理,Ruby,面向对象1.介绍 Ruby,是在20世纪90年代由日本人松本行弘开发的,为了简单快捷的面向对象编程而创的脚本语言,在最新一期的TIOBE编程语言排行

2、榜上,Ruby位列第16位。Ruby是一种通用的,解释型的编程语言,具有很强大的开发能力,目前主要的应用在于web应用的开发,基于Ruby的web应用框架Ruby on Rails已经成为了最流行的开发框架之一。 根据作者松本行弘,Ruby的理念是减少编程时候的不必要的琐碎时间,令编写程序的人高兴,其次是良好的界面设计。他强调系统设计必须注重人性化,而不是一味从机器的角度设想。遵循上述的理念,Ruby 语言通常非常直观,按照编程人认为它应该的方式运行。Ruby的主要特点就是完全面向对象,在Ruby语言中,任何东西都是对象,包括其他语言中的基本数据类型,比如整数。变量没有类型,Ruby的变量可以

3、保存任何类型的数据。任何东西都有值,不管是数学或者逻辑表达式还是一个语句,都会有值。Ruby中的运算符只是一种语法机制,为相应运算指明具体的方法调用,而这些运算符也可以重新定义。所有类,不管是预先定义的还是用户自定义的,都可以有子类。同时,由于使用动态类型,Ruby中不需要声明变量。而变量的作用域是通过名称来指定的:名称以字母开头的变量具有局部作用域;名称以开头的变量是实例变量;名称以$开头的变量具有全局作用域。在本文中,我们主要的讨论点是面向对象,面向对象(Object Oriented,OO)是软件开发方法。面向对象的概念和应用已超越了程序设计和软件开发,扩展到如数据库系统、交互式界面、应

4、用结构、应用平台、分布式系统、网络管理结构、CAD技术、人工智能等领域。2.面向对象介绍 2.1概念对象是人们要进行研究的任何事物,从最简单的整数到复杂的飞机等均可看作对象,它不仅能表示具体的事物,还能表示抽象的规则、计划或事件。对象的状态和行为,对象具有状态,一个对象用数据值来描述它的状态,对象还有操作,用于改变对象的状态,对象及其操作就是对象的行为,对象实现了数据和操作的结合,使数据和操作封装于对象的统一体中类,具有相同特性(数据元素)和行为(功能)的对象的抽象就是类。因此,对象的抽象是类,类的具体化就是对象,也可以说类的实例是对象,类实际上就是一种数据类型。类具有属性,它是对象的状态的抽

5、象,用数据结构来描述类的属性。类具有操作,它是对象的行为的抽象,用操作名和实现该操作的方法来描述。类的结构,在客观世界中有若干类,这些类之间有一定的结构关系。通常有两种主要的结构关系,即一般-具体结构关系,整体-部分结构关系。一般-具体结构称为分类结构,也可以说是“或”关系,或者是“is a”关系。整体-部分结构称为组装结构,它们之间的关系是一种“与”关系,或者是“has a”关系。消息和方法,对象之间进行通信的结构叫做消息。在对象的操作中,当一个消息发送给某个对象时,消息包含接收对象去执行某种操作的信息。发送一条消息至少要包括说明接受消息的对象名、发送给该对象的消息名(即对象名、方法名)。一

6、般还要对参数加以说明,参数可以是认识该消息的对象所知道的变量名,或者是所有对象都知道的全局变量名。类中操作的实现过程叫做方法,一个方法有方法名、返回值、参数、方法体。2.2特征对象唯一性,每个对象都有自身唯一的标识,通过这种标识,可找到相应的对象。在对象的整个生命期中,它的标识都不改变,不同的对象不能有相同的标识。抽象性,抽象性是指将具有一致的数据结构(属性)和行为(操作)的对象抽象成类,一个类就是这样一种抽象,它反映了与应用有关的重要性质,而忽略其他一些无关内容。任何类的划分都是主观的,但必须与具体的应用有关。继承性,继承性是子类自动共享父类数据结构和方法的机制,这是类之间的一种关系,在定义

7、和实现一个类的时候,可以在一个已经存在的类的基础之上来进行,把这个已经存在的类所定义的内容作为自己的内容,并加入若干新的内容,继承性是面向对象程序设计语言不同于其它语言的最重要的特点,是其他语言所没有的。在类层次中,子类只继承一个父类的数据结构和方法,则称为单重继承,子类继承了多个父类的数据结构和方法,则称为多重继承。而在在软件开发中,类的继承性使所建立的软件具有开放性、可扩充性,这是信息组织与分类的行之有效的方法,它简化了对象、类的创建工作量,增加了代码的可重用性,采用继承性,提供了类的规范的等级结构。通过类的继承关系,使公共的特性能够共享,提高了软件的重用性。多态性是指相同的操作或函数、过

8、程可作用于多种类型的对象上并获得不同的结果。不同的对象,收到同一消息可以产生不同的结果,多态性允许每个对象以适合自身的方式去响应共同的消息,同时也增强了软件的灵活性和重用性。3.面向对象在Ruby中的分析在Ruby中,对面向对象的支持包括:Ruby类定义C+和Java等语言不同,因为它们是可执行的。这允许它们在执行期间保持开放性。程序可以在类中任意多次的添加类成员。在执行期间,类的现有定义就是已经执行的类的所有定义的联合。方法定义也是可执行,这允许程序在执行期间,通过把两个方法定义放入选择结构的then和else子句来选择一个方法定义。Ruby里所有的变量都是对象的引用,而且都是无类型的。所有

9、实例变量名都已符号开头。Ruby与其他常用编程语言的的明显区别是,Ruby的访问控制在访问数据和访问方法上不同。所有实例数据都默认为私有访问,且不能改变。如果需要对实例变量进行外部访问,就必须定义访问方法。例如下面的类定义框架:Class MyClass# A constructor Def initialize one = 1 two = 2 End# A getter for one Def one one End# A setter for one Def one=(my_one) one = my_one End End # of class MyClass 与设置方法名相连的等号(=

10、)表明他的变量是可复制的。因此,所有设置方法名都有相连的等号。One获取方法体说明了用Ruby设计的方法没有返回语句时,就返回已求值的最后一个表示式的值。本例是返回one的值。由于需要经常使用获取和设置方法,Ruby提供了它们的快捷方法。例如类有两个实例变量的获取方法one和two,那么这些获取方法就可以在类中用一个语句指定:Attr_reader :one, :twoAttr_reader实际上是用:one和:two作为实参的函数调用。在变量前加冒号(:)表示要使用变量名,而不是取消其引用对象的引用。用类似方式创建设置方法的函数称为attr_writer。这个函数与attr_reader具有

11、相同的参数列表。创建获取方法和设置方法的函数都指定了名称,因为它们提供了类对象的协议,这称为属性。类的属性定义了类对象的数据接口。Ruby对象用new创建,new隐式调用了构造函数。Ruby类中的常用构造函数命名为initialize。子类的构造函数可以初始化定义了设置方法的父类数据成员。这一过程是通过调用super,并以初始值作为实参来实现的。Super会调用父类的方法,这个方法与调用super时使用的方法同名。类变量通过在名称前加两个符号()来指定,他们对类和其实例是私有化的。这种私有性不能改变。另外,与全局变量和实例变量不同,类变量必须在使用前初始化。继承:在Ruby中定义子类采用小于号

12、(),例如:Class MySubClass BaseClassRuby的方法访问控制有一个显著的不同,那就是只能调用访问控制函数,就能在子类中改变它们。这意味着可以定义基类的两个子类,使一个子类的对象可以访问基类定义的方法,但是另一个子类的对象不能。这也允许改变基类中公有方法对子类私有方法的访问,这种子类明显不能是子类型。Ruby模块提供了一种命名封装,它常常用于定义函数库。在类中访问模块include语句来指定。例如:Include Math包含模块的效果是类获得指向模块的指针,并有效地继承定义在模块中的函数。实际上,类包含模块时,模块就变成了类的一个代理超类。这样的模块称为混合类型(mi

13、nin)。动态绑定:变量不能类型化,但它们是对任何类对象的引用。因此,所有变量是多态的,并且所有多方法调用的绑定都是动态的。4.面向对象在Ruby中的实现 接下来我们在Ruby的交互界面irb上进行Ruby面向对象各个实例的分析。4.1 Ruby 类定义 当我们定义了一个类时,实际是定义了一个数据类型的蓝图。这实际上并没有定义任何的数据,而是定义了类的名称意味着什么,也就是说,定义了类的对象将由什么组成,以及在该对象上能执行什么操作。类定义以关键字class开始,后跟类名称,最后以一个end进行分隔表示终止该类定义。例如,我们使用关键字 class 来定义 Box 类,如下所示:4.2定义 R

14、uby 对象 类提供了对象的蓝图,所以基本上,对象是根据类进行创建的。我们使用new关键字声明类的对象。下面的语句声明了类 Box 的两个对象:4.3 initialize 方法 initialize方法是一个标准的 Ruby 类方法,与其他面向对象编程语言中的constructor工作原理类似。当我们想要在创建对象的同时初始化一些类变量,initialize 方法就派上用场了。该方法带有一系列参数,与其他 Ruby 方法一样,使用该方法时,必须在前面放置def关键字,如下所示:4.4实例变量 实例变量是类属性,它们在使用类创建对象时就变成对象的属性。每个对象的属性是单独赋值的,和其他对象之间

15、不共享值。在类的内部,是使用 运算符访问这些属性,在类的外部,则是使用称为访问器方法的公共方法进行访问。下面我们以上面定义的类Box为实例,把 width 和 height 作为类 Box 的实例变量。4.5 访问器 & 设置器 方法 为了在类的外部使用变量,我们必须在访问器方法内部定义这些变量,这些访问器方法也被称为获取器方法。下面的实例演示了访问器方法的用法:4.6实例方法 实例方法的定义与其他方法的定义一样,都是使用def关键字,但它们只能通过类实例来使用,如下面实例所示。它们的功能不限于访问实例变量,也能按照我们的需求做更多其他的任务。4.7类方法 & 类变量 类变量是在类的所有实例中共享的变量。换句话说,类变量的实例可以被所有的对象实例访问。类变量以两个 字符()作为前缀,类变量必须在类定义中被初始化,如下面实例所示。

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 医学/心理学 > 基础医学

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号