Autor Tema: BlueJ cómo añadir objetos del api java al object bench banco de objetos  (Leído 11602 veces)

jcampina2

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 12
    • Ver Perfil
Hola.

Por lo que leo creo q estoy trabajando en el mismo proyecto y mi duda respecto a la introducción de la fecha es cuando creas un objeto en el banco de pruebas de bluej y tienes que introducir ese parametro de ese objeto del tipo date con estructura int,int,int,int,int,int (año,mes,dia,hora,min,seg)...he probado mil formas...con , con/, con -.... como he de introducirlo?
« Última modificación: 07 de Mayo 2015, 09:16 por Ogramar »

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2662
    • Ver Perfil
Hola, para crear objetos en BlueJ (además de con código) se hace como se explica en la entrega CU00620B y siguientes del curso http://aprenderaprogramar.com/index.php?option=com_content&view=category&id=68&Itemid=188

Hay que pulsar sobre la clase, botón derecho, elegir new nombre (int 1, int2...)

Una vez elegido te aparece una ventana con el nombre del objeto a crear y tienes unas cajitas donde tienes que introducir los datos (los números en este caso, si fueran String hay que escribirlo entre comillas)

Luego pulsas aceptar y el objeto te aparecerá en el banco de objetos de BlueJ

Salu2

jcampina2

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 12
    • Ver Perfil
Creo que no me he expresado bien.  Al crear un objeto de la clase Sesión  con constructor Sesión(Date fecha, Pelicula pelicula,int butacas,int butacasDisponobles) el primer campo a rellenar en el cajetín  es el Date fecha.. el cual no soy capaz de rellenar sin obtener error.

Además al compilar mi clase principal obtengo un aviso : Date (int,int,int,int,int,int) deprecated. y supongo que esos seis int son los que he de rellenar pero no lo consigo
salu2

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2662
    • Ver Perfil
Hola, el mensaje deprecated se debe a que en Java 8 se ha definido un nuevo sistema de tiempos y fechas (paquete java.time). Dentro de este paquete la clase equivalente a Date sería Instant. Para usar este api debes consultar la documentación oficial. Hay un resumen en https://docs.oracle.com/javase/8/docs/api/java/time/package-summary.html

El error que te aparece puede deberse a varios motivos, para revisarlo tendrías que adjuntar el código. En https://www.aprenderaprogramar.com/foros/index.php?topic=1460.0 se explica cómo.

Salu2

jcampina2

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 12
    • Ver Perfil
Buenas...Sigo sin entender bien pq no consigo rellenar correctamente en el banco de pruebas el campo de Date. Ya por cabezonería >:(    Adjunto el código del proyecto en el que lo manejo. A ver si así
Salu2 y gracias

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2662
    • Ver Perfil
Hola, he visto el código que has pasado. En la clase Sesion tienes lo siguiente:

Código: [Seleccionar]
import java.util.Date;
/**
 * Sesiones .
 * Almacena fecha,pelicula,nºbutacas y butacas disponibles
 * @author (Jorge Campina)
 * @version ( version 2.3)
 */
public class Sesión
{
    // instance variables
    public Date fecha;
    private Pelicula pelicula;
    private int butacas;
    private int butacasDisponibles;
    public Sala sala;

    /**
     * Constructor for objects of class Sesión
     * no introducimos nºbutacas porque viene dado por la sala
     */
    public Sesión( Date fecha,Pelicula pelicula,int butacasDisponibles,Sala sala)
    {
        // initialise instance variables
        this.fecha = fecha;
        this.pelicula = pelicula;
       
        this.butacasDisponibles = butacasDisponibles = sala.butacas;
        this.sala = sala;
    }
   

    /**
     * An example of a method - replace this comment with your own
     *
     * @param  y   a sample parameter for a method
     * @return     
     */
     public void actualizarButacasVendidas( int vendidas )
    {
       butacasDisponibles = sala.butacas - vendidas;
       
       System.out.println("butacas vendidas :"  + vendidas);
       System.out.println("butacas disponibles : " + butacasDisponibles );
    }
    public int getButacas()
    { return butacas;

    }
    public Date getFecha()
    { return fecha;
    }
    public void mostrarInfoSesion()
    {
        System.out.println( "Fecha" + fecha );
        System.out.println( "pelicula :" + pelicula.titulo );
        System.out.println( "capacidad :" + sala.butacas );
        System.out.println( "libres :" + butacasDisponibles );
        System.out.println( "sala proyección :sala  " + sala.id );
    }
    public String getDetails()
    {
        return fecha + "/" + pelicula + "/" + butacas + "/" + butacasDisponibles ;

     } }

Esto significa que entre los atributos de la clase Sesion tienes un objeto Date, un objeto Pelicula, un tipo primitivo entero butacas, un tipo primitivo entero butacasDisponibles y un objeto Sala.

Para poder crear un objeto Sesion con el banco de pruebas de BlueJ necesitarías primero crear los objetos que son los atributos de Sesion, es decir, necesitarías crear un Date, un Pelicula y un Sala. Luego tendrías que crear el objeto Sesion indicándole los nombres de los objetos previamente creados e indicándole el valor de los enteros para los tipos primitivos (más o menos lo que se explica en http://aprenderaprogramar.com/index.php?option=com_content&view=article&id=496:como-crear-constructores-con-o-sin-parametros-inicializar-objetos-java-ejercicio-ejemplo-resuelto-cu00639b&catid=68:curso-aprender-programacion-java-desde-cero&Itemid=188)

Problema: mientras que Pelicula y Sala son clases que has definido tú y para las que puedes crear objetos en el banco de pruebas de BlueJ, Date no es una clase que hayas creado tú, sino una clase del api de Java.

Para poder crear el objeto en el banco de pruebas de BlueJ tendrías que ir al menú View, elegir show CodePad


 y escribir algo similar a lo siguiente:

import java.util.Date;
new Date(82,4,1,10,30,15)

Una vez pulsas esto te aparece debajo <object reference> (Date) y un icono muy pequeño a la izquierda. Si arrastras ese icono al banco de pruebas te indica "Enter the name for the new object on the object bench", dejas date1 y ya tienes el objeto en el banco de objetos. Puedes manipularlo usando sus métodos si quieres.

Luego creas objetos Pelicula y Sala en el banco de pruebas.

Luego creas un objeto Sesión y donde te pide date le pones el nombre del objeto date creado, es decir, date1, así como los nombres de los otros objetos creados y los valores para los números enteros.

Todo lo anterior es un poco engorroso, es mucho más fácil hacerlo mediante código tal y como lo tienes hecho en la clase Principal.



Nota: si ya lo tienes con date quizás te interese dejarlo, pero en lugar de usar Date se recomienda usar la clase Instant del nuevo api java time para java 8, ver https://docs.oracle.com/javase/8/docs/api/java/time/package-summary.html

Salu2

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".