Une première approche

public class Echiquier {

  Piece plateau[][] new Piece[8][8];

  public static void main(String[] args) {
    Echiquier monJeu = new Echiquier();
    Piece laReineBlanche = new Reine(monJeu);
    laReineBlanche.setPosition(new Position('c'2));
    laReineBlanche.deplace(new Position('f'5));
  }

}

/* =================================================================*/


public class Position {
  private int xValue, yValue;

  public boolean aLinterieur() {
    return getXValue() > -&& getXValue() && getYValue() > -&& getYValue() 8;
  }

  public int getDeltaX(Position autre) {
    return 0// à implémenter
  }

  public int getDeltaY(Position autre) {
    return 0// à implémenter
  }

  public int getXValue() {
    return xValue;
  }

  public int getYValue() {
    return yValue;
  }

  public Position(char x, int y) {
    setX(x);
    setY(y);
  }

  public void setY(int value) {
    yValue = value - 1;
  }

  // piece.position.setX('g');
  public void setX(char value) {

    switch (value) {
    case 'a':
      xValue = 0;
      break;
    case 'b':
      xValue = 1;
      break;
    case 'c':
      xValue = 2;
      break;
    case 'd':
      xValue = 3;
      break;
    case 'e':
      xValue = 4;
      break;
    case 'f':
      xValue = 5;
      break;
    case 'h':
      xValue = 7;
      break;

    default:
      System.out.print("erreur, ne doit pas arriver");
      break;
    }

  }

  public boolean estSurDiagonale(Position p) {
    int dx = getDeltaX(p);
    int dy = getDeltaY(p);
    return (dx == dy);
  }

  public boolean estSurLigne(Position p) {
    int dx = getDeltaX(p);
    int dy = getDeltaY(p);
    return (dy == && dx != 0);

  }

  public boolean estSurColonne(Position p) {
    int dx = getDeltaX(p);
    int dy = getDeltaY(p);
    return (dx == && dy != 0);
  }

}


/* =================================================================*/


public abstract class Piece {
  private Echiquier echiquier;
  protected Position position;
  protected boolean couleur;

  public Piece(Echiquier echiquier) {
    this.echiquier = echiquier;
  }

  public Position getPosition() {
    return position;
  }

  public void deplace(Position value) {
    if (estDeplacementPossible(value&& value.aLinterieur()) {
      setPosition(value);
    }
  }

  public abstract boolean estDeplacementPossible(Position p);

  public void setPosition(Position value) {
    if (position != null)
      echiquier.plateau // enlever de la position courante
      [position.getXValue()][position.getYValue()] null;
    position = value;
    echiquier.plateau // nouvelle position
    [position.getXValue()][position.getYValue()] this;
  }
}


/* =================================================================*/


public class Reine extends Piece {

  public Reine(Echiquier echiquier) {
    super(echiquier);
  }

  public boolean estDeplacementPossible(Position nouvelle) {
    return position.estSurDiagonale(nouvelle|| position.estSurLigne(nouvelle)|| position.estSurColonne(nouvelle);
    /* on aurait pu:
    int dx = position.getDeltaX(nouvelle);
    int dy = position.getDeltaY(nouvelle);
    return (
    ((dx==0 && dy!=0) || (dy==0 && dx !=0)) 
      || dx == dy);  
      */
  }
}


/* =================================================================*/


public class Pion extends Piece {
  public boolean estDeplacementPossible(Position p) {
    // à implémenter
    return false;
  }

  public Pion(Echiquier echiquier) {
    super(echiquier);
  }
}

Classe de test

package echiquier;

import piece.Piece;
import piece.Pion;
import piece.Reine;

public class Partie {
	
	private Echiquier echiquier;
	
	public void jeu() {
		Echiquier echiquier = new Echiquier();
		Piece laReineBlanche = new Reine(echiquier, Piece.COULEUR_BLANCHE);
	    laReineBlanche.setPositionInitiale(new Position('c', 2));
		System.out.println(echiquier.toString());
		
		laReineBlanche.deplace(new Position('f', 5));
		System.out.println(echiquier);
		
		Pion unPion = new Pion(echiquier,Piece.COULEUR_NOIRE);
		unPion.setPositionInitiale(new Position('e', 2));
		System.out.println(echiquier);
		
		unPion.deplace(new Position('e', 4));
		//unPion.deplace(new Position('e', 5)); pour faire obstacle à la reine
		Pion unAutrePion = new Pion(echiquier,Piece.COULEUR_NOIRE);
		unAutrePion.setPositionInitiale(new Position('d', 2));
		System.out.println(echiquier);
		
		unAutrePion.deplace(new Position('d', 4));
		System.out.println(echiquier);
		
		laReineBlanche.deplace(new Position('a', 5));
		System.out.println(echiquier);
		
		Pion unTroisiemePion = new Pion(echiquier,Piece.COULEUR_NOIRE);
		unTroisiemePion.setPositionInitiale(new Position('b', 2));
		System.out.println(echiquier);
		
		unTroisiemePion.deplace(new Position('b', 4));
		System.out.println(echiquier);
		
			
		unTroisiemePion.deplace(new Position('a', 5));
		System.out.println(echiquier);
		
		Pion p4 = new Pion(echiquier,Piece.COULEUR_NOIRE);
		p4.setPositionInitiale(new Position('a', 2));
		System.out.println(echiquier);
		
		p4.deplace(new Position('a', 4));
		System.out.println(echiquier);
	}
	
	
	
	public static void main(String[] args) {
		Partie unePartie = new Partie();
		unePartie.jeu();
	}


}