Slide 1

Slide 1 text

No content

Slide 2

Slide 2 text

Ruby ● Orientado a objetos ● Lenguaje dinámico ● Partes funcionales (Bloques)

Slide 3

Slide 3 text

Ruby es simple en apariencia, pero complejo por dentro, como el cuerpo humano. tratando de hacer que Ruby sea natural, no simple. Yukihiro Matsumoto 'matz'

Slide 4

Slide 4 text

¿Pero qué es eso del “metaprogramming”?

Slide 5

Slide 5 text

¿Pero qué es eso del metaprogramming? Metaprogramming is the writing of computer programs that write or manipulate other programs (or themselves) as their data. Wikipedia

Slide 6

Slide 6 text

No content

Slide 7

Slide 7 text

¿Pero qué es eso del metaprogramming? ● Manejo de mensajes cuyo destino no es conocido ● Capacidad de creación y modificación de clases en runtime

Slide 8

Slide 8 text

No content

Slide 9

Slide 9 text

Debemos conocer el modelo de objetos de Ruby

Slide 10

Slide 10 text

Debemos conocer el modelo de objetos de Ruby

Slide 11

Slide 11 text

en ruby todo es un objeto 2.0.0-rc2 :001 > 1.class => Fixnum

Slide 12

Slide 12 text

en ruby todo se ejecuta dentro de un objeto 2.0.0-rc2 :002 > self => main 2.0.0-rc2 :003 > class MyClass 2.0.0-rc2 :004?> self 2.0.0-rc2 :005?> end => MyClass 2.0.0-rc2 :006 > self => main 2.0.0-rc2 :007 > class MyClass 2.0.0-rc2 :008?> def test 2.0.0-rc2 :009?> self 2.0.0-rc2 :010?> end 2.0.0-rc2 :011?> def self.class_method 2.0.0-rc2 :012?> self 2.0.0-rc2 :013?> end 2.0.0-rc2 :014?> end => nil 2.0.0-rc2 :015 > MyClass.new.test => # 2.0.0-rc2 :016 > MyClass.class_method => MyClass

Slide 13

Slide 13 text

MonkeyPatches 2.0.0-rc2 :017 > class String 2.0.0-rc2 :018?> def replace 2.0.0-rc2 :019?> "dont replace" 2.0.0-rc2 :020?> end 2.0.0-rc2 :021?> end => nil 2.0.0-rc2 :022 > "stast".replace => "dont replace"

Slide 14

Slide 14 text

Modelo de objetos de Ruby ● La keyword class solo cambia de contexto ● Las clases también son objetos de la clase Class

Slide 15

Slide 15 text

Modelo de objetos de Ruby class MyClass def my_method() @var = 1 end end Obj1 = MyClass.new Obj1.my_method

Slide 16

Slide 16 text

Modelo de objetos de Ruby

Slide 17

Slide 17 text

Jerarquía de Clases class Book include Printable include Document Ancestors # => [Book, Document, Printable, Object, Kernel, BasicObject] end

Slide 18

Slide 18 text

Method Lookup

Slide 19

Slide 19 text

No content

Slide 20

Slide 20 text

No content

Slide 21

Slide 21 text

Conclusiones

Slide 22

Slide 22 text

Cosas que me he dejado fuera

Slide 23

Slide 23 text

Preguntas

Slide 24

Slide 24 text

No content