@startuml
interface Bloque{
    ejecutar(Persoanje)
    opuesto(): Bloque
}

class BloqueDerecha implements Bloque{
}

class BloqueAbajo implements Bloque{
}

class BloqueIzquierda implements Bloque{
}

class BloqueArriba implements Bloque{
}

class BloqueIterativo implements Bloque{
    + agregarBloque(AlgoBlocks)
}
BloqueIterativo o--- "*"Bloque

class BloquePersonalizado implements Bloque{
    + BloquePersonalizado(List<Bloque>)
}
BloquePersonalizado o--- "*"Bloque

@enduml