Foros aprenderaprogramar.com

Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: jcampina2 en 30 de Abril 2015, 02:03

Título: BlueJ cómo añadir objetos del api java al object bench banco de objetos
Publicado por: jcampina2 en 30 de Abril 2015, 02:03
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?
Título: Re:Re:Ejemplo SimpleDateFormat y Date pedir fecha por teclado a usuario con Scanner
Publicado por: Ogramar en 30 de Abril 2015, 09:24
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
Título: Re:Re:Ejemplo SimpleDateFormat y Date pedir fecha por teclado a usuario con Scanner
Publicado por: jcampina2 en 01 de Mayo 2015, 01:23
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
Título: Re:Re:Ejemplo SimpleDateFormat y Date pedir fecha por teclado a usuario con Scanner
Publicado por: Ogramar en 01 de Mayo 2015, 07:47
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
Título: Re:Re:Ejemplo SimpleDateFormat y Date pedir fecha por teclado a usuario con Scanner
Publicado por: jcampina2 en 07 de Mayo 2015, 02:10
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
Título: Re:Re:Ejemplo SimpleDateFormat y Date pedir fecha por teclado a usuario con Scanner
Publicado por: Ogramar en 07 de Mayo 2015, 09:12
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

(https://s3.amazonaws.com/learneroo-images/main/codepad.png)

 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