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