Vous êtes sur la page 1sur 10

Práctica 10a

Práctica 10a

José M. Ordax
chemi@javahispano.org

1
Práctica 10a

Copyright © 2004
José M. Ordax

Este documento puede ser distribuido solo bajo los términos y condiciones de la
Licencia de Documentación de javaHispano v1.0 o posterior.

La última versión de dicha licencia se encuentra en


http://www.javahispano.org/licencias/

2
Práctica 10a

Enunciado:

Desarrollar un sistema de gestión de un garaje siguiendo estas especificaciones.

En el garaje se cambian las ruedas tanto de coches como de motos. El precio


del cambio de una rueda se fija al abrir el garaje, al igual que la capacidad
máxima de vehículos, ya sean motos o coches. Si no hubiese hueco para
registrar un vehículo nuevo, habrá que tener contemplado un sistema de aviso
para quien esté dejando su vehículo.

El sistema de gestión del garaje requiere un mecanismo para ingresar y retirar


los vehículos, conocer el número total de vehículos recibidos en ese momento,
el precio que supondría cambiar todas las ruedas de todos los vehículos, y el
kilometraje medio de todos ellos.

La información que manejaremos de los coches entre otras cosas es la marca y


el número de puertas. Mientras que de las motos será la marca y la cilindrada.

Las clases relacionadas con los vehículos se guardarán en el paquete


org.javahispano.practica10a.vehiculos mientras que el Garaje y Practica10a se
guardarán en el paquete org.javahispano.practica10a.

La clase Practica10a tiene un método main en el que se crea un Garaje, una


serie de vehículos que se irán recibiendo en el garaje y por último se imprimirá
por pantalla toda la información general del garaje así como la información de
cada vehículo.

Realizar el diagrama UML.

3
Práctica 10a

Resolución:

Nota: En esta resolución se hace un uso abusivo de los arrays. Existen


soluciones mucho más optimizadas pero se ha optado por esta para poder
practicar lo más posible el uso de esta estructura en concreto.

package org.javahispano.practica10a.vehiculos;

public interface Vehiculo


{
public abstract int getNumRuedas();

public abstract int getKilometraje();


}

package org.javahispano.practica10a.vehiculos;

public class Coche implements Vehiculo


{
// Atributos.
private int numRuedas = 4;
private String marca = null;
private int numPuertas = 0;
private int kilometraje = 0;

// Constructores.
public Coche(String param1, int param2, int param3)
{
marca = param1;
numPuertas = param2;
kilometraje = param3;
}

// Métodos.
public int getNumRuedas()
{
return numRuedas;
}

public int getKilometraje()


{
return kilometraje;
}

public String toString()


{
return "Coche: " + marca + " con: " + numPuertas + " puertas y: " + kilometraje + " kilómetros.";
}
}

4
Práctica 10a

package org.javahispano.practica10a.vehiculos;

public class Moto implements Vehiculo


{
// Atributos.
private int numRuedas = 4;
private String marca = null;
private int cilindrada = 0;
private int kilometraje = 0;

// Constructores.
public Moto(String param1, int param2, int param3)
{
marca = param1;
cilindrada = param2;
kilometraje = param3;
}

// Métodos.
public int getNumRuedas()
{
return numRuedas;
}

public int getKilometraje()


{
return kilometraje;
}

public String toString()


{
return "Moto: " + marca + " con: " + cilindrada + " caballos y: " + kilometraje + " kilómetros.";
}
}

package org.javahispano.practica10a;

import org.javahispano.practica10a.vehiculos.Vehiculo;

public class Garaje


{
// Atributos.
private Vehiculo[] vehiculos = null;
private int precio = 0;

// Constructores.
public Garaje(int param1, int param2)
{
vehiculos = new Vehiculo[param1];
precio = param2;
}

5
Práctica 10a

// Métodos.
public boolean ingresarVehiculo(Vehiculo param)
{
boolean sw = false;

for(int i=0; i<vehiculos.length; i++)


{
if(vehiculos[i] == null)
{
sw = true;
vehiculos[i] = param;
break;
}
}

return sw;
}

public void retirarVehiculo(Vehiculo param)


{
for(int i=0; i<vehiculos.length; i++)
{
if(vehiculos[i] == param)
{
vehiculos[i] = null;
break;
}
}
}

public Vehiculo[] getVehiculos()


{
Vehiculo[] temp = new Vehiculo[this.getNumVehiculos()];
for(int j=0, i=0; j<temp.length && i<vehiculos.length; i++)
{
if(vehiculos[i] != null)
{
temp[j] = vehiculos[i];
j++;
}
}
return temp;
}

public double getKilometrajeMedio()


{
int cont = 0;
double acum = 0;

for(int i=0; i<vehiculos.length; i++)


{
if(vehiculos[i] != null)
{
cont++;
acum += vehiculos[i].getKilometraje();
}

6
Práctica 10a

return acum / cont;


}

public int getCosteTotal()


{
int acum = 0;

for(int i=0; i<vehiculos.length; i++)


{
if(vehiculos[i] != null)
acum += vehiculos[i].getNumRuedas();
}

return acum * precio;


}

public int getNumVehiculos()


{
int cont = 0;

for(int i=0; i<vehiculos.length; i++)


{
if(vehiculos[i] != null)
cont++;
}

return cont;
}
}

package org.javahispano.practica10a;

import org.javahispano.practica10a.vehiculos.Coche;
import org.javahispano.practica10a.vehiculos.Moto;
import org.javahispano.practica10a.vehiculos.Vehiculo;

public class Practica10a


{
public static void main(String[] args)
{
Garaje g = new Garaje(2,100);

ingresarVehiculo(g,new Coche("Audi",5,15000));
ingresarVehiculo(g,new Moto("Yamaha",500,10000));
ingresarVehiculo(g,new Coche("Mercedes",3,20000));

System.out.println("");
System.out.println("El garaje tiene: " + g.getNumVehiculos() + " vehículos,");
System.out.println("con un kilometraje medio de: " + g.getKilometrajeMedio() + " kilómetros,");
System.out.println("y costaría cambiar todas sus ruedas: " + g.getCosteTotal() + " €.");

System.out.println("Los vehículos son: ");


Vehiculo[] vehiculos = g.getVehiculos();

7
Práctica 10a

for(int i=0; i<vehiculos.length; i++)


System.out.println(" - " + vehiculos[i]);

g.retirarVehiculo(vehiculos[0]);

System.out.println("");
System.out.println("El garaje tiene: " + g.getNumVehiculos() + " vehículos,");
System.out.println("con un kilometraje medio de: " + g.getKilometrajeMedio() + " kilómetros,");
System.out.println("y costaría cambiar todas sus ruedas: " + g.getCosteTotal() + " €.");
}

public static void ingresarVehiculo(Garaje g, Vehiculo v)


{
if(!g.ingresarVehiculo(v))
System.out.println("No hay sitio para el " + v);
}
}

8
Práctica 10a

Salida por consola:

9
Práctica 10a

Diagrama de Clases (UML):

10

Vous aimerez peut-être aussi