Ajuda na resolução de um problema

Ajuda na Resolução de um problema
Considerando a classe Ponto com os atributos x e y, implemente-a com as seguintes funcionalidades:

a) Métodos de acesso para seus atributos
b) Um construtor que coloca o ponto na origem cartesiana (x = 0, y = 0)
c) Um construtor que inicializa x, e y com parâmetros a e b, respectivamente
d) Um método que move x, y para uma nova coordenada
e) Um método que verifica se dois pontos são iguais
f) Um método que calcula a distância entre dois pontos

Dado o problema fiz este código que precisa de mais alguma coisa para funcionar:

public class Ponto {


private int x;
private int y;
private double Mova;

public Ponto()
{
x=0;
y=0; 
}
public Ponto(int a,int b)
{
x=a;
y=b;

} 

public void Mova ()(

x=0;
y=0;

)
public void Mover (int a,int b)
{
x=x+a;
y=y+b;
}

public void Imprimir()
{
System.out.println ("x="+x);
System.out.println ("y="+y);

}


public boolen EIgual (PontoP){

if((x==Pontoget x())&& (y==Ponto.get y())
return true;
else
return false;

}


}


}
public class Programa_Principal {

public static void main (String x[]) {

Ponto P1,P2,P3;

P1=new Ponto();
P2=new Ponto(3,4);
P1=Mover (1,2);
P3=new Ponto(5,6);
}


} 

acredito que seja bom ter getters e setter para x e y.

int getX(){
     return this.x;
}

int getY(){
     return this.x;
}

void setX(int newX){
    this.x = newX;
}

void setY(int newY){
    this.y = newY;
}

para a distancia dê uma olhada em alguma coisa sobre Distância euclidiana
é algo assim:

double distancia(Ponto p){
    double quad_deltax = ( ( p.getX() - this.getX() )*( p.getX() - this.getX() ) );
    double quad_deltay = ( ( p.getY() - this.getY() )*( p.getY() - this.getY() ) );
    return Math.sqrt(quad_deltax  + quad_deltay);
}