Refactorización de Vehiculo

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);
	}
}

Publicado por

Avatar del usuario

Juan Pablo Fuentes

Formador de programación y bases de datos