1.8 Ruby 对象/类/方法
对象
在SketchUp中建立大量模型时,我们就需要为每个特性添加不同的值,包括坐标,材质,纹理和颜色。这些设置在设计窗口都很容易访问到,当我们单击一条线时,SketchUp会告诉我们它的长度。。但在软件中,管理这么多数据量是一个困难的任务。
为了使我们的生活更加惬意,我们组织相关特性成分级别的数据结构。例如,如果我们模拟了一套房子,我们将创建一个级数据结构的房子和下级子结构的墙壁,门和屋顶。一进门结构可以包含子子结构模型门的把手,锁,和镶板。
在软件中,这些数据结构成为对象,对象就向我们之间的变量一样可以很轻松的访问,但是和变量不同,一个对象包含了多种不同的变量。例如:变量door_height表示门的高度,而对象就会包括很多值的,比如:门的高度,宽度,深度,材质和颜色等等。
分清楚对象和数组是非常有用的,在Ruby中,数组可以包括很多不同类型的元素,但是对象仅包括一个模型。例如:如果我们设计一个房子需要记录他的每个门的高度,宽度和材质,然后这些值都存储在Door类型中,这中设计也可以应用到窗户,走廊,车库等。
两个对象是相同的类型一定会有相同的特点,但是他们对象的值会不同。如果一个Door类型定义了一个高度和宽度,但是对象door1和door2是Door的相同类型,door1和door2都必须有高度和宽度的值,但是他们他们的值不一定要相同。
类
类定义了对象的结构类似于一座大厦的规划图或生物的DNA结构。也可以这么来理解,一个类定义了对象的数据和操作对象数据的方法。
在Ruby中,一切都是对象,也就是说我们用的一切都有一个类。我们可以使用class方法来显示对象是属于哪个类,如下所示:
5.class → Fixnum
3.14159.class → Float
“Hello, world”.class → String
[5, 6, 7].class → Array
我们可以在Ruby控制台上面看到相应的结果,5是类Fixnum(固定量数)的对象,3.14159是类Float(浮点数)的对象,”Hello, world”是类String的对象,[5, 6, 7]是类Array的对象,如果我们分析其他人的代码,class方法可以轻松的确定我们正在处理的是哪种数据。
Fixnum,Float,String和Array这些类都是Ruby的标准库提供的,但是我们教程中的重点放在SketchUp API上面,下面两个类是非常重要的,我们将在后面再讨论。
Edge – 类Edge创建的对象,代表SketchUp的一条线段
Face – 类Face创建的对象,代表SketchUo的二维平面
我们可以在http://code.google.com/apis/sketchup/docs/index.html中详细的看到SketchUp API的所有类,以及他们的使用方法。
实例方法
在我们早期讨论字符串的操作像+和*,也提到了一系列命名的方法,这些方法都是操作字符串对象的比如:如果str是String的对象,str.length返回字符串str的长度,str.downcase返回字符串的小写形式。完整的String方法,我们可以使用下面的代码列出来:
“Hello”.methods
这里将列出String对象的所有方法。如果str是一个字符串变量,我们可以通过str.methods来查看。这些方法都是定义在String对象上面的,所有的String对象,都可以调用它们。
Array类给它的对象提供了其他一系列的方法,请看下面的一些实例:
arr = [0, 1, 2]
arr.length → 3
arr.first → 0
arr.last → 2
其实方法就是在类中定义的函数,用来操作对象的数据。简单的理解,对象代表一种东西,方法提供的功能就是东西特性的相互作用。方法激活和调用使用.符号:对象加上点和方法名,例如如果Auto类定义了方法reverse,auto1和auto2都是Auto的对象,那么我们就是在这两个对象中使用reverse方法,使用这种格式:auto1.reverse和auto2.reverse。
有一些方法操作需要提供额外的数据,在前面讲数组的方法时,有一个fill方法就需要我们提供一个值,取代数值中所有元素的值。这个额外的数据我们成为参数,可以使用圆括号或者不使用也行,下面是一个实例:
arr = [0, 1, 2, 3]
arr.fill(7) → [7, 7, 7, 7]
arr.fill 7 → [7, 7, 7, 7]
如果一个方法需要多个参数的,那么这些参数都必须使用逗号分隔开来。
(特别注明:本教程转自”一米网校”转载请与原作者联系。)
评论0