Ruby 简明教程
Ruby - Classes and Objects
Ruby 是一个完美的面向对象编程语言。面向对象编程语言具有以下特点 −
-
Data Encapsulation
-
Data Abstraction
-
Polymorphism
-
Inheritance
这些特点已在章节 Object Oriented Ruby 中进行讨论。
面向对象程序涉及类和对象。类是单个对象根据其创建的蓝图。在面向对象术语中,我们说你的自行车是自行车类对象的一个实例。
以任何车辆为例。它包含轮子、马力和燃油或油箱容量。这些特性形成了类 Vehicle 的数据成员。你可以借助这些特性来区分一辆车与另一辆车。
车辆还具有一些功能,例如停车、行驶和加速。即使这些功能也形成了类 Vehicle 的数据成员。因此,你可以将类定义为特性和功能的组合。
类 Vehicle 可以定义为 −
Class Vehicle {
Number no_of_wheels
Number horsepower
Characters type_of_tank
Number Capacity
Function speeding {
}
Function driving {
}
Function halting {
}
}
通过为这些数据成员指定不同的值,可以形成车辆类的多个实例。例如,飞机有三个轮子、1000 马力、燃油箱类型和 100 升容积。同样的,汽车有四个轮子、200 马力、汽油箱类型和 25 升容积。
Defining a Class in Ruby
要使用 Ruby 实现面向对象编程,首先需要学习如何在 Ruby 中创建对象和类。
Ruby 中的类总是以关键字 class 开始,后跟类的名称。名称始终应以大写字母开头。Customer 类可以显示为 −
class Customer
end
使用关键字 end 终止一个类。类中的所有数据成员都位于类定义和 end 关键字之间。
Variables in a Ruby Class
Ruby 提供四种类型的变量 −
-
Local Variables − 局部变量是在方法中定义的变量。局部变量在方法外部不可用。你将在后面的章节中看到有关方法的更多详细信息。局部变量以小写字母或 _ 开头。
-
Instance Variables − 实例变量可用于任何特定实例或对象的各种方法。这意味着实例变量因对象而异。实例变量之前加上 @ 符号,后跟变量名称。
-
Class Variables − 类变量可用于不同的对象。类变量属于类,是类的特征。它们之前加上 @@ 符号,后跟变量名称。
-
Global Variables − 类变量不能跨类使用。如果你想有一个单一变量,它可以跨类使用,你需要定义一个全局变量。全局变量始终以美元符号 ($) 开头。
Creating Objects in Ruby using new Method
对象是类的实例。你现在将学习如何在 Ruby 中创建类的对象。可以使用类的 new 方法在 Ruby 中创建对象。
new 方法是一种独特的类型方法,它在 Ruby 库中预定义。new 方法属于类方法。
以下是创建 Customer 类对象的两个对象 cust1 和 cust2 的示例 −
cust1 = Customer. new
cust2 = Customer. new
此处,cust1 和 cust2 是两个对象的名字。在等于号 (=) 之后编写对象名称,然后是类名称。然后,跟随点运算符和 new 关键字。
Custom Method to Create Ruby Objects
可以将参数传递给 new 方法,这些参数可用于初始化类变量。
当计划用参数声明 new 方法时,需要在创建类时声明 initialize 方法。
initialize 方法是一种特殊类型的方法,当使用参数调用类的 new 方法时会执行该方法。
以下是创建初始化方法的示例 −
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")
Member Functions in Ruby Class
在 Ruby 中,函数称为方法。类中的每个方法以关键字 def 开始,后跟方法名称。
方法名称始终首选 lowercase letters 。您使用关键字 end 在 Ruby 中结束一个方法。
这里是一个定义 Ruby 方法的示例:
class Sample
def function
statement 1
statement 2
end
end
在此,语句 1 和语句 2 是类 Sample 中方法函数主体的一部分。这些语句可以是任何有效的 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
# Now using above class to create objects
object = Sample. new
object.hello
这会产生以下结果 −
Hello Ruby!