`
lixinye0123
  • 浏览: 323210 次
  • 性别: Icon_minigender_1
  • 来自: 温州
社区版块
存档分类
最新评论

Ruby程序设计语言快速入门之对象,方法和类

阅读更多
 

  在Ruby中,一切都是对象。对于那些喜欢使用高度面向对象的语言(例如Smalltalk,Eiffel或CLOS)的用户来说,这是非常受欢迎的。例如1,2,3或10.8等等都是对象,而不是如Java或C++中的原始类型;字符串是对象,类和方法也都是对象。例如,下面都是有效的Ruby代码(在Ruby中,注释行是以"#"符号界定的):

#对象-34的绝对值
-34.abs
#对一个浮点数进行四舍五入处理
10.8.round
#返回一个字符串对象的大写且逆转的副本
"This is Ruby".upcase.reverse
#返回数学sin方法的参数个数
Math.method(:sin).arity
 


图5.Ruby是全对象化的:在Ruby中,整数,浮点数,字符串,甚至类和方法都是对象。这里的代码展示了针对这些类型对象的方法调用。

  在Ruby中,所有功能都是通过调用对象上的方法(或操作)实现的。事实上,Ruby中的方法调用就象其它程序语言中的函数或过程调用一样。

  就象在所有面向对象程序语言中一样,对象是从类中创建的。Ruby库中提供了许多预构建的类。你可以修改这些类或构建你自己的类。Ruby中的类是使用"class"关键字定义的。类名开始是一个大写字母。类定义以"end"关键字结束。因此,一个Rectangle类的定义可能有如下形式:

class Rectangle
end 

  为了把方法添加到类,可以使用def关键字。方法的定义也应该以end关键字结束。跟随def关键字和方法名后面就是方法参数。把一个area方法添加到上面的Rectangle类的代码看上去如下所示:

class Rectangle
def area (hgt,wdth)
return hgt*wdth
end
end 

  对于那些熟悉其它程序语言的用户,他可能注意到一些差别。Ruby并不使用任何花括号来限定类或方法,也不使用分号或其它字符来表示程序语句行的结束。Ruby的目标,根据它的创建者说明,是简单、易用并使编码成为一件"趣事"。谁想记住所有的那些分号?没有意思!在Ruby中,只要你把语句放在一行上,不需要分号或其它代码行结束标记。顺便说一下,在area方法参数周围的括号是不必要的。在默认情况下,Ruby返回一个方法中最后的内容,因此return关键字也可以省略。因此,你可以建立如下简单编码的Rectangle类:

class Rectangle
def area hgt, wdth
hgt*wdth
end
end
 

  尽管上面代码是有效的,但是小括号还是被推荐使用于方法参数表达的,这主要是为了实现较好的可读性。

       实例变量和属性

  类也可以有实例变量(在一些语言中也称为属性)。例如,由Rectangle类创建的对象应该都有一个高度和宽度。在Ruby中,实例变量不必显式地在类中声明,只是必须在它们的命名中以一个特殊字符来标记和使用。具体地说,所有的实例变量名都以"@"开头。为了实现当调用area方法时,存储矩形实例的高度和宽度,你仅需把实例变量添加到area方法即可:

class Rectangle
def area (hgt, wdth)
@height=hgt
@width = wdth
@height*@width
end
end
 

  更确切地说,当创建一个Rectangle实例时,应该指定高度和宽度,而实例变量在此时才确定。另外,Ruby提供了一种特殊的方法initialize,它允许你建立或准备类的新实例:

class Rectangle
def initialize (hgt, wdth)
@height = hgt
@width = wdth
end
def area ()
@height*@width
end
end

 
分享到:
评论

相关推荐

    Ruby入门到精通

    Ruby入门到精通,Ruby,一种简单快捷的面向对象(面向对象程序设计)脚本语言,在20世纪90年代由日本人松本行弘(Yukihiro Matsumoto)开发,遵守GPL协议和Ruby License。它的灵感与特性来自于 Perl、Smalltalk、Eiffel...

    Ruby语言入门教程

    Ruby语言入门教程,一种为简单快捷的面向对象编程(面向对象程序设计)

    Ruby语言教程.docx

    在您开始练习本教程中提供的各种实例之前,最好已经对计算机程序和计算机程序设计语言有一个基本的认识,这将有助于您对本教程的学习。 编译/执行 Ruby 程序 对于大多数编程语言,第一个入门实例便是 "Hello World!...

    ruby语法基础教程

    Ruby是一种功能强大的面向对象的脚本语言,可以使用它方便快捷地进行面向对象程序设计。与Perl类似,而且Ruby具有强大的文本处理功能,使文本处理变得简单。此外还可以方便地使用C语言来扩展Ruby的功能。

    Ruby入门教程

    Ruby,一种为简单快捷的面向对象编程(面向对象程序设计)而创的脚本语言,在20世纪90年代由日本人松本行弘(まつもとゆきひろ/Yukihiro Matsumoto)开发,遵守GPL协议和Ruby License。它的灵感与特性来自于 Perl、...

    Elixir程序设计(英文版) pdf

    《Elixir 程序设计》作者就是15 年前编写了Programming Ruby,将Ruby 带入大众视野的Dave Thomas。这一次他延续了一贯的写作风格,以一个拥有面向对象的开发经历但并未接触过函数式编程的开发者的角度切入,循序渐进...

    [XML入门经典(第4版)].(Beginning.XML.4th.Edition).(美)亨特,(美)拉夫特,(美)福思特.扫描版.pdf

    第Ⅴ部分 程序设计 第11章 文档对象模型(DOM) 第12章 XML简单API 第Ⅵ部分 通信 第13章 RSS、Atom和内容聚合 第14章 Web服务 第15章 SOAP和WSDL 第16章 Ajax 第Ⅶ部分 显示 第17章 样式表(CSS) 第18章 XHTML语言 第...

    疯狂JAVA讲义

    2.1.3 面向对象程序设计简介 27 2.1.4 面向对象的基本特征 28 2.2 UML(统一建模语言)介绍 29 2.2.1 用例图 30 2.2.2 类图 31 2.2.3 组件图 33 2.2.4 部署图 33 2.2.5 顺序图 34 2.2.6 活动图 34 2.2.7 ...

    积分管理系统java源码-ruby-tutorial-cn:ruby-tutorial-cn

    是一种开源的面向对象程序设计的服务器端脚本语言, 在 20 世纪 90 年代中期由日本的松本行弘(まつもとゆきひろ/Yukihiro Matsumoto)设计并开发。 在 Ruby 社区,松本也被称为马茨(Matz)。Ruby 可运行于多种平台...

    从入门到精通HTML5——PDF——网盘链接

     2.3.6 设置网页文字及语言 22  2.3.7 设置网页的定时跳转 23  2.3.8 设定有效期限 24  2.3.9 禁止从缓存中调用 24  2.3.10 删除过期的cookie 25  2.3.11 强制打开新窗口 25  2.3.12 设置网页的过渡效果 26 ...

    JAVA上百实例源码以及开源项目源代码

    6个目标文件,EJB来模拟银行ATM机的流程及操作:获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,并将当前的计数器初始化,调用每一个EJB对象的count()方法,保证Bean正常被激活和钝化,EJB对象是用...

    JAVA上百实例源码以及开源项目

    6个目标文件,EJB来模拟银行ATM机的流程及操作:获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,并将当前的计数器初始化,调用每一个EJB对象的count()方法,保证Bean正常被激活和钝化,EJB对象是用...

    优秀代码编辑器工具 PhpDesigner 8.1.2 Portable 绿色中文免费版.zip

    不管您是PHP网页设计高手,或者是刚入门的新手,您都可以使用此软件来帮您设计网页程序(SQL、HTML 亦支持)。 PHP Designer 特色 1.提升了你编写程序的效率PHP Designer提升了你编写程序的效率和简化了复杂的编码...

    java开源包1

    jFastCGI 是一个可以让Tomcat 之类的Servlet容器支持运行PHP和其它fastcgi应用程序,将Servlet容器充当成一个FastCGI 的网关。 Java 绘图框架 JGraphEd JGraphEd 是一个 Java 的图形编辑应用和绘图框架。 Java ...

    精通qt4编程(源代码)

    \ 第11章 事件机制 李立夏介绍了Qt的事件处理模型,详细介绍了在Qt程序设计中处理事件的五种方法,并讨论了如何利用Qt事件机制加快用户界面响应速度。 283 \ 第12章 数据库 李立夏介绍了Qt的数据库处理,重点介绍了...

    精通Qt4编程(第二版)源代码

    \阅读本书的读者需要具有基本的C++程序设计知识,毕竟Qt是用C++编写的应用程序框架。如果要学习QtScript,还需要了解JavaScript。 \本书的结构 \本书共21章,每章讨论一个专题。章节安排上基本采用循序渐进、由浅...

    java开源包11

    jFastCGI 是一个可以让Tomcat 之类的Servlet容器支持运行PHP和其它fastcgi应用程序,将Servlet容器充当成一个FastCGI 的网关。 Java 绘图框架 JGraphEd JGraphEd 是一个 Java 的图形编辑应用和绘图框架。 Java ...

    java开源包2

    jFastCGI 是一个可以让Tomcat 之类的Servlet容器支持运行PHP和其它fastcgi应用程序,将Servlet容器充当成一个FastCGI 的网关。 Java 绘图框架 JGraphEd JGraphEd 是一个 Java 的图形编辑应用和绘图框架。 Java ...

Global site tag (gtag.js) - Google Analytics