Está en la página 1de 3

class Club

attr_accessor :socios

def initialize
@socios = Array.new
end

def agregar_socio(tipo, socio)


socios.push({tipo: tipo, socio: socio})
end

def listarTodos
puts "============= listarTodos ============="
socios.each do |item|
puts "#{item[:socio].dni} #{item[:socio].nombre}
#{item[:socio].apellidos} #{item[:socio].edad} #{item[:socio].dependientes}
#{item[:socio].calcular_membresia}"
end
end

def listarDatosSocio(dni)
puts "============= listarDatosSocio : #{dni} ============="
socios.each do |item|
if (dni == item[:socio].dni)
puts "#{item[:socio].dni} #{item[:socio].nombre}
#{item[:socio].apellidos} #{item[:socio].edad} #{item[:socio].dependientes}
#{item[:socio].calcular_membresia}"
end
end
end

def listarPorTipo(tipo)
puts "============= listarPorTipo : #{tipo} ============="
socios.each do |item|
if (tipo == item[:tipo])
puts "#{item[:socio].dni} #{item[:socio].nombre}
#{item[:socio].apellidos} #{item[:socio].edad} #{item[:socio].dependientes}
#{item[:socio].calcular_membresia}"
end
end
end

def recaudar_membresia
puts "============= recaudar_membresia ============="
membresia_total = 0
socios.each do |item|
membresia_total += item[:socio].calcular_membresia
end
puts "#{membresia_total}"
end

end

class Socio

attr_accessor :dni, :nombre, :apellidos, :edad, :dependientes


def initialize(dni, nombre, apellidos, edad)
@dni, @nombre, @apellidos, @edad = dni, nombre, apellidos, edad
@dependientes = 0
end

def calcular_membresia
factor_edad = 0

if (edad > 17 && edad < 31)


factor_edad = 5
end

if (edad > 30 && edad < 51)


factor_edad = 4
end

if (edad > 51)


factor_edad = 3
end

factor_edad * 200 + dependientes * 100

end
end

class Fundador < Socio

def initialize(dni, nombre, apellidos, edad, dependientes)


super(dni, nombre, apellidos, edad)
@dependientes = dependientes
end

def calcular_membresia
membresia = super
membresia - membresia * 0.20
end
end

class Invitado < Socio

def initialize(dni, nombre, apellidos, edad, dependientes)


super(dni, nombre, apellidos, edad)
@dependientes = dependientes
end
end

class Honorario < Socio


def initialize(dni, nombre, apellidos, edad)
super(dni, nombre, apellidos, edad)
end

def calcular_membresia
200
end
end

club = Club.new

s1 = Fundador.new("12345671", "Juan", "Perez", 25, 3)


s2 = Invitado.new("12345672", "Maria", "Salinas", 30, 4)
s3 = Fundador.new("12345673", "Ana", "Chavez", 24, 2)
s4 = Honorario.new("12345674", "Pedro", "Chavez", 35)

club.agregar_socio("F", s1)
club.agregar_socio("I", s2)
club.agregar_socio("F", s3)
club.agregar_socio("H", s4)

club.listarTodos
club.listarDatosSocio('12345671')
club.listarPorTipo('F')
club.recaudar_membresia

También podría gustarte