Uso de objeto creado en otra clase

carlosrj
26 de Diciembre del 2004
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



Isma
26 de Diciembre del 2004
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.

carlosrj
26 de Diciembre del 2004
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.

carlosrj
26 de Diciembre del 2004
Bueno, al ejecutarlo si que me da el siguiente error:
Exception in thread "main"

¿Alguien sabe por qué?

chuidiang
26 de Diciembre del 2004
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.

carlosrj
26 de Diciembre del 2004
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.

carlosrj
26 de Diciembre del 2004
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.