Con esta refactorización haced lo mismo para frenar y girar.
package com.trifulcas.clases;
public class Vehiculo {
protected int velocidad;
protected int direccion;
protected int velocidadMaxima;
public Vehiculo() {
velocidadMaxima=200;
}
// El método acelerar con cuaalquier valor solo es accesible
// A la propia clase y sus derivadas. No es accesible al usuario
protected void acelerar(int cantidad) {
velocidad+=cantidad;
if (velocidad>velocidadMaxima) {
velocidad=velocidadMaxima;
}
}
public void acelerar() {
acelerar(10);
}
public void frenar() {
velocidad-=10;
if (velocidad<0) {
velocidad=0;
}
}
public void izquierda() {
direccion+=10;
if (direccion>=360) {
direccion-=360;
}
}
public void derecha() {
direccion-=10;
if (direccion<0) {
direccion+=360;
}
}
public String estado() {
return velocidad+" | "+direccion+" | "+velocidadMaxima;
}
}
class Coche extends Vehiculo{
public Coche() {
velocidadMaxima=150;
}
}
class Bicicleta extends Vehiculo{
public void acelerar() {
acelerar(3);
}
public void frenar() {
velocidad-=3;
if (velocidad<0) {
velocidad=0;
}
}
}
class Tanque extends Vehiculo{
public void izquierda() {
direccion+=90;
if (direccion>=360) {
direccion-=360;
}
}
public void derecha() {
direccion-=90;
if (direccion<0) {
direccion+=360;
}
}
}
Resultado:
package com.trifulcas.clases;
public class Vehiculo {
protected int velocidad;
protected int direccion;
protected int velocidadMaxima;
protected int velocidadMinima;
protected int giroMax;
protected int giroMin;
public Vehiculo() {
velocidadMaxima=200;
velocidadMinima=0;
giroMax=360;
giroMin=0;
}
// El método acelerar con cualquier valor solo es accesible
// A la propia clase y sus derivadas. No es accesible al usuario
protected void cambiar(int cantidad) {
velocidad+=cantidad;
if (velocidad>velocidadMaxima) {
velocidad=velocidadMaxima;
}
if(velocidad<velocidadMinima) {
velocidad=velocidadMinima;
}
}
/**
* Acelera el coche 10 unidades
* La velocidad máxima es de 200 km/hora
*/
public void acelerar() {
cambiar(10);
}
/**
* Frena el coche 10 unidades
*/
public void frenar() {
cambiar(-10);
}
protected void girar(int cantidad) {
direccion+=cantidad;
if (direccion>giroMax) {
direccion-=giroMax;
}
if (direccion<giroMax) {
direccion+=giroMax;
}
}
public void izquierda() {
girar(10);
}
public void derecha() {
girar(-10);
}
public String estado() {
return velocidad+" | "+direccion+" | "+velocidadMaxima;
}
}
class Coche extends Vehiculo{
public Coche() {
velocidadMaxima=150;
}
}
class Bicicleta extends Vehiculo{
public void acelerar() {
cambiar(3);
}
public void frenar() {
cambiar(-3);
}
}
class Tanque extends Vehiculo{
public void izquierda() {
girar(90);
}
public void derecha() {
girar(-90);
}
}