Resumen VI

  1. En Ruby hay tres tipos de protección de métodos:
    • Public Los métodos pueden ser llamados por cualquiera. Los métodos de instancia son públicos por defecto.
    • Protected Los métodos pueden ser invocados sólo por objetos de la clase que los define y sus subclases.
    • Private Los métodos no pueden ser llamados con un receptor explícito. El receptor siempre es self. Esto significa que los métodos privados pueden ser llamados sólo en el contexto del objeto actual. El método initialize siempre es privado.
  2. El control de acceso es determinado de manera dinámica mientras el programa se ejecuta, no de manera estática. Obtendrás una violación de acceso cuando el código intente ejecutar un método restringido.
  3. Los métodos del nivel más alto son métodos de instancia privados del módulo Kernel.
  4. attr_reader es sólo un lector, atrr_writer es sólo un escritor y attr_accessor es lector y escritor.
  5. Una excepción es una especie especial de objeto, una instancia de la clase Exception o un descendiente de ella.
  6. El método raise está definido en el módulo Kernel. Por defecto, raise genera una excepción de clase RuntimeError. Para generar una excepción de una clase en específico, puedes pasar el nombre de la clase como argumento al método raise.
  7. Para manejar excepciones, colocamos el código que puede generar una excepción entre un bloque begin-end y utilizamos una o más cláusulas rescue para indicarle a Ruby el tipo de excepciones que queremos manejar.
  8. Es importante notar que el cuerpo de una definición de un método es un bloque begin-end implícito en el que begin es omitido y el cuerpo entero del método está sujeto a manejo de excepciones hasta el final del método.
  9. Si escribes una cláusula rescue sin parámetros, el parámetro pro defecto es StandardError.
  10. Si necesitas garantizar que algún proceso es ejecutado al final del un bloque de código sin importar si se generó una excepción, puedes usar la cláusula ensure. ensure se coloca después de la última cláusula rescue y contiene código que siempre va a ser ejecutado cuande el bloque termie. La cláusula ensure siempre es ejecutada.
  11. Por defecto, el mensaje inspect, que puede ser enviado a cualquier objeto, da formato al ID del objeto y a sus variables de instancia. Regresa una cadena que contiene una representación legible del objeto. Si no es sobreescrito, utiliza el método to_s para generar la cadena.
  12. La clase Time contiene una interfaz en Ruby para el canjunto de librerías escritas en C.
  13. El tiempo cero para Ruby es el primer segunda del primer día de Enero de 1970.
  14. La clase DateTime de Ruby es superior que la clase Time pra aplicaciones astronómicas e históricas pero puedes usar Time para la mayoría de tus programas.