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