RED PRECIOUS STONE Series

Ruby core: Implement OOD

RED PRECIOUS STONE Series

初祖 BasicObject

(创世之祖 since 1.9)

RED PRECIOUS STONE Series

1. ::new

2. #object_id

3. #send

4. #equal? / ==

5. #instance_eval/instance_exec

6. #method_missing

7. #singleton_method_added / removed / undefined

RED PRECIOUS STONE Series

1. 创世(原生特性)

2. 创建完全独立于当前ruby体系的面向对象系统

3. 创建纯净的代理类

4. 其它要求上下文环境必须纯净的应用

特性

RED PRECIOUS STONE Series

二祖 Object

(万物之类)

RED PRECIOUS STONE Series

1. 系统级常量: ARGV, ENV, RUBY_PLATFORM, RUBY_VERSION, ...

2. #class

3. #extend

4. #instance_variable_get / instance_variable_set

5. #is_a? / kind_of?

6. #methods / ...

7. #singleton_class / singleton_method / singleton_methods

 

RED PRECIOUS STONE Series

1. 所有类的基类,BasicObject除外

2. 提供系统级常量

3. 提供核心实例方法集合

4. 引入Kernel工具module,提供扩展的实例方法集合

特性

RED PRECIOUS STONE Series

三祖 Class

(万类之类)

RED PRECIOUS STONE Series

1. ::new

3. #allocate

4. #new

5. #superclass

6. #inherited

RED PRECIOUS STONE Series

1. 所有类的类

2. 提供类定义机制

3. 提供类实例化机制

4. 提供类继承机制

特性

RED PRECIOUS STONE Series

四祖 Module

(类之祖)

RED PRECIOUS STONE Series

1. ::constants

2. ::new

3. #ancestors

4. #class_eval / class_exec

5. #class_variable_get / class_variable_set

6. #is_a? / kind_of?

7. #methods / ...

8. #singleton_class / singleton_method / singleton_methods

 

RED PRECIOUS STONE Series

1. Class的基类

2. 提供核心类方法集合

3. 能实例化成module,include的必备客体(实现mixed-in特性

特性

RED PRECIOUS STONE Series

五祖 Kernel

(战神)

RED PRECIOUS STONE Series

1. #auto_load

2. #binding

3. #block_given?

4. #lambda

5. #open

6. #p / print / putc

7. #sleep

8. #require / load

RED PRECIOUS STONE Series

1. Module类的实例

2. 被Mixed-in至Object类

3. 提供系统级的扩展实例方法集合

特性

RED PRECIOUS STONE Series

五祖图谱

结论

1. 类一定是实例,实例不一定是类

2. 类是由面向对象继承增强的module,但不能被Mix-in

3. 系统级实例方法一般在Object,Kernel中定义

4. 系统级类方法一般在Module,Class中定义

5. 所有普通module(包括Kernel)均是Module的实例

6. 所有普通类(除五祖外的类)均是Class的实例

RED PRECIOUS STONE Series

元类(单件类)

(万物之影)

RED PRECIOUS STONE Series

1. 实例的元类

2. 类的元类

RED PRECIOUS STONE Series

1. 当对象结构发生运行时改变时,动态生成元类

2. 元类为对象动态扩展提供了统一的上下文环境

3. 元类实现了动态内容和静态内容的隔离

4. 当对象创建元类时,Marshal.dump将无法使用

5. 元类是在ruby实现元编程的基础

特性

Code DoJo

编程                   道场

1. 同一时刻只能有一对pair在台上工作;

2. pair的形式始终是左侧为driver, 右侧为navigator(面向大屏幕方向);

3. 每对pair只有5分钟时间书写代码;

4. 每5分钟整个团队按逆时针方向移动一个位置;

5. 除了当前pair,其余成员都不能参与任何讨论;

6. 每次课程结束后,当前座位状态将保留至下一次;

7. 座位状态将不定期重置。

RED PRECIOUS STONE Series

期中测试

RED PRECIOUS STONE Series

编写一个rake task,实现以下功能(所有测试要求使用minitest编写):

#运行fizz buzz的所有测试

rake test:fizz_buzz

#运行auto wrap的所有测试

rake test:auto_wrap

#运行numbers to words的所有测试

rake test:numbers_to_words

#运行上述所有测试

rake test:all

rake test

Ruby core: Implement OOD

By hanyi8000

Ruby core: Implement OOD

  • 1,865