学习ruby,最基础的是理解ruby的对象模型,经过这几天抽空学习,大致总结了下。
先看一下代码示例
class Bird
@@legs=2
def eat
puts "i am eating"
end
def comefrom(location)
@birthplace=location
puts "i am come from #{@birthplace},i have #{@@legs} legs. "
end
end
class Crow < Bird
@plumecolor="black"
def peck
puts "i am pecking. color is :#{@plumecolor}"
end
def self.showcolor
puts "plume color is:#{@plumecolor},i have #{@@legs} legs."
@plumecolor
end
end
bird=Bird.new
crow1=Crow.new
crow2=Crow.new
def crow2.speaking
@canspeak=true
puts "im speaking"
end
bird.eat
crow1.peck
crow2.speaking
#crow1.speaking
puts "Crow's color #{Crow.showcolor}"
crow2.comefrom("north")
bird.comefrom("north")
代码说明:
1.定义了两个类,Bird和Crow,Crow继承了Bird
2.定义了几个不同的变量,实例变量、类实例变量、类变量。@birthplace属于实例变量。@plumecolor属于类实例变量。@@legs属于类变量。从示例可以看出,实例可以访问实例变量和类变量,访问不了类实例变量,
3.crow2和crow1都属于类Crow的对象实例,但是crow2比crow1多一个方法叫speaking。这个方法属于单件方法,存储在对象的eigenclass中。
基于以上代码说明,画下以上代码的底层对象模型:
说明:
C代表所属类的意思,左边是对象右边是类。
S代表父子类的意思,下面是子类上边是父类。
从对象模型图可以看出:
1.类本身也是一个对象,该对象所属的类是一个EigenClass。
2.类的集成结构,又体现了EigenClass的集成结构。
3.EigenClass继承自Class
4.ruby对象的方法查找路径是先向右一步,再往上查,随类实例的方法和实例的方法是隔离的。如crow2的方法一定在#crow2、Crow、Bird、Object、BaseObject里依次查找。而对象Crow的方法一定在#Crow、#Bird、#Object、#BaseObject、Class里依次查找。
- 大小: 48.3 KB
分享到:
相关推荐
4. **自动序列化和反序列化**:Her可以自动将Ruby对象转换为JSON格式发送到服务器,同时也能将服务器返回的数据解析为Ruby对象。 5. **错误处理**:Her内置了错误处理机制,当API请求失败时,可以捕获并处理相应的...
Ruby的MongoMapper库就是为了让开发者能够更自然地在Ruby对象和MongoDB文档之间进行映射,从而简化数据操作。 MongoMapper的设计理念深受ActiveRecord的影响,它是Ruby on Rails框架中的核心组件,但MongoMapper...
Ruby on Rails是MVC(模型-视图-控制器)架构的忠实实践者,它提供了代码生成器、数据库迁移、ActiveRecord对象关系映射、ActionPack组件(包含ActionView和ActionController)等工具,大大提高了开发效率。...
Ruby FastJSONAPI 是一个专为Ruby对象设计的高性能JSON:API序列化库。它旨在帮助开发者以简洁、高效的方式将Ruby对象转换为符合JSON:API规范的JSON格式,极大地提高了开发效率和应用程序的性能。 JSON:API是一个...
- **面向对象**:几乎所有事物在Ruby中都是对象,包括数字、字符串等基本数据类型。 - **动态性**:Ruby支持运行时修改代码结构,允许开发者在程序运行过程中改变类和方法的行为。 - **元编程能力**:Ruby提供了一种...
Ruby是一种面向对象的、动态类型的编程语言,以其简洁、优雅的语法和强大的元编程能力而闻名。本教程旨在帮助初学者从零开始掌握Ruby,并逐步深入到高级特性,使你能够充分利用Ruby的强大功能。 首先,让我们从Ruby...
1. **ActiveRecord**:这是Rails中负责数据库交互的部分,它将数据库记录映射为Ruby对象,提供了一种简单、直观的方式来操作数据。 2. **ActiveRecord ORM**:对象关系映射(ORM)使得开发者可以使用Ruby代码操作...
1. Ruby对象模型:Ruby中的每个值都是一个对象,每个对象都有一个类,每个类都继承自Object类。Ruby的对象模型是理解元编程的基础。书中通过组织和解释Ruby对象模型的概念,帮助读者清晰理解Ruby的继承和混入机制。 ...
第一部分的内容包括对Ruby语言一个概要介绍和对Ruby对象模型的讲解。从我个人阅读的感觉来看,第一章对于Ruby语言的介绍是一个非常好的起步教程,把Ruby语言中一些核心点都指了出来。比起我读到过一些Ruby语言教程,...
Ruby是一种高级、面向对象的脚本编程语言,由日本的松本行弘(Yukihiro Matsumoto)在1995年设计并创建。它以其简洁、优雅的语法和强大的编程模型而闻名,旨在提高程序员的生产力和代码可读性。本教程将带你深入学习...
Ruby编程语言是由Yukihiro Matsumoto(又称为Matz)创建的一种面向对象的语言,它以其简洁、优雅的语法和强大的功能而闻名。《Ruby Programming—向Ruby之父学程序设计(第2版)》这本书旨在帮助初学者,甚至是完全...
Ruby是一种面向对象的编程语言,以其简洁、优雅的语法著称,被广泛应用于Web开发,尤其是与Ruby on Rails框架结合使用。"Ruby新手学习书"和"Rails_4_days"这两个资源是为初学者设计的,旨在帮助他们快速掌握Ruby语言...
《From Java to Ruby》这本书是Java开发者转向Ruby语言的一份...Ruby提供了一个更为简洁和动态的编程模型,能够提升开发效率并激发创新。对于希望拓宽视野和提升编程技能的Java开发者来说,这是一个值得探索的新领域。
Ruby是一种面向对象的脚本语言,以其简洁、优雅的语法和强大的编程能力而闻名。这份“Ruby教程.chm”和“Ruby程序设计.doc”提供了学习Ruby的宝贵资源,旨在帮助初学者快速掌握Ruby的核心概念和编程技巧。 首先,让...
Ruby是一种面向对象的、动态类型的编程语言,以其简洁、优雅的语法著称,尤其适合Web开发,其中Rails框架是其最著名的应用之一。API(Application Programming Interface)是软件开发者用来与操作系统、库或服务进行...
Form对象可以与任何数据结构进行绑定,包括ActiveRecord模型、 PORO(Plain Old Ruby Object)或者其他任何对象。这意味着Reform是数据库框架无关的,无论你使用的是ActiveRecord、DataMapper还是Sequel,都可以轻松...
用户需要了解如何在本地设置和使用Ruby环境,包括安装Gem包,理解Ruby语法和对象模型,以及如何通过Ruby编译和管理项目。如果你计划使用这个版本的Ruby,确保查看相关文档,学习其特性和变更,以便充分利用它的功能...
Ruby是一种面向对象的编程语言,以其简洁、优雅的语法著称,特别适合Web开发。Ruby on Rails(简称Rails)是基于Ruby构建的一个开源Web应用程序框架,它遵循模型-视图-控制器(MVC)架构模式,极大地提高了开发效率...
- `Item`可能代表游戏中的物品或道具,它们可能有自己的属性和行为,可以通过Ruby的对象模型来设计和实现。 - `Mgc`可能代表魔法、魔法效果或游戏中的魔法系统,可能包含一系列的规则和算法。 5. **测试策略**:...