Uso de objeto creado en otra clase
Hola, alguien seria tan amable de aclararme unas dudas que tengo con un programa que estoy haciendo.
Tengo una clase Cliente, en la que creo el objeto cliente.
Luego creo una clase contrato, y quiero dentro de esa clase usar el objeto cliente.
Mas tarde intento crear un objeto contrato que incluya el objeto cliente, pero no me funciona. El programa es el siguiente:package practica1;
import java.util.Calendar;
//Creamos la clase Cliente
class Cliente {
private String dni;
private String nombre;
private String apellido;
private String direccion;
private int telefono;
//Ahora Creamos el constructor del Cliente
Cliente(String dni, String nombre, String apellido, String direccion, int telefono) {
this.dni = dni;
this.nombre = nombre;
this.apellido = apellido;
this.direccion = direccion;
this.telefono = telefono;
} //Fin del constructor Cliente
} // Fin de la clase Cliente
//Creamos la clase coche
class Coche {
private String matricula;
private String modelo;
private int año;
private int kilometraje;
private int puertas;
private boolean aireAcondicionado;
private double costedia;
//Creamos el constructor de Coche
Coche(String matricula, String modelo, int año, int kilometraje,
int puertas, boolean aireAcondicionado, double costedia) {
this.matricula = matricula;
this.modelo = modelo;
this.año = año;
this.kilometraje = kilometraje;
this.puertas = puertas;
this.aireAcondicionado = aireAcondicionado;
this.costedia = costedia;
} //Fin constructor coche
} // Fin de la clase Coche
//Creamos la clase Contrato
class Contrato {
private Cliente datosCliente; //Se añade clase interna y objeto
private Coche datosCoche; // Se añade clase interna y objeto
private String fechaAlta;
private String fechaBaja;
private int diasAlquiler;
private double costeTotal;
//Creamos el contructor del contrato
Contrato(Cliente datosCliente, Coche datosCoche, String fechaAlta, String fechaBaja, int diasAlquiler, double costeTotal) {
this.fechaAlta = fechaAlta;
this.fechaBaja = fechaBaja;
this.diasAlquiler = diasAlquiler;
this.costeTotal = costeTotal;
this.datosCliente = new Cliente(); //Nuevo objeto
this.datosCoche = new Coche(); // Nuevo objeto
}// Fin constructor contrato
}
//Fin clase contrato
//Creamos la clase principal
class ClasePrincipal
{
public static void main(String[] args) {
Cliente cliente1 = new Cliente("56734569", "Fernando", "Alonso", "Los Laureles, 1", 111111111);
//Creado cliente1
Coche coche1 = new Coche("6595 WIN", "Renault Megane II", 2004, 10000, 5, true, 45);
Contrato contrato1 = new Contrato(cliente1, coche1, "fechaAlta","FechaBaja", 3,100);
// Ahora sacamos por pantalla el contrato
System.out.println("Contrato: "+ contrato1);
} // Fin main()
} // Fin ClasePrincipal
Tengo una clase Cliente, en la que creo el objeto cliente.
Luego creo una clase contrato, y quiero dentro de esa clase usar el objeto cliente.
Mas tarde intento crear un objeto contrato que incluya el objeto cliente, pero no me funciona. El programa es el siguiente:package practica1;
import java.util.Calendar;
//Creamos la clase Cliente
class Cliente {
private String dni;
private String nombre;
private String apellido;
private String direccion;
private int telefono;
//Ahora Creamos el constructor del Cliente
Cliente(String dni, String nombre, String apellido, String direccion, int telefono) {
this.dni = dni;
this.nombre = nombre;
this.apellido = apellido;
this.direccion = direccion;
this.telefono = telefono;
} //Fin del constructor Cliente
} // Fin de la clase Cliente
//Creamos la clase coche
class Coche {
private String matricula;
private String modelo;
private int año;
private int kilometraje;
private int puertas;
private boolean aireAcondicionado;
private double costedia;
//Creamos el constructor de Coche
Coche(String matricula, String modelo, int año, int kilometraje,
int puertas, boolean aireAcondicionado, double costedia) {
this.matricula = matricula;
this.modelo = modelo;
this.año = año;
this.kilometraje = kilometraje;
this.puertas = puertas;
this.aireAcondicionado = aireAcondicionado;
this.costedia = costedia;
} //Fin constructor coche
} // Fin de la clase Coche
//Creamos la clase Contrato
class Contrato {
private Cliente datosCliente; //Se añade clase interna y objeto
private Coche datosCoche; // Se añade clase interna y objeto
private String fechaAlta;
private String fechaBaja;
private int diasAlquiler;
private double costeTotal;
//Creamos el contructor del contrato
Contrato(Cliente datosCliente, Coche datosCoche, String fechaAlta, String fechaBaja, int diasAlquiler, double costeTotal) {
this.fechaAlta = fechaAlta;
this.fechaBaja = fechaBaja;
this.diasAlquiler = diasAlquiler;
this.costeTotal = costeTotal;
this.datosCliente = new Cliente(); //Nuevo objeto
this.datosCoche = new Coche(); // Nuevo objeto
}// Fin constructor contrato
}
//Fin clase contrato
//Creamos la clase principal
class ClasePrincipal
{
public static void main(String[] args) {
Cliente cliente1 = new Cliente("56734569", "Fernando", "Alonso", "Los Laureles, 1", 111111111);
//Creado cliente1
Coche coche1 = new Coche("6595 WIN", "Renault Megane II", 2004, 10000, 5, true, 45);
Contrato contrato1 = new Contrato(cliente1, coche1, "fechaAlta","FechaBaja", 3,100);
// Ahora sacamos por pantalla el contrato
System.out.println("Contrato: "+ contrato1);
} // Fin main()
} // Fin ClasePrincipal
El problema es que creas un nuevo objeto Cliente en el constructor de Contrado ( this.datosCliente = new Cliente(); //Nuevo objeto). Y lo que deberías hacer es asignar a this.datosCliente el cliente que estás pasando como parámetro en el constructor: this.datosCliente=datosCliente.
Un saludo.
Un saludo.
Muchisimas gracias Isma, con tu ayuda ya no me da ningun error al compilar. Bueno ahora voy a por la segunda parte de este ejercicio.
Saludos, Carlos R.
Saludos, Carlos R.
Bueno, al ejecutarlo si que me da el siguiente error:
Exception in thread "main"
¿Alguien sabe por qué?
Exception in thread "main"
¿Alguien sabe por qué?
Supongo que la excepción dice algo más. (null pointer exception, class cast exception, index out of bounds, etc) y que además te dirá en qué fichero java y en que línea.
Si no eres capaz de encontrar el error, pon aquí la excepción completa y el cacho de código alrededor de la línea en la que salta la excepción y que corresponda a código hecho por tí.
Se bueno.
Si no eres capaz de encontrar el error, pon aquí la excepción completa y el cacho de código alrededor de la línea en la que salta la excepción y que corresponda a código hecho por tí.
Se bueno.
Hola amigos. Bueno ahi ve el codigo, y despues os pongo el error que me da el IDE jGRASP al ejecutar el ppackage practica1;
import java.util.Calendar;
//Creamos la clase Cliente
class Cliente {
private String dni;
private String nombre;
private String apellido;
private String direccion;
private int telefono;
//Ahora Creamos el constructor del Cliente
Cliente(String dni, String nombre, String apellido, String direccion, int telefono) {
this.dni = dni;
this.nombre = nombre;
this.apellido = apellido;
this.direccion = direccion;
this.telefono = telefono;
} //Fin del constructor Cliente
} // Fin de la clase Cliente
//Creamos la clase coche
class Coche {
protected String matricula;
protected String modelo;
protected int año;
protected int kilometraje;
protected int puertas;
protected boolean aireAcondicionado;
protected double costedia;
//Creamos el constructor de Coche
Coche(String matricula, String modelo, int año, int kilometraje,
int puertas, boolean aireAcondicionado, double costedia) {
this.matricula = matricula;
this.modelo = modelo;
this.año = año;
this.kilometraje = kilometraje;
this.puertas = puertas;
this.aireAcondicionado = aireAcondicionado;
this.costedia = costedia;
} //Fin constructor coche
} // Fin de la clase Coche
//Clase Moto
class Moto extends Coche {
protected int cilindrada;
protected boolean sidecar;
// Constructor
Moto(String matricula,String modelo,int año,int kilometraje,double costedia,int cilindrada,boolean sidecar){
super(matricula, modelo, año, kilometraje,cilindrada,sidecar, costedia);
this.cilindrada=cilindrada;
this.sidecar=sidecar;
}//Fin constructor Moto
}//Fin clase Moto
//Creamos la clase Contrato
class Contrato {
private Cliente datosCliente; //Incluye objeto de Cliente
private Coche datosCoche; // Incluye objeto de Coche
private String fechaAlta;
private String fechaBaja;
private int diasAlquiler;
private double costeTotal;
//Creamos el contructor del contrato
Contrato(Cliente datosCliente,Coche datosCoche, String fechaAlta, String fechaBaja, int diasAlquiler, double costeTotal) {
this.fechaAlta = fechaAlta;
this.fechaBaja = fechaBaja;
this.diasAlquiler = diasAlquiler;
this.costeTotal = costeTotal;
this.datosCliente = datosCliente ; //Nuevo objeto
this.datosCoche = datosCoche; // Nuevo objeto
}// Fin constructor contrato
}
//Fin clase contrato
//Creamos la clase principal
class ClasePrincipal
{
public static void main(String[] args) {
Cliente cliente1 = new Cliente("56734569", "Fernando", "Alonso", "Los Laureles, 1", 111111111);
//Creado cliente1
Coche coche1 = new Coche("6595 WIN", "Renault Megane II", 2004, 10000, 5, true, 45);
Contrato contrato1 = new Contrato(cliente1, coche1, "26/11/2004","29/11/2004", 4,180);
// Ahora sacamos por pantalla el contrato
System.out.println("Contrato: "+ contrato1);
} // Fin main()
} // Fin ClasePrincipal
rograma.
import java.util.Calendar;
//Creamos la clase Cliente
class Cliente {
private String dni;
private String nombre;
private String apellido;
private String direccion;
private int telefono;
//Ahora Creamos el constructor del Cliente
Cliente(String dni, String nombre, String apellido, String direccion, int telefono) {
this.dni = dni;
this.nombre = nombre;
this.apellido = apellido;
this.direccion = direccion;
this.telefono = telefono;
} //Fin del constructor Cliente
} // Fin de la clase Cliente
//Creamos la clase coche
class Coche {
protected String matricula;
protected String modelo;
protected int año;
protected int kilometraje;
protected int puertas;
protected boolean aireAcondicionado;
protected double costedia;
//Creamos el constructor de Coche
Coche(String matricula, String modelo, int año, int kilometraje,
int puertas, boolean aireAcondicionado, double costedia) {
this.matricula = matricula;
this.modelo = modelo;
this.año = año;
this.kilometraje = kilometraje;
this.puertas = puertas;
this.aireAcondicionado = aireAcondicionado;
this.costedia = costedia;
} //Fin constructor coche
} // Fin de la clase Coche
//Clase Moto
class Moto extends Coche {
protected int cilindrada;
protected boolean sidecar;
// Constructor
Moto(String matricula,String modelo,int año,int kilometraje,double costedia,int cilindrada,boolean sidecar){
super(matricula, modelo, año, kilometraje,cilindrada,sidecar, costedia);
this.cilindrada=cilindrada;
this.sidecar=sidecar;
}//Fin constructor Moto
}//Fin clase Moto
//Creamos la clase Contrato
class Contrato {
private Cliente datosCliente; //Incluye objeto de Cliente
private Coche datosCoche; // Incluye objeto de Coche
private String fechaAlta;
private String fechaBaja;
private int diasAlquiler;
private double costeTotal;
//Creamos el contructor del contrato
Contrato(Cliente datosCliente,Coche datosCoche, String fechaAlta, String fechaBaja, int diasAlquiler, double costeTotal) {
this.fechaAlta = fechaAlta;
this.fechaBaja = fechaBaja;
this.diasAlquiler = diasAlquiler;
this.costeTotal = costeTotal;
this.datosCliente = datosCliente ; //Nuevo objeto
this.datosCoche = datosCoche; // Nuevo objeto
}// Fin constructor contrato
}
//Fin clase contrato
//Creamos la clase principal
class ClasePrincipal
{
public static void main(String[] args) {
Cliente cliente1 = new Cliente("56734569", "Fernando", "Alonso", "Los Laureles, 1", 111111111);
//Creado cliente1
Coche coche1 = new Coche("6595 WIN", "Renault Megane II", 2004, 10000, 5, true, 45);
Contrato contrato1 = new Contrato(cliente1, coche1, "26/11/2004","29/11/2004", 4,180);
// Ahora sacamos por pantalla el contrato
System.out.println("Contrato: "+ contrato1);
} // Fin main()
} // Fin ClasePrincipal
rograma.
Este es el error al ajecutar el codigo:
----jGRASP exec: java practica1.Cliente
java.lang.NoClassDefFoundError: practica1/Cliente
Exception in thread "main"
----jGRASP wedge2: exit code for process is 1.
----jGRASP: operation complete.
----jGRASP exec: java practica1.Cliente
java.lang.NoClassDefFoundError: practica1/Cliente
Exception in thread "main"
----jGRASP wedge2: exit code for process is 1.
----jGRASP: operation complete.