En un puerto se alquilan amarres para barcos de distinto tipo. Para cada ALQUILER se guarda el nombre y DNI del cliente, las fechas inicial y final de alquiler, la posición del amarre y el barco que lo ocupará. Un BARCO se caracteriza por su matrícula, su eslora en metros y año de fabricación.
Un alquiler se calcula multiplicando el número de días de ocupación (incluyendo los días inicial y final) por un módulo función de cada barco (obtenido simplemente multiplicando por 10 los metros de eslora) y por un valor fijo (2 e en la actualidad).
Sin embargo ahora se pretende diferenciar la información de algunos tipos de barcos:
· Número de mástiles para veleros
· Potencia en CV para embarcaciones deportivas a motor
· Potencia en CV y número de camarotes para yates de lujo
· El módulo de los barcos de un tipo especial se obtiene como el módulo normal más:
o El número de mástiles para veleros
o La potencia en CV para embarcaciones deportivas a motor
o La potencia en CV más el número de camarotes para yates de lujo
Utilizando la herencia de forma apropiada, diseñe el diagrama de clases y sus relaciones, con detalle de atributos y métodos necesarios. Programe en Java los métodos que permitan calcular el alquiler de cualquier tipo de barco
PD: debo usar interfaz gráfica, y si hay algún error en el código avisarme
En fin, tengo el código, uso eclipse, pero el código lo tengo fraccionado en 7 blogs de notas quisiera saber como puedo compilarlos en uno solo aqui se los dejo porfa ayuda
gracias ...
Datos alquiler cliente
Código:
package Programa;
import java.util.Calendar;
import java.util.GregorianCalendar;
public class Alquiler {
private GregorianCalendar fInicio, fFin;
private int posicionAmarre;
private Barco barco;
private double precioAlquiler;
private Cliente cliente;
public Alquiler(Cliente cliente, int diaInicio, int mesInicio, int añoInicio, int diaFin, int mesFin, int añoFin, int posicionAmarre, Barco barco) {
this.cliente = cliente;
fInicio = new GregorianCalendar(añoInicio, mesInicio, diaInicio);
fFin = new GregorianCalendar(añoFin, mesFin, diaFin);
this.posicionAmarre = posicionAmarre;
this.barco = barco;
precioAlquiler = 0.0;
}
// Getters
public Cliente getCliente() {
return cliente;
}
public String getfInicio() { // Muestra la fecha formateada: DD/MM/AA
return fInicio.get(Calendar.DATE) + "/" + fInicio.get(Calendar.MONTH) + "/" + fInicio.get(Calendar.YEAR);
}
public String getfFin() { // Muestra la fecha formateada: DD/MM/AA
return fFin.get(Calendar.DATE) + "/" + fFin.get(Calendar.MONTH) + "/" + fFin.get(Calendar.YEAR);
}
public int getPosicionAmarre() {
return posicionAmarre;
}
public Barco getBarco() {
return barco;
}
public double getPrecioAlquiler() {
return precioAlquiler;
}
public void setCliente(Cliente cliente) {
this.cliente = cliente;
}
public void setfInicio(int diaInicio, int mesInicio, int añoInicio) {
fInicio = new GregorianCalendar(añoInicio, mesInicio, diaInicio);
}
public void setfFin(int diaFin, int mesFin, int añoFin) {
fFin = new GregorianCalendar(añoFin, mesFin, diaFin);
}
public void setPosicionAmarre(int posicionAmarre) {
this.posicionAmarre = posicionAmarre;
}
public void setBarco(Barco barco) {
this.barco = barco;
}
// Calcula la diferencia en dias entre dos fechas
private long diasOcupados() {
long aux = fFin.getTimeInMillis() - fInicio.getTimeInMillis();
long dias = aux / (1000 * 60 * 60 * 24);
return dias;
}
// Multiplica días de ocupación
public void calculaPrecioAlquiler(Barco a) {
// Dias ocupados * Precio del amarre según el tipo de barco * valor fijo
precioAlquiler = diasOcupados() * a.calculaPrecioAmarre() + 2;
}
public String toString() {
return "***** Alquiler ******" + "\nNombre: " + cliente.getNombre()
+ " | DNI: " + cliente.getDni()
+ " | Teléfono: " + cliente.getTelefono()
+ "\nFecha de inicio: " + getfInicio()
+ " | Fecha de fin: " + getfFin()
+ "\nPosicion de amarre: " + posicionAmarre
+ " | Barco: " + barco.getMatricula();
}
}
Datos barco matricula, eslora, año de fabrucacion
Código:
public class Barco {
private String matricula;
private int eslora;
private GregorianCalendar añoFabricacion;
private double precioAmarre;
public Barco(String matricula, int eslora, int añoFabricacion) {
this.matricula = matricula;
this.eslora = eslora;
this.añoFabricacion = new GregorianCalendar(añoFabricacion, 12, 31);
precioAmarre = 0.0;
}
public String getMatricula() {
return matricula;
}
public int getEslora() {
return eslora;
}
public int getAñoFabricacion() {
return añoFabricacion.get(Calendar.YEAR);
}
public void setMatricula(String matricula) {
this.matricula = matricula;
}
public void setEslora(int eslora) {
this.eslora = eslora;
}
public void setAñoFabricacion(int añoFabricacion) {
this.añoFabricacion = new GregorianCalendar(añoFabricacion, 12, 31);
}
public void impuestoTipoBarco(double precioAmarre) {
this.precioAmarre = this.precioAmarre + precioAmarre;
}
public double calculaPrecioAmarre() {
precioAmarre = eslora * 10;
return precioAmarre;
}
public String toString() {
return "***** Barco ******\n" + "Matrícula: " + matricula
+ " | Metros de eslora: " + eslora
+ "\nAño de fabricación: " + getAñoFabricacion();
}
}
Datos Bote deportivo
Código:
public class Deportivo extends Barco {
private int potencia;
public Deportivo(int potencia, String matricula, int eslora, int añoFabricacion) {
super(matricula, eslora, añoFabricacion);
this.potencia = potencia;
}
public int getPotencia() {
return potencia;
}
public void setPotencia(int potencia) {
this.potencia = potencia;
}
public double calculaPrecioAmarre() {
return super.calculaPrecioAmarre() + potencia * 1;
}
public String toString() {
return "***** Deportivo a motor *****\n"
+ "Matrícula: " + super.getMatricula()
+ " | Metros de eslora: " + super.getEslora()
+ "\nAño de fabricación: " + getAñoFabricacion()
+ " | Potencia: " + potencia + "CV";
}
}
Datos Bote velero
Código:
public class Velero extends Barco {
private int numeroMastiles;
public Velero(int numeroMastiles, String matricula, int eslora, int añoFabricacion) {
super(matricula, eslora, añoFabricacion);
this.numeroMastiles = numeroMastiles;
}
public int getNumeroMastiles() {
return numeroMastiles;
}
public void setNumeroMastiles(int numeroMastiles) {
this.numeroMastiles = numeroMastiles;
}
public double calculaPrecioAmarre() {
return super.calculaPrecioAmarre() + numeroMastiles * 5;
}
public String toString() {
return "****** Velero ******\n" + "Matrícula: " + super.getMatricula()
+ " | Metros de eslora: " + super.getEslora()
+ "\nAño de fabricación: " + getAñoFabricacion()
+ " | Mastiles: " + numeroMastiles;
}
}
Datos Bote Yate Lujoso
Código:
public class Yate extends Deportivo {
private int camarotes;
public Yate(int camarotes, int potencia, String matricula, int eslora, int añoFabricacion) {
super(potencia, matricula, eslora, añoFabricacion);
this.camarotes = camarotes;
}
public int getCamarotes() {
return camarotes;
}
public void setCamarotes(int camarotes) {
this.camarotes = camarotes;
}
public double calculaPrecioAmarre() {
return super.calculaPrecioAmarre() + camarotes * 20;
}
public String toString() {
return "***** Yate de lujo *****\n" + "Matrícula: " + super.getMatricula()
+ " | Metros de eslora: " + super.getEslora()
+ "\nAño de fabricación: " + getAñoFabricacion()
+ " | Potencia: " + super.getPotencia() + "CV"
+ " | Camarotes: " + camarotes;
}
}
Datos cliente
Código:
public class Cliente {
private String nombre, dni;
private long telefono;
public Cliente(String nombre, String dni, long telefono) {
this.nombre = nombre;
this.dni = dni;
this.telefono = telefono;
}
public String getNombre() {
return nombre;
}
public String getDni() {
return dni;
}
public long getTelefono() {
return telefono;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public void setDni(String dni) {
this.dni = dni;
}
public void setTelefono(long telefono) {
this.telefono = telefono;
}
}
Funcion principal
Código:
public class RunAmarres {
public static void main(String[] args) {
Barco titanic = new Deportivo(500, "1565-FHD", 8, 2003);
Cliente gerardo = new Cliente("Gerardo", "18088821-B", 63453673);
Alquiler alquilerGerardo = new Alquiler(gerardo, 23, 5, 2015, 29, 5, 2015, 23, titanic);
System.out.println(alquilerGerardo.toString() + "\n");
System.out.println(titanic.toString());
alquilerGerardo.calculaPrecioAlquiler(titanic);
System.out.println("\n----------------------------------------------");
System.out.printf("Precio del amarre: %.2f€\n", titanic.calculaPrecioAmarre());
System.out.printf("Precio del alquiler: %.2f€\n", alquilerGerardo.getPrecioAlquiler());
}
}
Ayuda porfavor, estoy un poco frustrado con esto.. gracias
· No se debe escribir en mayúsculas
>aquí las reglas del foro
-Engel Lex