Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Persona{
- var suenios = []
- var felicidonios = 0
- var carrerasQueQuiereEstudiar = []
- var carrerasQueYaSeRecibio = []
- var plataMinimaQueQuiereGanar = 0
- var tieneUnHijo = false
- method soniar(unSuenio){
- suenios.add(unSuenio)
- }
- method cumplirSuenio(unSuenio){
- unSuenio.cumplirSuenio(self)
- }
- method agregarFelicidonios(unosFelicidonios){
- felicidonios += unosFelicidonios
- }
- method suenios() = suenios
- method sueniosCumplidos(){
- return suenios.filter({unSuenio => suenios.estaCumplido()})
- }
- method sueniosPendientes(){
- return suenios.filter({unSuenio => !suenios.estaCumplido()})
- }
- method quiereEstudiar(unaCarrera){
- return carrerasQueQuiereEstudiar.contains(unaCarrera)
- }
- method estaRecibidoDe(unaCarrera){
- return carrerasQueQuiereEstudiar.contains(unaCarrera)
- }
- method yaNoQuiereEstudiar(unaCarrera){
- carrerasQueQuiereEstudiar.remove(unaCarrera)
- }
- method seRecibioDe(unaCarrera){
- carrerasQueYaSeRecibio.add(carrerasQueYaSeRecibio)
- }
- method laGuitaLeSirve(unaCantidadDePlata){
- return unaCantidadDePlata >= plataMinimaQueQuiereGanar
- }
- method tieneUnHijo() = tieneUnHijo
- method tieneUnHijo(unBooleano){
- tieneUnHijo = unBooleano
- }
- }
- class Suenio{
- var felicidonios
- var autorDelSuenio
- var estaCumplido = false
- constructor(unaPersonaQueSuenia, cantidadDeFelicidoniosQueSeObtienenCuandoSeCumpleElSueno){
- autorDelSuenio = unaPersonaQueSuenia
- felicidonios = cantidadDeFelicidoniosQueSeObtienenCuandoSeCumpleElSueno
- }
- method estaCumplido(){
- return estaCumplido
- }
- method brindarFelicidonios(){
- autorDelSuenio.agregarFelicidonios ()
- }
- method puedeCumplirSuenio(unaPersona){
- return self.esElSoniador(unaPersona)
- }
- method esElSoniador(unaPersona){
- return unaPersona == autorDelSuenio
- }
- method cumplirSuenio(unaPersona){
- if (self.puedeCumplirSuenio(unaPersona)){
- estaCumplido = true
- unaPersona.agregarFelicidonios(felicidonios)
- }else{
- self.error("No puede cumplir el suenio")
- }
- }
- }
- object nico inherits Persona{}
- object volar inherits Suenio(nico, 100){}
- class Recibirse inherits Suenio{
- var carrera
- constructor(unaPersonaQueSuenia, cantidadDeFelicidoniosQueSeObtienenCuandoSeCumpleElSueno, unaCarrera) = super(unaPersonaQueSuenia, cantidadDeFelicidoniosQueSeObtienenCuandoSeCumpleElSueno){
- carrera = unaCarrera
- }
- override method puedeCumplirSuenio(unaPersona){
- return super(unaPersona) && unaPersona.quiereEstudiar(unaCarrera) && !unaPersona.estaRecibidoDe(unaCarrera)
- }
- override method cumplirSuenio(unaPersona){
- if (self.puedeCumplirSuenio(unaPersona)){
- estaCumplido = true
- unaPersona.agregarFelicidonios(felicidonios)
- unaPersona.yaNoQuiereEstudiar(unaCarrera)
- unaPersona.seRecibioDe(unaCarrera)
- }else{
- self.error("No puede cumplir el suenio")
- }
- }
- }
- class ConseguirLaburo inherits Suenio{
- var guita
- constructor(unaPersonaQueSuenia, cantidadDeFelicidoniosQueSeObtienenCuandoSeCumpleElSueno, unaGuita) = super(unaPersonaQueSuenia, cantidadDeFelicidoniosQueSeObtienenCuandoSeCumpleElSueno){
- guita = unaGuita
- }
- override method puedeCumplirSuenio(unaPersona){
- return super(unaPersona) && unaPersona.laGuitaLeSirve(guita)
- }
- }
- class TenerUnHijo inherits Suenio{
- constructor(unaPersonaQueSuenia, cantidadDeFelicidoniosQueSeObtienenCuandoSeCumpleElSueno) = super(unaPersonaQueSuenia, cantidadDeFelicidoniosQueSeObtienenCuandoSeCumpleElSueno){}
- override method cumplirSuenio(unaPersona){
- if (self.puedeCumplirSuenio(unaPersona)){
- estaCumplido = true
- unaPersona.tieneUnHijo(true)
- }else{
- self.error("No puede cumplir el suenio")
- }
- }
- }
- class Viajar inherits Suenio{
- var lugar
- constructor(unaPersonaQueSuenia, cantidadDeFelicidoniosQueSeObtienenCuandoSeCumpleElSueno, unLugar) = super(unaPersonaQueSuenia, cantidadDeFelicidoniosQueSeObtienenCuandoSeCumpleElSueno){
- lugar = unLugar
- }
- }
- class Adoptar inherits Suenio{
- constructor(unaPersonaQueSuenia, cantidadDeFelicidoniosQueSeObtienenCuandoSeCumpleElSueno, unaCantidadDeHijos) = super(unaPersonaQueSuenia, cantidadDeFelicidoniosQueSeObtienenCuandoSeCumpleElSueno){}
- override method puedeCumplirSuenio(unaPersona){
- return super(unaPersona) && !unaPersona.tieneUnHijo()
- }
- override method cumplirSuenio(unaPersona){
- if (self.puedeCumplirSuenio(unaPersona)){
- estaCumplido = true
- unaPersona.tieneUnHijo(true)
- }else{
- self.error("No puede cumplir el suenio, la persona ya tiene un hijo")
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement