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