SlideShare a Scribd company logo
1 of 15
Download to read offline
Ruby Análisis del MRI

                        Meta-clases y búsqueda de
                                 métodos


Fernando Trasviña @azendal
Project Manager Freshout
Ideas Básicas

 Orientado a Objetos
 Basado en Clases
 Dinámico
 Herencia simple
 Combinaciones
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)
Organización de clases
Modelo de objetos

            diagrama de herencia
Representación interna de clases
Estructura interna de objetos

struct RBasic {
   unsigned long flags;
   VALUE klass;
};

struct RObject {
   struct RBasic basic;
   struct st_table *iv_tbl;
};
Estructura interna de clases

struct RClass {
    struct RBasic basic;
    struct st_table *iv_tbl;
    struct st_table *m_tbl;
    VALUE super;
};
Modulos y Clases muy similares

 las clases son modulos que se pueden instanciar
 las clases pueden tener superclases
Definición de métodos de instancia

class Human
    def hi
        'hi'
    end
end

class Student < Human
    def hi
        'wasaaa'
    end
end
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
Almacenamiento de metodos
Búsqueda de métodos
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
El fin
         quejas, preguntas?

More Related Content

What's hot

What's hot (20)

Java persistence
Java persistenceJava persistence
Java persistence
 
Tema3
Tema3Tema3
Tema3
 
Instructoria de Herencia en java
Instructoria de Herencia en javaInstructoria de Herencia en java
Instructoria de Herencia en java
 
Herencia - Programación Orientada a Objetos
Herencia - Programación Orientada a ObjetosHerencia - Programación Orientada a Objetos
Herencia - Programación Orientada a Objetos
 
Proyecto PCJ. Tema.8. Clases Internas.
Proyecto PCJ. Tema.8. Clases Internas.Proyecto PCJ. Tema.8. Clases Internas.
Proyecto PCJ. Tema.8. Clases Internas.
 
08 Herencia
08   Herencia08   Herencia
08 Herencia
 
Poo Java
Poo JavaPoo Java
Poo Java
 
Java 5 se (presentación3)
Java 5 se (presentación3)Java 5 se (presentación3)
Java 5 se (presentación3)
 
C1 - Conceptos OOP
C1 - Conceptos OOPC1 - Conceptos OOP
C1 - Conceptos OOP
 
Introducción a la programación orientada a objetos con JavaScript
Introducción a la programación orientada a objetos con JavaScriptIntroducción a la programación orientada a objetos con JavaScript
Introducción a la programación orientada a objetos con JavaScript
 
7-Unidad 2. Elementos de una Clase
7-Unidad 2. Elementos de una Clase7-Unidad 2. Elementos de una Clase
7-Unidad 2. Elementos de una Clase
 
Tema1
Tema1Tema1
Tema1
 
Conceptos poo (presentación1)
Conceptos poo (presentación1)Conceptos poo (presentación1)
Conceptos poo (presentación1)
 
Programación Orientada a Objetos en Java - Parte I 2015
Programación Orientada a Objetos en Java - Parte I 2015Programación Orientada a Objetos en Java - Parte I 2015
Programación Orientada a Objetos en Java - Parte I 2015
 
Serializacion
SerializacionSerializacion
Serializacion
 
Cap3.0
Cap3.0Cap3.0
Cap3.0
 
Programación Orientada a Objetos
Programación Orientada  a ObjetosProgramación Orientada  a Objetos
Programación Orientada a Objetos
 
FPJUCE - Capitulo2
FPJUCE - Capitulo2FPJUCE - Capitulo2
FPJUCE - Capitulo2
 
18448198 programacion-orientada-a-objetos
18448198 programacion-orientada-a-objetos18448198 programacion-orientada-a-objetos
18448198 programacion-orientada-a-objetos
 
9-Unidad 3: Encapsulamiento y modularidad
9-Unidad 3: Encapsulamiento y modularidad9-Unidad 3: Encapsulamiento y modularidad
9-Unidad 3: Encapsulamiento y modularidad
 

Viewers also liked

Mri knowledge extraction
Mri knowledge extractionMri knowledge extraction
Mri knowledge extractionBrain Dynamics
 
Como Emprender una Empresa
Como Emprender una EmpresaComo Emprender una Empresa
Como Emprender una Empresaetmol05
 
Generando un modelo de negocios utilizando Canvas
Generando un modelo de negocios utilizando CanvasGenerando un modelo de negocios utilizando Canvas
Generando un modelo de negocios utilizando CanvasJulio Bazan
 
Propuestas de Valor para el Cliente
Propuestas de Valor para el ClientePropuestas de Valor para el Cliente
Propuestas de Valor para el Clienterrmartin
 
Los principales indicadores de gestión en marketing
Los principales indicadores de gestión en marketingLos principales indicadores de gestión en marketing
Los principales indicadores de gestión en marketingRafael Lopez Rodriguez
 
Resonancia magnética
Resonancia magnéticaResonancia magnética
Resonancia magnéticaCrisu Lalala
 
