雷林鹏分享:Ruby 类和对象

  Ruby 类和对象

  Ruby 是一种完美的面向对象编程语言。面向对象编程语言的特性包括:

  数据封装

  数据抽象

  多态性

  继承

  这些特性将在 面向对象的 Ruby 中进行讨论。

  一个面向对象的程序,涉及到的类和对象。类是个别对象创建的蓝图。在面向对象的术语中,您的自行车是自行车类的一个实例。

  以车辆为例,它包括车轮(wheels)、马力(horsepower)、燃油或燃气罐容量(fuel or gas tank capacity)。这些属性形成了车辆(Vehicle)类的数据成员。借助这些属性您能把一个车辆从其他车辆中区分出来。

  车辆也能包含特定的函数,比如暂停(halting)、驾驶(driving)、超速(speeding)。这些函数形成了车辆(Vehicle)类的数据成员。因此,您可以定义类为属性和函数的组合。

  类 Vehicle 的定义如下:

  Class Vehicle

  {

  Number no_of_wheels

  Number horsepower

  Characters type_of_tank

  Number Capacity

  Function speeding

  {

  }

  Function driving

  {

  }

  Function halting

  {

  }

  }

  通过给这些数据成员分配不同的值,您可以创建类 Vehicle 的不同实例。例如,一架飞机有三个轮子,马力 1,000,燃油罐容量为 100 升。以同样的方式,一辆汽车有四个轮子,马力 200,煤气罐容量为 25 升。

  在 Ruby 中定义类

  为了使用 Ruby 实现面向对象编程,您需要先学习如何在 Ruby 中创建对象和类。

  在 Ruby 中,类总是以关键字 class 开始,后跟类的名称。类名的首字母应该大写。类 Customer 如下所示:

  class Customer

  end

  您可以使用关键字 end 终止一个类。类 中的所有数据成员都是介于类定义和 end 关键字之间。

  Ruby 类中的变量

  Ruby 提供了四种类型的变量:

  局部变量:局部变量是在方法中定义的变量。局部变量在方法外是不可用的。在后续的章节中,您将看到有关方法的更多细节。局部变量以小写字母或 _ 开始。

  实例变量:实例变量可以跨任何特定的实例或对象中的方法使用。这意味着,实例变量可以从对象到对象的改变。实例变量在变量名之前放置符号(@)。

  类变量:类变量可以跨不同的对象使用。类变量属于类,且是类的一个属性。类变量在变量名之前放置符号(@@)。

  全局变量:类变量不能跨类使用。如果您想要有一个可以跨类使用的变量,您需要定义全局变量。全局变量总是以美元符号($)开始。

  实例

  使用类变量 @@no_of_customers,您可以判断被创建的对象数量,这样可以确定客户数量。

  class Customer

  @@no_of_customers=0

  end

  在 Ruby 中使用 new 方法创建对象

  对象是类的实例。现在您将学习如何在 Ruby 中创建类的对象。在 Ruby 中,您可以使用类的方法 new 创建对象。

  方法 new 是一种独特的方法,在 Ruby 库中预定义。new 方法属于类方法。

  下面的实例创建了类 Customer 的两个对象 cust1 和 cust2:

  cust1 = Customer. new

  cust2 = Customer. new

  在这里,cust1 和 cust2 是两个对象的名称。对象名称后跟着等号(=),等号后跟着类名,然后是点运算符和关键字 new。

  自定义方法来创建 Ruby 对象

  您可以给方法 new 传递参数,这些参数可用于初始化类变量。

  当您想要声明带参数的 new 方法时,您需要在创建类的同时声明方法 initialize。

  initialize 方法是一种特殊类型的方法,将在调用带参数的类的 new 方法时执行。

  下面的实例创建了 initialize 方法:

  class Customer

  @@no_of_customers=0

  def initialize(id, name, addr)

  @cust_id=id

  @cust_name=name

  @cust_addr=addr

  end

  end

  在本实例中,您可以声明带有 id、name、addr 作为局部变量的 initialize方法。在这里,def 和 end 用于定义 Ruby 方法 initialize。在后续的章节中,您将学习有关方法的更多细节。

  在 initialize 方法中,把这些局部变量的值传给实例变量 @cust_id、@cust_name 和 @cust_addr。在这里,局部变量的值是随着 new 方法进行传递的。

  现在,您可以创建对象,如下所示:

  cust1=Customer.new("1", "John", "Wisdom Apartments, Ludhiya")

  cust2=Customer.new("2", "Poul", "New Empire road, Khandala")

  Ruby 类中的成员函数

  在 Ruby 中,函数被称为方法。类中的每个方法是以关键字 def 开始,后跟方法名。

  方法名总是以小写字母开头。在 Ruby 中,您可以使用关键字 end 来结束一个方法。

  下面的实例定义了一个 Ruby 方法:

  class Sample

  def function

  statement 1

  statement 2

  end

  end

  在这里,statement 1 和 statement 2 是类 Sample 内的方法 function 的主体的组成部分。这些语句可以是任何有效的 Ruby 语句。例如,我们可以使用方法 puts 来输出 Hello Ruby,如下所示:

  class Sample

  def hello

  puts "Hello Ruby!"

  end

  end

  下面的实例将创建类 Sample 的一个对象,并调用 hello 方法:

  #!/usr/bin/ruby

  class Sample

  def hello

  puts "Hello Ruby!"

  end

  end

  # 使用上面的类来创建对象

  object = Sample. new

  object.hello

  这将会产生下面的结果:

  Hello Ruby!

  简单的案例研究

  如果您想要做更多有关类和对象的练习,这里有一个案例研究:

  Ruby 类案例

  本文转载自:w3cschool(编辑:雷林鹏 来源:网络)

