Ejercicio Herencia

Vamos a crear una clase ‘Vehiculo’ con las siguientes propiedades:

velocidad, direccion de tipo entero

Tendrá los siguientes métodos:

acelerar(): Incrementa 10 a la velocidad
frenar(): decrementa 10 a la velocidad
izquierda(): Suma 10 a la dirección
derecha(): Resta 10 a la dirección.

Si la velocidad es 0 no podemos frenar más.
Si la velocidad es mayor de 200 no podemos acelerar más.

Si la dirección es mayor o igual de 360 le restamos 360.
Si la dirección es negativa le sumamos 360.
Ejemplos: direccion: 350 y ejecutamos izquierda. Debería valer 360, pero le restamos 360 y pasa a valer 0.
direccion vale 0 y ejecutamos derecha. Debería valer -10, pero le sumamos 360 y pasa a valer 350.

De aquí vamos a derivar las siguientes clases:

Coche
La velocidad máxima es de 150. ¿QUé tendríamos que hacer para conseguirlo?
Bicicleta
Acelerar y frenar incrementan la velocidad en 3 en vez de 10
Tanque
Al girar a la izquierda o a la derecha se giran 90 en vez de 10.

package com.trifulcas.clases;

public class Vehiculo {

	protected int velocidad;
	protected int direccion;
	
	public void acelerar() {
		velocidad+=10;
		if (velocidad>200) {
			velocidad=200;
		}
	}
	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;
	}
}

class Coche extends Vehiculo{
	public void acelerar() {
		velocidad+=10;
		if (velocidad>150) {
			velocidad=150;
		}
	}
}

class Bicicleta extends Vehiculo{
	public void acelerar() {
		velocidad+=3;
		if (velocidad>200) {
			velocidad=200;
		}
	}
	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;
		}
	}
}

Uso:

package com.trifulcas.clases;


public class ProbarClases {

	public static void main(String[] args) {
	
		Coche foo=new Coche();
		Bicicleta bike=new Bicicleta();
		Tanque panzer=new Tanque();
		
		System.out.println(panzer.estado());
		panzer.izquierda();
		System.out.println(panzer.estado());
		
		for(int i=0;i<20;i++) {
			foo.acelerar();
			bike.acelerar();
		}
		System.out.println(foo.estado());
		foo.frenar();
		foo.frenar();
		foo.frenar();
		System.out.println(foo.estado());
		foo.derecha();
		foo.derecha();
		System.out.println(foo.estado());
	}
	public static double PVP(double precio) {
		return precio*1.21;
	}

}

Publicado por

Juan Pablo Fuentes

Formador de programación y bases de datos