Organização de Classes - OO

Boa tarde pessoal.

Estou com um problema quanto a recursividade, e já que não tenho experiência em OO, estou apanhando bastante.
Por isso recorro aos grandes mestres do GUJ.

Vamos aos detalhes:

Estou brincando com um joguinho de xadrez e criei todas as classes que “achei” que seria necessário.
Que são:
ValidaMovimento();
ValidaCavalo();
ValidaTorre();
ValidaBispo();
ValidaDama();
ValidaPeao();
ValidaRei();
VerificaCheque();
SobrepõePeca();

A classe ValidaMovimento no seu construtor tem:

public ValidaMovimento() { validaCavalo = new ValidaCavalo(); sobrepoePeca = new SobrepoePeca(); validaTorre = new ValidaTorre(); validaBispo = new ValidaBispo(); validaDama = new ValidaDama(); validaPeao = new ValidaPeao(); validaRei = new ValidaRei(); verificaCheque = new VerificaCheque(); }

Até ai tudo normal.

O problema é que a classe ValidaRei(), precisa também dos métodos da classe VerificaCheque().
E a classe VerificaCheque precisa dos métodos das classes ValidaCavalo, ValidaBispo, ValidaDama e etc.

Pensei em deixar a classe VerificaCheque extends a ValidaMovimento, mas ai entra no StackOverFlow.

Se alguém puder me ajudar em como organizar essas classes eu agradeço muito.

Ou se precisarem de mais informações, estarei por aqui dando uma olhada e respondendo possíveis perguntas.

http://elemarjr.net/2010/12/30/escrevendo-um-engine-para-xadrez-parte-1-bitboards/
http://elemarjr.net/2010/12/30/escrevendo-um-engine-para-xadrez-parte-2-a-importncia-do-pr-processamento/
http://elemarjr.net/2011/01/02/escrevendo-um-engine-para-xadrez-parte-3-o-movimento-do-cavalo/
http://elemarjr.net/2011/01/04/escrevendo-um-engine-para-xadrez-parte-4-tempo-para-refactoring/
http://elemarjr.net/2011/01/07/escrevendo-um-engine-para-xadrez-parte-5-o-movimento-do-rei/
http://elemarjr.net/2011/01/07/escrevendo-um-engine-para-xadrez-parte-6-o-movimento-dos-pees/
http://elemarjr.net/2011/01/11/escrevendo-um-engine-para-xadrez-parte-7-o-movimento-da-torre/
http://elemarjr.net/2011/01/12/escrevendo-uma-engine-para-xadrez-parte-8-bispo-e-dama/
http://elemarjr.net/2011/01/17/escrevendo-um-engine-para-xadrez-parte-9-refactoring-e-redesign/
http://elemarjr.net/2011/01/23/escrevendo-um-engine-para-xadrez-parte-10-pieceset-side-attackmoves-rays-e-otimizaes/
http://elemarjr.net/2011/01/27/escrevendo-um-engine-para-xadrez-parte-11-mais-bitboards-xeques-e-escapadas/

Obrigado Vini, pelo tempo dispensado.

Mas meu intuíto não era gerar uma engine, até porque meu conhecimento matemático ou em java não chega nem perto disso.
Tanto que não sei ainda nem organizar as classes ou fazer um implements decente, quissá desenvolver uma engine.

Só queria uma ajuda para deixar a classe VerificaCheque disponível para outras classes como ValidaMovimento e ValidaRei.

Obrigado.

Pesquise sobre o padrão Strategy.