Ruby: Orientación Objeto parte 1

La parte teórica de esto, la puedes leer. Esto está tan repetido, así que perfectamente se puede decir: Yet another tutorial OO on Ruby

Lo haremos sencillo, nada de chorradas o lecturas largas, será fácil. Título, Código, explicación. Practica

Declaración de clase:

class Auto
def initialize(color, marca)
@color = color
@marca = marca
end
   def conocerColor()
puts @color
end
end

Creación correcta:

=> :initialize

Explicación: Creación de clase Auto con atributos de color, modelo, y además al crear un objeto “auto1” de clase Auto, con constructor de estos atributos.

Instanciar objeto

auto1 = Auto.new("Amarillo", "Nissan")

Creación correcta:

=> #<Auto:0x0055d938d01bc0 @color="Amarillo", @marca="Nissan">

Explicación: Se crea en memoria un objeto auto1 con los atributos “Amarillo” y “Nissan”

auto1.conocercolor
Amarillo
=> nil

En ruby, acceder a los métodos de la clase, es fácil.

objeto . método

Simplemente haciendo uso del . “punto” accedes a los métodos. Si los conoces:

objeto.methods

Un resultado como esto obtendrás

=> [:arrancar, :conocercolor, :to_yaml, :to_yaml_properties, :psych_to_yaml, :instance_of?, :public_send, :instance_variable_get, :instance_variable_set, :instance_variable_defined?, :remove_instance_variable, :private_methods, :kind_of?, :instance_variables, :tap, :public_method, :singleton_method, :is_a?, :extend, :define_singleton_method, :method, :to_enum, :enum_for, :<=>, :===, :=~, :!~, :eql?, :respond_to?, :freeze, :inspect, :display, :object_id, :send, :to_s, :nil?, :hash, :class, :singleton_class, :clone, :dup, :itself, :taint, :tainted?, :untaint, :untrust, :trust, :untrusted?, :methods, :protected_methods, :frozen?, :public_methods, :singleton_methods, :!, :==, :!=, :__send__, :equal?, :instance_eval, :instance_exec, :__id__]

Herencia

De la misma clase anterior

class Auto
def initialize(color, marca)
@color = color
@marca = marca
end
   def conocerColor()
puts @color
end
end
class Auto2 < Auto
def metodo2
puts "Clase Auto2"
end
end

El código en negrita representa la nueva clase que hereda de la clase “Padre”, aquí la implementación de herencia se hace sencilla, observar esta línea:

class Auto2 < Auto

Aquí, la clase Auto2 hereda de clase Auto. Veamos sus ancestros:

irb(main):066:0> Auto2.ancestors
=> [Auto2, Auto, Object, Kernel, BasicObject]

Y de la clase Auto

irb(main):067:0> Auto.ancestors
=> [Auto, Object, Kernel, BasicObject]

En la parte 2, veremos

  • Encapsulamiento: control de acceso
  • Polimorfismo

Gracias por tu tiempo!

Like what you read? Give Nico Fuenzalida a round of applause.

From a quick cheer to a standing ovation, clap to show how much you enjoyed this story.