Estou procurando idéias sobre como fazer o seguinte: Quero escrever um "mundo" simples em Java. Um que eu poderia iniciar e, em seguida, adicionar novos objetos posteriormente para simular / observar comportamentos diferentes entre os objetos existentes. O plano é codificar os objetos mais novos depois de observar os antigos por um tempo e depois carregá-los / soltá-los no mundo existente. O problema é que eu nunca mais quero parar ou reiniciar o mundo depois que ele começar, quero que ele funcione por algumas semanas, mas eu preciso da capacidade de soltar objetos e refazer / reescrever / excluir / criar / mutar ao longo do tempo sem precisar de uma reinicialização. O mundo poderia ser tão simples quanto uma matriz 100 x 100 de locais X / Y, com uma possível GUI de mapa lado a lado para representar visualmente o mundo. Eu sei que preciso de algum tipo de processo de timer para monitorar objetos e dar a cada um uma 'chance de agir'
Exemplo: codifico World.java na segunda-feira e deixo em execução. Então, na terça-feira, escrevo uma nova classe chamada Rock.java (que não se move). Em seguida, carrego / solto (de alguma forma?) Neste mundo já em execução (que apenas o coloca em algum lugar aleatório na matriz mundial e nunca se move). Então, na quarta-feira, crio uma nova classe chamada Cat.java e a solto no mundo, novamente colocada aleatoriamente, mas esse novo objeto pode se mover pelo mundo (em alguma unidade de tempo); então, na quinta-feira, escrevo uma classe chamada Dog. java que também se move, mas pode "agir" em outro objeto se estiver no local vizinho e vice-versa.
Aqui está a coisa. Não sei que tipo de estrutura / design eu precisaria para codificar a classe mundial real para saber como detectar / carregar / rastrear objetos futuros (e atualmente inexistentes).
Alguma idéia de como você faria algo assim usando Java?