Академический Документы
Профессиональный Документы
Культура Документы
Fuente: http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/394
relevantes
Paramtricas
Mltiple
Amplitud de uso
Traduccin
Simple Compilacin
Interpretacin
Mquina virtual
Fuente: http://www.tutorialspoint.com/ruby/ruby_modules.htm
Sistemas operativos
Todos
Gestin memoria
Liberacin
Automtica
Ocultacin de informacin
Mtodos
Fuerte
Especificidad OO
Ligadura
Dinmica
Tipado
# El operador <=> en Ruby es equivalente al mtodo compareTo() en Java def <=>(persona) if(self.edad < persona.edad) return -1 elsif(self.edad > persona.edad) return 1 else return 0 end end end
def matricularAsignatura(asig) error = catch(:matriculateError) do throw(:matriculateError, "El Alumno no esta matriculado en ninguna titulacion. ") if (@titulacion.nil?) throw(:matriculateError, "La asignatura supera el numero de creditos maximo que es: " + @@creditosMaximos.to_s) if ((numCreditosMatriculados + asig.creditosECTS) > @@creditosMaximos) if(!self.estaMatriculado(asig.codigo)) if(!asig.nil?) if(asignaturas.nil?) @asignaturas = Array.new end @asignaturas << asig end else puts " El Alumno ya esta matriculado en esa asignatura: " end end if(error.kind_of?(String)) puts error end end def desmatricularAsignatura(codAsig) error = catch(:unMatriculateError) do throw(:unMatriculateError, "El Alumno no esta matriculado en ninguna titulacion. ") if (@titulacion.nil?) throw(:unMatriculateError, "El Alumno no esta matriculado en esa asignatura. ") if (!self.estaMatriculado(codAsig)) @asignaturas.delete(self.buscarAsignatura(codAsig)) end if(error.kind_of?(String)) puts error end end def mostrarMatricula error = catch(:showError) do throw(:showError, "El Alumno no esta matriculado en ninguna titulacion. ") if (@titulacion.nil?) puts "El Alumno esta en la titulacion: " + @titulacion @asignaturas.each do |asignatura| puts "" + asignatura.to_s end puts "El numero maximo de creditos es: " + @@creditosMaximos.to_s end if(error) puts error end end
def buscarAsignatura (codAsig) asig = nil if(!asignaturas.nil?) @asignaturas.each do |asignatura| if(asignatura.codigo == codAsig) asig = asignatura end end end return asig end def estaMatriculado (codAsig) asig = buscarAsignatura(codAsig) if(asig.nil?) return false else return true end end def abandonar_los_estudios error = catch(:notMatriculated) do throw(:notMatriculated, "El alumno no esta matriculado en ninguna asignatura") if (@titulacion.nil?) @asignaturas.clear @titulacion = nil end if(error.kind_of?(String)) puts error end end def <=>(alumno) valor = super if(valor == 0) return @titulacion.to_s <=> alumno.titulacion.to_s else return valor end end private def numCreditosMatriculados numCreditos = 0 if(!@asignaturas.nil?) @asignaturas.each do |asignatura| numCreditos += asignatura.creditosECTS end end return numCreditos; end end
if __FILE__ == $0 personas = Array.new p1 p2 p3 a1 a2 a3 a4 = = = = = = = Persona.new("Ana", Date.new(1971,1,25)) Persona.new("Juan", Date.new(1990,4,14)) Persona.new("Pepa", Date.new(2000,10,5)) Alumno.new("Maria", Date.new(1960,7,13),"informatica") Alumno.new("Antonio", Date.new(2000,10,5),"informatica") Alumno.new("Ana", Date.new(1995,6,10), "fisica") Alumno.new("ALEJANDRO", Date.new(1995,6,10), "biologia" ) = = = = = Asignatura.new(1,"PDOO",6) Asignatura.new(2,"FIS",6) Asignatura.new(4,"SO",6) Asignatura.new(5,"SO II",6) Asignatura.new(3,"AC",6)
a1.matricularAsignatura(asig2) a1.matricularAsignatura(asig1) a1.matricularAsignatura(asig3) a1.matricularAsignatura(asig4) a1.matricularAsignatura(asig5) a2.matricularAsignatura(asig1) a3.matricularAsignatura(asig2) a4.matricularAsignatura(asig2) personas personas personas personas personas personas personas << << << << << << << p1 p2 p3 a1 a2 a3 a4
personas = personas.sort puts personas.to_s puts a1.mostrarMatricula a1.abandonar_los_estudios puts a1.mostrarMatricula end
10