位置:首页 > 脚本语言 > Ruby在线教程 > Ruby类案例学习

Ruby类案例学习

为了方便实例学习研究,我们将创建一个Ruby类称为Customer ,将声明两种方法:

  • 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
   end
   def display_details()
      puts "Customer id #@cust_id"
      puts "Customer name #@cust_name"
      puts "Customer address #@cust_addr"
    end
    def total_no_of_customers()
       @@no_of_customers += 1
       puts "Total number of customers: #@@no_of_customers"
    end
end

display_details方法包含三个把报表显示客户ID,客户名称,客户地址。puts语句: 

puts "Customer id #@cust_id"

将显示客户ID的变量@cust_id的值的在单独一行文本中。

想在单独一行中中显示的文字和实例变量的值,需要在变量名之前puts语句的hash符号(#)。应括在双引号中的文字和实例变量随着哈希符号(#)。

第二种方法中,total_no_of_customers,该方法包含类变量@@no_of_customers。表达@@no_of_customers+=1,每次被调用的方法total_no_of_customers。通过这种方式,将永远持有客户总数的类变量。

现在,创建两个客户如下:

cust1=Customer.new("1", "John", "Wisdom Apartments, Ludhiya")
cust2=Customer.new("2", "Poul", "New Empire road, Khandala")

在这里,我们创建了两个对象Customer类为cust1 cust2,并通过new方法传递必要的参数。 initialize方法被调用时,对象的属性初始化。

一旦对象被创建,需要调用类的方法,通过使用两个对象。如果想调用方法或任何数据成员,看看如下写法:

cust1.display_details()
cust1.total_no_of_customers()

对象名称,应始终遵循一个点,依次其次是方法的名字或任何数据成员。我们已经看到,如何调用两种方法使用cust1对象。要使用cust2对象,可以调用这两个方法,如下所示:

cust2.display_details()
cust2.total_no_of_customers()

保存并执行代码:

main.rb文件,现在把这段源代码如下:

#!/usr/bin/ruby

class Customer
   @@no_of_customers=0
   def initialize(id, name, addr)
      @cust_id=id
      @cust_name=name
      @cust_addr=addr
   end
   def display_details()
      puts "Customer id #@cust_id"
      puts "Customer name #@cust_name"
      puts "Customer address #@cust_addr"
   end
   def total_no_of_customers()
      @@no_of_customers += 1
      puts "Total number of customers: #@@no_of_customers"
   end
end

# Create Objects
cust1=Customer.new("1", "John", "Wisdom Apartments, Ludhiya")
cust2=Customer.new("2", "Poul", "New Empire road, Khandala")

# Call Methods
cust1.display_details()
cust1.total_no_of_customers()
cust2.display_details()
cust2.total_no_of_customers()

现在运行这个程序如下:

$ ruby main.rb

这将产生以下结果:

Customer id 1
Customer name John
Customer address Wisdom Apartments, Ludhiya
Total number of customers: 1
Customer id 2
Customer name Poul
Customer address New Empire road, Khandala
Total number of customers: 2