原文地址:https://www.cnblogs.com/pengpeng1208/p/10255159.html

时间: 2024-08-04 01:28:59

雷林鹏分享:Ruby 类和对象的相关文章

雷林鹏分享:Ruby File 类和方法

Ruby File 类和方法 File 表示一个连接到普通文件的 stdio 对象.open 为普通文件返回该类的一个实例. 类方法 序号方法 & 描述 1File::atime( path) 返回 path 的最后访问时间. 2File::basename( path[, suffix]) 返回 path 末尾的文件名.如果指定了 suffix,则它会从文件名末尾被删除. 例如:File.basename("/home/users/bin/ruby.exe") #=>

雷林鹏分享:Ruby 类案例

Ruby 类案例 下面将创建一个名为 Customer 的 Ruby 类,您将声明两个方法: display_details:该方法用于显示客户的详细信息. total_no_of_customers:该方法用于显示在系统中创建的客户总数量. #!/usr/bin/ruby class Customer @@no_of_customers=0 def initialize(id, name, addr) @cust_id=id @cust_name=name @cust_addr=addr en

雷林鹏分享:Ruby 多线程

Ruby 多线程 每个正在系统上运行的程序都是一个进程.每个进程包含一到多个线程. 线程是程序中一个单一的顺序控制流程,在单个程序中同时运行多个线程完成不同的工作,称为多线程. Ruby 中我们可以通过 Thread 类来创建多线程,Ruby的线程是一个轻量级的,可以以高效的方式来实现并行的代码. 创建 Ruby 线程 要启动一个新的线程,只需要调用 Thread.new 即可: # 线程 #1 代码部分 Thread.new { # 线程 #2 执行代码 } # 线程 #1 执行代码 实例 以

雷林鹏分享:Ruby CGI方法

Ruby CGI方法 以下为CGI类的方法列表: 序号方法描述 1CGI::new([ level="query"]) 创建 CGI 对象.query可以是以下值: query: 没有 HTML 生成输出 html3: HTML3.2 html4: HTML4.0 Strict html4Tr: HTML4.0 Transitional html4Fr: HTML4.0 Frameset 2CGI::escape( str) 使用 URL 编码来转义字符串 3CGI::unescape

雷林鹏分享:Ruby 面向对象

Ruby 面向对象 Ruby 是纯面向对象的语言,Ruby 中的一切都是以对象的形式出现.Ruby 中的每个值都是一个对象,即使是最原始的东西:字符串.数字,甚至连 true 和 false 都是对象.类本身也是一个对象,是 Class 类的一个实例.本章将向您讲解所有与 Ruby 面向对象相关的主要功能. 类用于指定对象的形式,它结合了数据表示法和方法,把数据整理成一个整齐的包.类中的数据和方法被称为类的成员. Ruby 类定义 当您定义一个类时,您实际是定义了一个数据类型的蓝图.这实际上并没

雷林鹏分享:Ruby 文件的输入与输出

Ruby 文件的输入与输出 Ruby 提供了一整套 I/O 相关的方法,在内核(Kernel)模块中实现.所有的 I/O 方法派生自 IO 类. 类 IO 提供了所有基础的方法,比如 read. write. gets. puts. readline. getc 和 printf. 本章节将讲解所有 Ruby 中可用的基础的 I/O 函数.如需了解更多的函数,请查看 Ruby 的 IO 类. puts 语句 在前面的章节中,您赋值给变量,然后使用 puts 语句打印输出. puts 语句指示程序

雷林鹏分享:Ruby 日期 & 时间(Date & Time)

Ruby 日期 & 时间(Date & Time) Time 类在 Ruby 中用于表示日期和时间.它是基于操作系统提供的系统日期和时间之上.该类可能无法表示 1970 年之前或者 2038 年之后的日期. 本教程将让您熟悉日期和时间的所有重要的概念. 创建当前的日期和时间 下面是获取当前的日期和时间的简单实例: #!/usr/bin/ruby -w time1 = Time.new puts "Current Time : " + time1.inspect # Ti

雷林鹏分享:Ruby JSON

Ruby JSON 本章节我们将为大家介绍如何使用 Ruby 语言来编码和解码 JSON 对象. 环境配置 在使用 Ruby 编码或解码 JSON 数据前,我们需要先安装 Ruby JSON 模块.在安装该模块前你需要先安装 Ruby gem,我们使用 Ruby gem 安装 JSON 模块. 但是,如果你使用的是最新版本的 Ruby,可能已经安装了 gem,解析来我们就可以使用以下命令来安装Ruby JSON 模块: $gem install json 使用 Ruby 解析 JSON 以下为J

雷林鹏分享:Ruby 异常

Ruby 异常 异常和执行总是被联系在一起.如果您打开一个不存在的文件,且没有恰当地处理这种情况,那么您的程序则被认为是低质量的. 如果异常发生,则程序停止.异常用于处理各种类型的错误,这些错误可能在程序执行期间发生,所以要采取适当的行动,而不至于让程序完全停止. Ruby 提供了一个完美的处理异常的机制.我们可以在 begin/end 块中附上可能抛出异常的代码,并使用 rescue 子句告诉 Ruby 完美要处理的异常类型. 语法 begin # - rescue OneTypeOfExce