En Ruby podemos definir un método que se ejecute inicialmente y en forma automática. Este método debe llamarse en forma obligatoria "initialize"
El método initialize tiene las siguientes características:
Confeccionar una clase que represente un empleado. Definir como atributos su nombre y su sueldo. En el método initialize cargar los atributos por teclado y luego en otro método imprimir sus datos y por último uno que imprima un mensaje si debe pagar impuestos (si el sueldo supera a 3000)
class Empleado def initialize print "Ingrese el nombre del empleado:" @nombre = gets.chomp print "Ingrese el sueldo:" @sueldo = gets.to_f end def imprimir puts "Nombre: #{@nombre}" puts "Sueldo: #{@sueldo}" end def paga_impuestos if @sueldo > 3000 puts "Debe pagar impuestos" else puts "No paga impuestos" end end end empleado1 = Empleado.new empleado1.imprimir empleado1.paga_impuestos
Cuando se crea el objeto de la clase Empleado:
empleado1 = Empleado.new
El método new se encarga de llamar al método initialize:
def initialize print "Ingrese el nombre del empleado:" @nombre = gets.chomp print "Ingrese el sueldo:" @sueldo = gets.to_f end
Desarrollar una clase que represente un punto en el plano y tenga los siguientes métodos: inicializar los valores de x e y que llegan como parámetros (definir el método initialize), imprimir en que cuadrante se encuentra dicho punto (concepto matemático, primer cuadrante si x e y son positivas, si x<0 e y>0 segundo cuadrante, etc.)
class Punto def initialize(x, y) @x = x @y = y end def imprimir puts "Coordenada del punto" puts "(#{@x},#{@y})" end def imprimir_cuadrante if @x > 0 && @y > 0 puts "Primer cuadrante" elsif @x < 0 && @y > 0 puts "Segundo cuadrante" elsif @x < 0 && @y < 0 puts "Tercer cuadrante" elsif @x > 0 && @y < 0 puts "Cuarto cuadrante" end end end punto1 = Punto.new 10, -2 punto1.imprimir punto1.imprimir_cuadrante
En este problema el método initialize tiene dos parámetros:
def initialize(x, y) @x = x @y = y end
Los parámetros al método initialize llegan en forma indirecta cuando creamos un objeto de la clase Punto al llamar al método new:
punto1 = Punto.new 10, -2
Si no le pasamos los dos parámetros al método new se genera un error sintáctico.
ejercicio133.rb class Cuadrado def initialize(lado) @lado = lado end def mostrar_perimetro per = @lado * 4 puts "El perimetro del cuadrado es:#{per}" end def mostrar_superficie sup = @lado * @lado puts "La superficie del cuadrado es: #{sup}" end end cuadrado1 = Cuadrado.new 12 cuadrado1.mostrar_perimetro cuadrado1.mostrar_superficie ejercicio134.rb class Operaciones def initialize print "Ingrese primer valor:" @valor1 = gets.to_i print "Ingrese segundo valor:" @valor2 = gets.to_i end def sumar su = @valor1 + @valor2 puts "La suma es #{su}" end def restar re = @valor1 - @valor2 puts "La resta es #{re}" end def multiplicar pro = @valor1 * @valor2 puts "El producto es #{pro}" end def division divi = @valor1 / @valor2 puts "La division es #{divi}" end end operacion1 = Operaciones.new operacion1.sumar operacion1.restar operacion1.multiplicar operacion1.division