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