`
singleant
  • 浏览: 377855 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

【ruby】ruby对象模型

    博客分类:
  • ruby
阅读更多

学习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
0
0
分享到:
评论

相关推荐

    Ruby-Her一个ORM对象关系映射将REST资源映射成Ruby对象

    4. **自动序列化和反序列化**:Her可以自动将Ruby对象转换为JSON格式发送到服务器,同时也能将服务器返回的数据解析为Ruby对象。 5. **错误处理**:Her内置了错误处理机制,当API请求失败时,可以捕获并处理相应的...

    Ruby-MongoMapper针对Mongo的一个Ruby对象映射器

    Ruby的MongoMapper库就是为了让开发者能够更自然地在Ruby对象和MongoDB文档之间进行映射,从而简化数据操作。 MongoMapper的设计理念深受ActiveRecord的影响,它是Ruby on Rails框架中的核心组件,但MongoMapper...

    Ruby完全自学手册

    Ruby on Rails是MVC(模型-视图-控制器)架构的忠实实践者,它提供了代码生成器、数据库迁移、ActiveRecord对象关系映射、ActionPack组件(包含ActionView和ActionController)等工具,大大提高了开发效率。...

    Ruby-FastJSONAPI一个用于Ruby对象的快速JSONAPI的序列化器

    Ruby FastJSONAPI 是一个专为Ruby对象设计的高性能JSON:API序列化库。它旨在帮助开发者以简洁、高效的方式将Ruby对象转换为符合JSON:API规范的JSON格式,极大地提高了开发效率和应用程序的性能。 JSON:API是一个...

    Ruby编程Ruby Programming

    - **面向对象**:几乎所有事物在Ruby中都是对象,包括数字、字符串等基本数据类型。 - **动态性**:Ruby支持运行时修改代码结构,允许开发者在程序运行过程中改变类和方法的行为。 - **元编程能力**:Ruby提供了一种...

    ruby中文教程,从基础到深入的让你学习ruby

    Ruby是一种面向对象的、动态类型的编程语言,以其简洁、优雅的语法和强大的元编程能力而闻名。本教程旨在帮助初学者从零开始掌握Ruby,并逐步深入到高级特性,使你能够充分利用Ruby的强大功能。 首先,让我们从Ruby...

    ruby(前途大好的ruby+rains)

    1. **ActiveRecord**:这是Rails中负责数据库交互的部分,它将数据库记录映射为Ruby对象,提供了一种简单、直观的方式来操作数据。 2. **ActiveRecord ORM**:对象关系映射(ORM)使得开发者可以使用Ruby代码操作...

    ruby元编程.pdf

    1. Ruby对象模型:Ruby中的每个值都是一个对象,每个对象都有一个类,每个类都继承自Object类。Ruby的对象模型是理解元编程的基础。书中通过组织和解释Ruby对象模型的概念,帮助读者清晰理解Ruby的继承和混入机制。 ...

    Ruby Hack Guide中文版.chm

    第一部分的内容包括对Ruby语言一个概要介绍和对Ruby对象模型的讲解。从我个人阅读的感觉来看,第一章对于Ruby语言的介绍是一个非常好的起步教程,把Ruby语言中一些核心点都指了出来。比起我读到过一些Ruby语言教程,...

    《Ruby Programming—向Ruby之父学程序设计(第2版)》电子书

    Ruby编程语言是由Yukihiro Matsumoto(又称为Matz)创建的一种面向对象的语言,它以其简洁、优雅的语法和强大的功能而闻名。《Ruby Programming—向Ruby之父学程序设计(第2版)》这本书旨在帮助初学者,甚至是完全...

    Ruby新手学习书(Ruby语言中文教程)和Rails_4_days

    Ruby是一种面向对象的编程语言,以其简洁、优雅的语法著称,被广泛应用于Web开发,尤其是与Ruby on Rails框架结合使用。"Ruby新手学习书"和"Rails_4_days"这两个资源是为初学者设计的,旨在帮助他们快速掌握Ruby语言...

    From Java to Ruby

    《From Java to Ruby》这本书是Java开发者转向Ruby语言的一份...Ruby提供了一个更为简洁和动态的编程模型,能够提升开发效率并激发创新。对于希望拓宽视野和提升编程技能的Java开发者来说,这是一个值得探索的新领域。

    Ruby教程.chm和Ruby程序设计.doc

    Ruby是一种面向对象的脚本语言,以其简洁、优雅的语法和强大的编程能力而闻名。这份“Ruby教程.chm”和“Ruby程序设计.doc”提供了学习Ruby的宝贵资源,旨在帮助初学者快速掌握Ruby的核心概念和编程技巧。 首先,让...

    ruby中英文api

    Ruby是一种面向对象的、动态类型的编程语言,以其简洁、优雅的语法著称,尤其适合Web开发,其中Rails框架是其最著名的应用之一。API(Application Programming Interface)是软件开发者用来与操作系统、库或服务进行...

    Ruby-Reform能够给你一个Form对象模型包含验证和嵌套设置

    Form对象可以与任何数据结构进行绑定,包括ActiveRecord模型、 PORO(Plain Old Ruby Object)或者其他任何对象。这意味着Reform是数据库框架无关的,无论你使用的是ActiveRecord、DataMapper还是Sequel,都可以轻松...

    ruby-1.9.2-rc2

    用户需要了解如何在本地设置和使用Ruby环境,包括安装Gem包,理解Ruby语法和对象模型,以及如何通过Ruby编译和管理项目。如果你计划使用这个版本的Ruby,确保查看相关文档,学习其特性和变更,以便充分利用它的功能...

    ruby学习的源码

    Ruby是一种面向对象的编程语言,以其简洁、优雅的语法著称,特别适合Web开发。Ruby on Rails(简称Rails)是基于Ruby构建的一个开源Web应用程序框架,它遵循模型-视图-控制器(MVC)架构模式,极大地提高了开发效率...

    ruby测试代码6

    - `Item`可能代表游戏中的物品或道具,它们可能有自己的属性和行为,可以通过Ruby的对象模型来设计和实现。 - `Mgc`可能代表魔法、魔法效果或游戏中的魔法系统,可能包含一系列的规则和算法。 5. **测试策略**:...

Global site tag (gtag.js) - Google Analytics