Ginecologia Infantil
Ginecologia InfantilGinecologia Infantil
Ginecologia Infantilfelix campos
 
Modelo de negocio canvas
Modelo de negocio canvasModelo de negocio canvas
Modelo de negocio canvasAnafina
 

Viewers also liked (10)

Mri knowledge extraction
Mri knowledge extractionMri knowledge extraction
Mri knowledge extraction
 
Como Emprender una Empresa
Como Emprender una EmpresaComo Emprender una Empresa
Como Emprender una Empresa
 
Plan de Negocios
Plan de NegociosPlan de Negocios
Plan de Negocios
 
Generando un modelo de negocios utilizando Canvas
Generando un modelo de negocios utilizando CanvasGenerando un modelo de negocios utilizando Canvas
Generando un modelo de negocios utilizando Canvas
 
Propuestas de Valor para el Cliente
Propuestas de Valor para el ClientePropuestas de Valor para el Cliente
Propuestas de Valor para el Cliente
 
Los principales indicadores de gestión en marketing
Los principales indicadores de gestión en marketingLos principales indicadores de gestión en marketing
Los principales indicadores de gestión en marketing
 
Resonancia magnética
Resonancia magnéticaResonancia magnética
Resonancia magnética
 
Ginecologia Infantil
Ginecologia InfantilGinecologia Infantil
Ginecologia Infantil
 
Modelo de negocio canvas
Modelo de negocio canvasModelo de negocio canvas
Modelo de negocio canvas
 
Indicadores de Gestión
Indicadores de GestiónIndicadores de Gestión
Indicadores de Gestión
 

Similar to Ruby mri metaclases_y_busqueda_de_metodos

Fundamentos de poo1
Fundamentos de poo1Fundamentos de poo1
Fundamentos de poo1antony
 
PROGRAMACION_ORIENTADA_A_OBJETOS.pdf
PROGRAMACION_ORIENTADA_A_OBJETOS.pdfPROGRAMACION_ORIENTADA_A_OBJETOS.pdf
PROGRAMACION_ORIENTADA_A_OBJETOS.pdfMariaTeresaGarznPrez
 
Fundamentos POO en JS. Mixins y Traits.
Fundamentos POO en JS. Mixins y Traits.Fundamentos POO en JS. Mixins y Traits.
Fundamentos POO en JS. Mixins y Traits.Maximiliano Fierro
 
Apunte paradigma orientado a objetos
Apunte paradigma orientado a objetosApunte paradigma orientado a objetos
Apunte paradigma orientado a objetosAlejandro Canosa
 
Programación 3: Clases y objetos en Java
Programación 3: Clases y objetos en JavaProgramación 3: Clases y objetos en Java
Programación 3: Clases y objetos en JavaAngel Vázquez Patiño
 
Programación III (Java) - 01 Introduccion
Programación III (Java) - 01 IntroduccionProgramación III (Java) - 01 Introduccion
Programación III (Java) - 01 IntroduccionAndoni Eguíluz Morán
 
programacion-orientada-a-objetos-poo_c4774196-cfdb-412e-bae5-210a97d78f8b.pptx
programacion-orientada-a-objetos-poo_c4774196-cfdb-412e-bae5-210a97d78f8b.pptxprogramacion-orientada-a-objetos-poo_c4774196-cfdb-412e-bae5-210a97d78f8b.pptx
programacion-orientada-a-objetos-poo_c4774196-cfdb-412e-bae5-210a97d78f8b.pptxFernando Espinoza Muñoz
 
programacion-orientada-a-objetos-poo_c4774196-cfdb-412e-bae5-210a97d78f8b.pptx
programacion-orientada-a-objetos-poo_c4774196-cfdb-412e-bae5-210a97d78f8b.pptxprogramacion-orientada-a-objetos-poo_c4774196-cfdb-412e-bae5-210a97d78f8b.pptx
programacion-orientada-a-objetos-poo_c4774196-cfdb-412e-bae5-210a97d78f8b.pptxFernando Espinoza Muñoz
 
Unidad 2 ProgramacióN Orientada A Objetos (Repaso)
Unidad 2 ProgramacióN Orientada A Objetos (Repaso)Unidad 2 ProgramacióN Orientada A Objetos (Repaso)
Unidad 2 ProgramacióN Orientada A Objetos (Repaso)Sergio Sanchez
 
Investigacion ed (pseudocodigo, algoritmo, listas, colas, arboles)
Investigacion ed (pseudocodigo, algoritmo, listas, colas, arboles)Investigacion ed (pseudocodigo, algoritmo, listas, colas, arboles)
Investigacion ed (pseudocodigo, algoritmo, listas, colas, arboles)Eli Diaz
 
POO con PHP
POO con PHPPOO con PHP
POO con PHPvinceq
 

Similar to Ruby mri metaclases_y_busqueda_de_metodos (20)

