Ruby mri metaclases_y_busqueda_de_metodos

607 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
607
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Ruby mri metaclases_y_busqueda_de_metodos

  1. 1. Ruby Análisis del MRI Meta-clases y búsqueda de métodos Fernando Trasviña @azendal Project Manager Freshout
  2. 2. Ideas Básicas Orientado a Objetos Basado en Clases Dinámico Herencia simple Combinaciones
  3. 3. Ideas Básicas Orientado a objetos (Todo debe ser un objeto) Basado en Clases (incluso las clases deben ser objetos) Dinámico (Cambia un objeto, cambia todos) Herencia simple (porque la herencia múltiple es del diablo ) Composición (bueno tal vez no sea tan mala después de todo)
  4. 4. Organización de clases
  5. 5. Modelo de objetos diagrama de herencia
  6. 6. Representación interna de clases
  7. 7. Estructura interna de objetos struct RBasic { unsigned long flags; VALUE klass; }; struct RObject { struct RBasic basic; struct st_table *iv_tbl; };
  8. 8. Estructura interna de clases struct RClass { struct RBasic basic; struct st_table *iv_tbl; struct st_table *m_tbl; VALUE super; };
  9. 9. Modulos y Clases muy similares las clases son modulos que se pueden instanciar las clases pueden tener superclases
  10. 10. Definición de métodos de instancia class Human def hi 'hi' end end class Student < Human def hi 'wasaaa' end end
  11. 11. Definición de métodos de clase def Human.walk 'hi there' end class << Human def run 'no way' end def rest 'oki doki' end end
  12. 12. Almacenamiento de metodos
  13. 13. Búsqueda de métodos
  14. 14. Donde se buscan los métodos > Object.ancestors => [Object, Kernel] > Class.ancestors => [Class, Module, Object, Kernel] > String.ancestors => [String, Enumerable, Comparable, Object, Kernel] > Array.ancestors => [Array, Enumerable, Object, Kernel] class << Array; puts ancestors; end Class Module Object Kernel => nil
  15. 15. El fin quejas, preguntas?

×