@startuml
'https://plantuml.com/use-case-diagram

abstract class recurso{
    - id:int
    - posicionX: int
    - posicionY: int
    - tiempoDeAparicion: IntegerProperty
    --
    + recurso()
    + recurso(id:int, T:int)
    + recurso(id:int, posicionX: int, posicionY:int, tiempoDeAparicion:int)
    + {abstract} getTipo(): Class<T>
    + añadir(model:configuracionDataModel, casillaActual:casillaTablero)
    + eliminar(model:configuracionDataModel, casillaActual:casillaTablero)
    + actualizarTA(model:configuracionDataModel, casillaActual:casillaTablero)
    + {abstract} aplicarMejora(individuo:individuo, casillaActual:casillaTablero)
    }
class agua extends recurso{
    - incrementoTV: int
    --
    + agua()
    + agua(id:int,T:int)
    + agua(id:int,PX:int,PY:int,T:int)
    + aplicarMejora(individuo:individuo, casillaTablero:casillaActual)
    + getTipo(): Class<agua>
    }
class comida extends recurso{
    - incrementoTV: int
    --
    + comida()
    + comida(id:int,T:int)
    + comida(id:int,PX:int,PY:int,T:int)
    + aplicarMejora(individuo:individuo, casillaTablero:casillaActual)
    + getTipo(): Class<comida>
    }
class montaña extends recurso{
    - incrementoTV: int
    --
    + montaña()
    + montaña(id:int,T:int)
    + montaña(id:int,PX:int,PY:int,T:int)
    + aplicarMejora(individuo:individuo, casillaTablero:casillaActual)
    + getTipo(): Class<montaña>
    }
class pozo extends recurso{
    --
    + pozo()
    + pozo(id:int,T:int)
    + pozo(id:int,PX:int,PY:int,T:int)
    + aplicarMejora(individuo:individuo, casillaTablero:casillaActual)
    + getTipo(): Class<pozo>
    }
class biblioteca extends recurso{
    - incrementoProbClonacion: float
    --
    + biblioteca()
    + biblioteca(id:int,T:int)
    + biblioteca(id:int,PX:int,PY:int,T:int)
    + aplicarMejora(individuo:individuo, casillaTablero:casillaActual)
    + getTipo(): Class<biblioteca>
    }
class tesoro extends recurso{
    - incremento: int
    --
    + tesoro()
    + tesoro(id:int,T:int)
    + tesoro(id:int,PX:int,PY:int,T:int)
    + aplicarMejora(individuo:individuo, casillaTablero:casillaActual)
    + getTipo(): Class<tesoro>
    }
class gsonAdapterRecurso{
    --
    +serialize
    +deserialize
}
gsonAdapterRecurso-->recurso
@enduml