首页 > 编程语言 >无涯教程-Ruby - 类和对象

无涯教程-Ruby - 类和对象

时间:2023-11-19 18:03:31浏览次数:51  
标签:Customer 教程 end 方法 无涯 new Ruby class

面向对象的程序涉及类(Class)和对象(Object)。以车辆为例,它包括车轮,马力以及燃油或汽油箱的容量。这些特征构成了Vehicle类的数据成员,车辆还可以具有某些函数,如停止,驾驶和超速行驶,因此,您可以将类定义为特征和函数的组合。

车辆类(Vehicle)别可以定义为-

Class Vehicle {

   Number no_of_wheels
   Number horsepower
   Characters type_of_tank
   Number Capacity
   Function speeding {
   }
   
   Function driving {
   }
   
   Function halting {
   }
}

通过为这些数据成员分配不同的值,您可以形成多个Vehicle类。如一架飞机有三个轮子,马力为1000,油箱类型为燃料,容量为100升。同样,一辆汽车有四个轮子,马力为200,油箱为汽油,容量为25升。

定义Ruby类

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

Ruby中的类始终以关键字 class 开头,后跟该类的名称,名称应始终以大写字母开头,类 Customer 可以显示为-

class Customer
end

您可以使用关键字 end 终止声明。 class 中的所有数据成员都在类定义和 end 关键字之间。

Ruby类变量

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

  • Local Variables        - 局部变量是在方法中定义的变量,局部变量在方法之外不可用,局部变量以小写字母或_开头。

  • Instance Variables  - 实例变量可用于任何特定或对象的方法之间,实例变量前面带有at符号(@),后跟变量名称。

  • Class Variables         -  类变量可用于不同的对象,类变量属于该类,是类的特征。 它们前面带有符号@@后跟变量名。

  • Global Variables      -  全局变量在各个类中使用, 全局变量始终以美元符号($)开头。

使用类变量@@no_of_customers,可以确定正在创建的对象数,这使得能够得出客户数量。

class Customer
   @@no_of_customers=0
end

创建Ruby对象

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

方法 new 是一种独特的方法,在Ruby库中已预定义,这是创建类Customer的两个对象cust1和cust2的示例-

cust1 = Customer. new
cust2 = Customer. new

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

Ruby自定义方法

您可以将参数传递给方法 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

在此示例中,您将 initialize 方法声明为 id,name 和 addr 作为局部变量。在这里, def 和 end 用于定义Ruby方法 initialize 。您将在后续章节中了解有关方法的更多信息。

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

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

Ruby成员函数

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

方法名称始终首选为小写字母。您可以通过使用关键字 end 结束Ruby中的方法。

这是定义Ruby方法的示例-

class Sample
   def function
      statement 1
      statement 2
   end
end

在这里,语句1 和语句2 是类Sample中方法 function 主体的一部分。如,无涯教程可以放置方法 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!

参考链接

https://www.learnfk.com/ruby/ruby-classes.html

标签:Customer,教程,end,方法,无涯,new,Ruby,class
From: https://blog.51cto.com/u_14033984/8474914

相关文章

  • 无涯教程-Ruby - 简介
    Ruby是一种面向对象、命令式、函数式、动态的通用编程语言。在20世纪90年代中期由日本计算机科学家松本行弘(Matz)设计并开发。遵守BSD许可证和RubyLicense。它的灵感与特性来自于Perl、Smalltalk、Eiffel、Ada以及Lisp语言。由Ruby语言本身还发展出了JRuby(Java平台)、IronRuby(.N......
  • 无涯教程-RSpec - 期望值
    当您学习RSpec时,您可能会读到很多关于期望值(Expectations)的内容,起初可能会有些混乱。当您看到"Expectations"一词时,应牢记两个主要细节-Expectations只是it块中使用expect()方法的一条语句。当您具有如下代码:expect(1+1).toeq(2)时,您期望表达式1+1的值为2。Ex......
  • 无涯教程-RSpec - 过滤器
    在阅读本节之前,您可能需要阅读有关RSpec元数据(Metadata)的部分,因为事实证明,RSpec筛选(Filtering)基于RSpec元数据。假设您有一个spec文件,它包含两种类型的测试:正确测试和错误测试。让无涯教程这样定义它们-RSpec.describe"AnExampleGroupwithpositiveandnegativeExam......
  • 无涯教程-RSpec - 元数据
    RSpec是一种灵活而强大的工具。RSpec中的元数据(Metadata)函数也不例外。元数据通常指“关于数据的数据”。在RSpec中,这意味着有关您的描述,上下文及其块的数据,让无涯教程看一个例子-RSpec.describe"AnExampleGroupwithametadatavariable",:foo=>17docontext'an......
  • 无涯教程-RSpec - Subjects主题
    RSpecsubjets提供了编写简写测试用例的快捷方式。考虑以下代码-classPersonattr_reader:first_name,:last_namedefinitialize(first_name,last_name)@first_name=first_name@last_name=last_nameendenddescribePersondo......
  • 火炬之光2 武器装备属性修改 教程
    先在装备框附魔框等等框里点两下(拿起放下)要改的装备然后在点读取才能读到数据附魔也是同样两个读取左边的是读取百分之多少多少开头的属性右边的是读取传输/convey开头的数据  然后自己改想要的值。改完要附魔1次才能生效 点那按钮即可 也可以去附魔师......
  • 无涯教程-RSpec - Tags标签
    RSpecTags提供了一种在规范文件中运行特定测试的简便方法。假设您只想运行指定测试方法,则可以使用Tags标签实现。describe"HowtorunspecificExampleswithTags"doit'isaslowtest',:slow=>truedosleep10puts'Thistestisslow!'end......
  • 无涯教程-RSpec - Stubs
    如果您已经阅读了RSpecDoubles部分,那么您已经看到了RSpecStubs,它是一种特殊类型的方法,代表现有方法或尚不存在的方法。这是RSpecDoubles部分中的代码-classClassRoomdefinitialize(students)@students=studentsEnddeflist_student_names......
  • 无涯教程-RSpec - 模拟对象
    在本章中,无涯教程将讨论RSpecDoubles,RSpecDouble是一个模拟对象,在代码中模拟系统的另一个对象,方便测试。假设您为学校构建一个应用程序,有一个教室,还有一个学生。类定义如下:classClassRoomdefinitialize(students)@students=studentsenddeflis......
  • 无涯教程-RSpec - 基本语法
    让无涯教程仔细看看HelloWorld示例的代码。首先,如果不清楚,正在测试HelloWorld类的函数。当然,这是一个非常简单的类,仅包含一个方法say_hello()。这又是RSpec代码-describeHelloWorlddocontext“WhentestingtheHelloWorldclass”doit"Thesay_......