Hola bueno intento explicarte tu duda, la cual no se si he entendido correctamente.
Por norma general, consenso, estandarización o como quieras llamarlo los métodos que tienen como sus tres primeras letras de inicio get o set, simplemente son métodos que en la mayoría de los casos solo tendrán dentro una instrucción, O establecer el valor del atributo(set) para el cual fue creado, O devolver el valor de atributo(get) para el que fue creado.
Por ejemplo, imagina que tenemos un atributo llamado edad de tipo int, pues este atributo llevaría asociados sus métodos set y get, que serían:
public int getEdad(){
return edad;
}
public void setEdad(int paramEdad ){
edad=paramEdad;
}
Como siempre digo... todo método debe tener una única funcionalidad. La funcionalidad del get es devolver el valor de un atributo, pues todo el código contenido en el método get debe ir dirigido a devolver el valor de la edad y ya esta.
Con el set lo mismo, la función de un método set, es la de establecer el valor de un atributo, pues todo su código debe ir dirigido nada mas a establecer el valor del atributo y ya esta.
Esto que comento anteriormente es lo ideal a la hora de programar, es decir cumplir una serie de normas que se suelen exigir despues en un entorno profesional.
Por otro lado tu a cada método le puedes poner el código que quieras, como si le quieres meter 1000 lineas a un método set, pero como comento no es lo ideal.
Por otro lado analizando tu ejercicio creo que la forma correcta es tal y como lo tienes.
Excepto por el método setDesplazamiento, yo para ajustarme a los estándares, partiría ese método en 2 y crearía los métodos setDesplazamientoX(...) y setDesplazamientoY(...)
y cuyo código sería:
public void setDesplazamientoX(int param){
desplazamientoX=param;
}
public void setDesplazamientoY(int param){
desplazamientoY=param;
}
Por otro lado, si te dicen también que imprimas por pantalla, pues lo incluyes, pero no mucho mas.
Ahora otra cosa... sobre la sobrecarga de métodos("duplicar")...Creo que lo verás dentro de un par de lecciones, pero te adelanto algo:
Esto se puede hacer siempre y cuando entre los métodos a sobrecargar, haya una diferencia en los parámetros de entrada, te pongo un ejemplo:
public void checkAdmitido(boolean valor){
if(valor==true){
System.out.println("Admitido");
}
else{
System.out.println("No Admitido");
}
}
public void checkAdmitido(){
if(admitido==true){
System.out.println("Admitido");
}
else{
System.out.println("No Admitido");
}
}
public void checkAdmitido(String valor){
if(valor.equals("true")){
System.out.println("Admitido");
}
else{
System.out.println("No Admitido");
}
}
Estos tres métodos anteriores si te fijas, se llaman igual, pero pueden coexistir en una misma clase, ya que los tres presentan diferencias entre los parámetros de entrada, uno tiene un parámetro de tipo boolean, otro tiene un parámetro de tipo String, y el ultimo no tiene parámetros. Por lo cual este método checkAdmitido(...) se dice que está sobrecargado.
Y bueno nada mas, espero que te sirva la lección, jeje.
Un salduo!!
NOTA: Por cierto, una buena indentación(orden en el código) también es muy importante.