Programación Orientada a Objetos
Programación Orientada a ObjetosProgramación Orientada a Objetos
Programación Orientada a Objetos
 
Fundamentos de poo1
Fundamentos de poo1Fundamentos de poo1
Fundamentos de poo1
 
PROGRAMACION_ORIENTADA_A_OBJETOS.pdf
PROGRAMACION_ORIENTADA_A_OBJETOS.pdfPROGRAMACION_ORIENTADA_A_OBJETOS.pdf
PROGRAMACION_ORIENTADA_A_OBJETOS.pdf
 
Programación Orientada a Objetos
Programación Orientada a ObjetosProgramación Orientada a Objetos
Programación Orientada a Objetos
 
8.Clases y objetos Java
8.Clases y objetos Java8.Clases y objetos Java
8.Clases y objetos Java
 
Fundamentos POO en JS. Mixins y Traits.
Fundamentos POO en JS. Mixins y Traits.Fundamentos POO en JS. Mixins y Traits.
Fundamentos POO en JS. Mixins y Traits.
 
Apunte paradigma orientado a objetos
Apunte paradigma orientado a objetosApunte paradigma orientado a objetos
Apunte paradigma orientado a objetos
 
Programación 3: Clases y objetos en Java
Programación 3: Clases y objetos en JavaProgramación 3: Clases y objetos en Java
Programación 3: Clases y objetos en Java
 
Clases y objetos en Java
Clases y objetos en JavaClases y objetos en Java
Clases y objetos en Java
 
02 tda1 t2018
02 tda1 t201802 tda1 t2018
02 tda1 t2018
 
Programación III (Java) - 01 Introduccion
Programación III (Java) - 01 IntroduccionProgramación III (Java) - 01 Introduccion
Programación III (Java) - 01 Introduccion
 
programacion-orientada-a-objetos-poo_c4774196-cfdb-412e-bae5-210a97d78f8b.pptx
programacion-orientada-a-objetos-poo_c4774196-cfdb-412e-bae5-210a97d78f8b.pptxprogramacion-orientada-a-objetos-poo_c4774196-cfdb-412e-bae5-210a97d78f8b.pptx
programacion-orientada-a-objetos-poo_c4774196-cfdb-412e-bae5-210a97d78f8b.pptx
 
programacion-orientada-a-objetos-poo_c4774196-cfdb-412e-bae5-210a97d78f8b.pptx
programacion-orientada-a-objetos-poo_c4774196-cfdb-412e-bae5-210a97d78f8b.pptxprogramacion-orientada-a-objetos-poo_c4774196-cfdb-412e-bae5-210a97d78f8b.pptx
programacion-orientada-a-objetos-poo_c4774196-cfdb-412e-bae5-210a97d78f8b.pptx
 
Semana 6 Módulos Clases y Objetos
Semana 6   Módulos Clases y ObjetosSemana 6   Módulos Clases y Objetos
Semana 6 Módulos Clases y Objetos
 
Informacion
InformacionInformacion
Informacion
 
POO1501 - Composición java
POO1501 - Composición javaPOO1501 - Composición java
POO1501 - Composición java
 
Unidad 2 ProgramacióN Orientada A Objetos (Repaso)
Unidad 2 ProgramacióN Orientada A Objetos (Repaso)Unidad 2 ProgramacióN Orientada A Objetos (Repaso)
Unidad 2 ProgramacióN Orientada A Objetos (Repaso)
 
Investigacion ed (pseudocodigo, algoritmo, listas, colas, arboles)
Investigacion ed (pseudocodigo, algoritmo, listas, colas, arboles)Investigacion ed (pseudocodigo, algoritmo, listas, colas, arboles)
Investigacion ed (pseudocodigo, algoritmo, listas, colas, arboles)
 
POO con PHP
POO con PHPPOO con PHP
POO con PHP
 
Prototype-based, object-oriented programming
Prototype-based, object-oriented programmingPrototype-based, object-oriented programming
Prototype-based, object-oriented programming
 

Ruby mri metaclases_y_busqueda_de_metodos

  • 1. Ruby Análisis del MRI Meta-clases y búsqueda de métodos Fernando Trasviña @azendal Project Manager Freshout
  • 2. Ideas Básicas Orientado a Objetos Basado en Clases Dinámico Herencia simple Combinaciones
  • 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)
  • 5. Modelo de objetos diagrama de herencia
  • 7. Estructura interna de objetos struct RBasic { unsigned long flags; VALUE klass; }; struct RObject { struct RBasic basic; struct st_table *iv_tbl; };
  • 8. Estructura interna de clases struct RClass { struct RBasic basic; struct st_table *iv_tbl; struct st_table *m_tbl; VALUE super; };
  • 9. Modulos y Clases muy similares las clases son modulos que se pueden instanciar las clases pueden tener superclases
  • 10. Definición de métodos de instancia class Human def hi 'hi' end end class Student < Human def hi 'wasaaa' end end
  • 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
  • 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. El fin quejas, preguntas?