Autor Tema: Practica java grado ingeniería mecánica diseño orientado a objetos de un Cine  (Leído 21424 veces)

tetri24

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 5
    • Ver Perfil
Buenas. Estoy haciendo un trabajo para la universidad y tengo problemas con la ultima parte del código. Es un trabajo en tres etapas y ya he resuelto dos. Pero con la tercera no doy pie con bola. Si me pudieseis echar una mano os lo agradecería eternamente. Adjunto enlace con lo que tengo resuelto y con los requisitos de la practica. Un saludo y gracias por adelantado. Pongo aquí el tema porque no se exactamente donde colgarlo. Si el moderador lo considera oportuno que lo elimine. Gracias de nuevo.
https://onedrive.live.com/redir?resid=e8b20a8dff60ee73!8624&authkey=!AJEP9nUsiLN0lGo&ithint=folder%2cpdf
« Última modificación: 23 de Abril 2015, 08:26 por Alex Rodríguez »

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2050
    • Ver Perfil
Re:Practica java
« Respuesta #1 en: 20 de Abril 2015, 17:37 »
Hola, en primer lugar pedirte por favor que no repitas el mismo mensaje en distintos puntos del foro o podrías ser bloqueado por los moderadores. Voy a mantener este hilo y borrar el otro abierto con el mismo tema.

Sobre la cuestión que planteas, en el link de descarga el documento pdf indica "sólo lectura" y no permite ser descargado. Por otra parte, indicarte que es necesario que des una descripción más amplia de qué es lo que llevas hecho y el punto concreto donde no sabes cómo avanzar o donde obtienes errores, de otra forma resultará complicado ayudarte.

Saludos

tetri24

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 5
    • Ver Perfil
Re:Practica java
« Respuesta #2 en: 20 de Abril 2015, 17:46 »
Sorry, culpa mia. A ver si asi se puede ver. Un saludo y  disculpa la torpeza.
https://onedrive.live.com/redir?resid=e8b20a8dff60ee73!8624&authkey=!AFrIpF58Vzpd3zU&ithint=folder%2cpdf

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2050
    • Ver Perfil
Re:Practica java
« Respuesta #3 en: 20 de Abril 2015, 17:57 »
Sí, he podido descargarlo con botón derecho y opción descargar (a lo mejor no lo probé así antes ?)

¿Puedes explicar lo que llevas hecho y qué es lo que te está dando problemas o no sabes hacer?

 ::)

tetri24

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 5
    • Ver Perfil
Re:Practica java
« Respuesta #4 en: 20 de Abril 2015, 18:16 »
Si buenas. la practica es una especie de gestor de cine. Compuesto de sesiones, salas, películas, etc. Consta de tres etapas, de las cuales he resuelto dos mas o menos sudando sangre porque soy neófito en la materia. La he subido completa para que podáis ver el código que he hecho, que por otra parte no se si esta muy bien pero que en definitiva compila. La tercera y ultima etapa es la que no se por donde meterle mano. Para mi es un mundo esto. Estoy haciendo ingeniería mecánica y algebra, calculo, termodinámica o cualquier otra materia la abarco sin problema, pero esta asignatura de informática me vuelve loco. Supongo que para alguien con experiencia lo vera como una tontería. Gracias de nuevo.

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2050
    • Ver Perfil
Re:Practica java
« Respuesta #5 en: 21 de Abril 2015, 08:23 »
Hola, en primer lugar te recomiendo este curso donde tienes todos los conceptos básicos  http://aprenderaprogramar.com/index.php?option=com_content&view=category&id=68&Itemid=188

La etapa 3 por lo que veo te va indicando los pasos que tienes que dar. Lo primero sería crear la clase Entrada.

Tendrías que crear la clase teniendo como atributos de clase (campos):

- private Sesion sesion; (porque te dice que cada entrada es para una sesión)

- private double precio; (para guardar el precio)

Y los métodos getter y setter correspondientes...

Vete creando el código y vete pegándolo en el foro siguiendo las instrucciones del enunciado para que lo revisemos, si no sabes hacer algo indica el punto concreto del código o del enunciado que no entiendes para tratar de mirarlo y darte una orientación.

Saludos

tetri24

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 5
    • Ver Perfil
Re:Practica java grado ingeniería mecánica
« Respuesta #6 en: 23 de Abril 2015, 00:54 »
Buenas. He creado la clase entrada con los constructores y los getters y los setters. No he incluido el setPrecio porque me dice que las entradas serán genéricas con precio ya preestablecido.
Luego en la clase cine he creado un ArrayList de entrada, tal y como dice el enunciado.
Me quedo atrancado en los puntos 2, 3 y 4 que no se como implementarlos.
Supongo que se debería de implantar un ciclo for que recorriera todas las sesiones para comprobar que la película existe, y después si existe, implantar un if para que la venta de entradas no exceda la capacidad, pero aun asi no se como hacerlo.
Alguna sugerencia?? Gracias por adelantado.
Adjunto nuevo código con lo que he hecho.

Dan_SB

  • Avanzado
  • ****
  • Mensajes: 273
  • *<DanielsCK>*
    • Ver Perfil
Re:Practica java grado ingeniería mecánica
« Respuesta #7 en: 23 de Abril 2015, 01:47 »
Me descargue el documento para desarrollarlo en casa en mis tiempos libres cuando salga de vacaciones... (Espero que no te molestes :$)

Sal2.... xd
"Luchar por tus sueños y cumplirlos... eso es vivir.."

tetri24

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 5
    • Ver Perfil
Re:Practica java grado ingeniería mecánica
« Respuesta #8 en: 23 de Abril 2015, 07:02 »
Me descargue el documento para desarrollarlo en casa en mis tiempos libres cuando salga de vacaciones... (Espero que no te molestes :$)

Sal2.... xd
Claro que no. Si encuentras algún defecto o algo mejorable avísame. Y si sabes como resolver la tercera etapa me vendría de perlas. Un saludo

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2050
    • Ver Perfil
Re:Practica java grado ingeniería mecánica
« Respuesta #9 en: 23 de Abril 2015, 08:26 »
Hola para el punto 2

Citar
debe permitir la realización de una venta de un número x de entradas para una sesión concreta, es decir, para una fecha y una pelıcula concreta.

En primer lugar se debe comprobar que existe en el cine alguna sesión con dichos datos, es decir, que en la fecha pedida se proyectará la película que se pide. En caso afirmativo, se debe comprobar que el número de entradas pedidas no excede el número de butacas disponibles para esa sesión. Por último, se deberán crear tantos objetos de la clase entrada como cantidad de entradas se desean comprar, para posteriormente almacenarlas y actualizar el número de butacas disponibles de la sesión concreta;


Antes de realizar este punto tienes que preparar varias cosas.


Paso 1) Para poder comparar fechas debes disponer de un método equals en la clase Sesion, que te permita comparar si las fechas de dos sesiones son iguales

Implementación de método equals se explica en http://aprenderaprogramar.com/index.php?option=com_content&view=article&id=666:sobreescribir-metodos-tostring-y-equals-en-java-ejemplos-y-ejercicios-resueltos-comparar-objetos-cu00694b&catid=68:curso-aprender-programacion-java-desde-cero&Itemid=188

Orientación:

Código: [Seleccionar]
    public boolean equals (Object obj) {

        if (obj instanceof Fecha) {

            Fecha tmpFecha = (Fecha) obj;

            if (this.dia==tmpFecha.getDia() && this.mes==tmpFecha.getHora() && this.año==tmpFecha.getAño() &&
            this.hora == tmpFecha.getHora() &&this.minutos==tmpFecha.getMinutos()

            ) { return true; } else { return false; }

        } else { return false; }

    }   
[code]

Ahora para comparar dos Fechas debes hacerlo usando el método equals. Por ejemplo if (fecha1.equals(fecha2)) te devuelve true si ambas son la misma fecha, o false si no lo son.




Para poder comparar Peliculas debes disponer de un método equals en la clase Pelicula

Orientación:

[code]
        public boolean equals (Object obj) {

        if (obj instanceof Pelicula) {

            Pelicula tmpPelicula = (Pelicula) obj;

            if (this.titulo.equals(tmpPelicula.getTitulo()) && this.director.equals(tmpPelicula.getDirector()) &&
            this.año == tmpPelicula.getAño() && this.sinopsis.equals(tmpPelicula.getSinopsis()))
            { return true; } else { return false; }

        } else { return false; }

    }


Tienes que implementar métodos equals en todas las clases epara las que necesites hacer comparaciones de objetos.



Paso 2) Tener en cuenta cómo relacionan las sesiones con el cine. Tal y como lo tienes definido en la clase Sala tienes un ArrayList de Sesion y en la clase Cine tienes un ArrayList de sala


Paso 3) Para implementar lo que pide el punto 2 del paso 3 del enunciado, parece que debe hacerse en un método cuya idea sería esta, quizás haga falta algún parámetro más...:

public void venderEntradasSesion (int numeroEntradasVenta, Sesion sesionDeLaVenta) {

Aquí tienes que recorrer con bucles y hacer comparaciones con equals siguiendo lo que dice el enunciado

}

Intenta desarrollar esto y lo vas pegando...

Saludos

jcampina2

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 12
    • Ver Perfil
Hola buenas compañeros.....también estoy trabajando en estea práctica pero me temo que mis conocimientos no llegan para más....

Cómo seguiría el método.... sé qué no es correcto de antemano


public void venderEntradasSesión (int numeroEntradasVenta,Sesión sesiónDeLaVenta)
    {
        Iterator<Sesión> it = sesiones.iterator();
        while(it.hasNext())
        {Sesión s = it.next();
            if(s.fecha.equals(tmpSesión.getFecha())&&
            s.fecha.equals(tmpSesión.Película))
            if(numeroEntradasVenta < sesión.getButacasDisponibles())
            entrada =new entrada();
           
        }


Salu2
« Última modificación: 07 de Mayo 2015, 01:36 por jcampina2 »

César Krall

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2078
  • No vales por lo que dices, sino por lo que haces
    • Ver Perfil
    • aprenderaprogramar.com
Hola, vender entradas de una sesión lo único que parece necesario es comprobar que el número de entradas disponibles sea mayor o igual que el número de entradas a vender. Si es así, se debe realizar la venta y actualizar el número de entradas disponible (que disminuirá en el número de entradas vendidas). Si no es así, deberá darse un mensaje de advertencia o lanzar una excepción "No hay suficientes entradas disponibles". No entiendo muy bien para qué planteas un iterador de sesiones ¿?

Saludos
Responsable de departamento de producción aprenderaprogramar.com

jcampina2

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 12
    • Ver Perfil
Buenas noches César y demás

La idea es recorrer el arraylist "sesiones" para encontrar la sesión con una fecha determinada y a partir de esa búsqueda comprar las entradas.

César Krall

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2078
  • No vales por lo que dices, sino por lo que haces
    • Ver Perfil
    • aprenderaprogramar.com
Hola en ese caso intenta hacer pruebas primero para ver que te funcione la búsqueda de sesión dentro del arraylist. Para comprobar que te funcione pon un mensaje como ¡Se ha encontrado la sesión buscada!, o ¡No se ha encontrado!

Una vez consigas que te funcione esto, añade la lógica de la venta.

La sesión buscada es sesiónDeLaVenta según entiendo ¿por qué pones tmpSesión?

Código: [Seleccionar]
public void venderEntradasSesión (int numeroEntradasVenta,Sesión sesiónDeLaVenta)
    {
boolean seEncontroSesion = false;
        Iterator<Sesión> it = sesiones.iterator();
        while(it.hasNext()){
Sesión s = it.next();
            if(s.fecha.equals(sesiónDeLaVenta.getFecha())&& s.fecha.equals(sesiónDeLaVenta.Película)) {
seEncontroSesion = true;
System.out.println("¡Encontrada sesión de la venta!");
}

if (seEncontroSesion == true) {

//Aquí iría la lógica de la venta

}
else {
System.out.println("Lo sentimos pero la venta no puede realizarse. Motivo: no se encuentra la sesión buscada");
}
        }

Saludos
Responsable de departamento de producción aprenderaprogramar.com

jcampina2

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 12
    • Ver Perfil
Hola. Después de realizar mil pruebas. y modificando algo el código y colocándolo en la clase sala:

Código: [Seleccionar]
public void venderEntradasSesiónconcreta (int numeroEntradasVenta,Date date, Pelicula film)
    {
boolean seEncontroSesion = false;
Iterator<Sesión> it = sesiones.iterator();
        while(it.hasNext()){
Sesión s = it.next();
            if(s.fecha.equals(date)&& s.pelicula.equals(film)) {
seEncontroSesion = true;

System.out.println("¡Encontrada sesión de la venta!");
}

if (seEncontroSesion == true) {

//Aquí iría la lógica de la venta

}
else {
System.out.println("Lo sentimos pero la venta no puede realizarse. Motivo: no se encuentra la sesión buscada");
}}}


he conseguido que realice la busqueda pero en el terminal me devuelve siempre tres respuestas y no sé pq.  Desde la clase cine no puedo. Que debería cambiar?
código en el principal: (tras crear fecha 3 y pelicula 2 y añadirlas a la sala1 del cine1
sala1.venderEntradasSesiónconcreta(2,fecha3,pelicula2);


terminal:
"Lo sentimos pero la venta no puede realizarse. Motivo: no se encuentra la sesión buscada")
"Lo sentimos pero la venta no puede realizarse. Motivo: no se encuentra la sesión buscada")
¡Encontrada sesión de la venta!

Por otro lado dentro del cine1 sólo tengo una sala. Tb debería especificar de algun modo la sala para que la busqueda sea posible ?

salu2
« Última modificación: 23 de Junio 2015, 18:32 por Ogramar »

César Krall

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2078
  • No vales por lo que dices, sino por lo que haces
    • Ver Perfil
    • aprenderaprogramar.com
Hola, adjunta el código como lo tengas ahora para poder verlo, viendo ese fragmento no acierto a orientarme  :-\

Saludos
Responsable de departamento de producción aprenderaprogramar.com

jcampina2

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 12
    • Ver Perfil
 Hola a todos.Este es el código completo. el enunciado está en un post de otro compañero más arriba.
gracias

Lorenzo31

  • Avanzado
  • ****
  • APR2.COM
  • Mensajes: 381
    • Ver Perfil
No había visto este post, cojo el texto del ejercicio para desarrollarlo y practicar :) con permiso.

Lorenzo31

  • Avanzado
  • ****
  • APR2.COM
  • Mensajes: 381
    • Ver Perfil
Buenas, estoy metiendome con el lio mayusculo de esta practica del Cine, cuando la termine la subiré para recibir comentarios y apuntes, que la verdad ha sido muy liosa realizarla, teniendo en cuenta que llevo con ella 4 días etc...

 Pero queria preguntar, es obligatorio hacerla con la clase Date o puede ser Calendar, lo digo porque la clase Date esta más pasada que la heroina. Se puede pero complica un poco, es obligatorio realizarla con Date? solo eso, gracias.

P.D. Sino supongo que puedo usar un conversor con Calendar y pasarlo a Date con el metodo getTime()

P.D.2 Si se que esto es tan lio no lo empiezo ;)
« Última modificación: 18 de Mayo 2015, 18:28 por Lorenzo31 »

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2662
    • Ver Perfil
Hola Lorenzo, yo creo que podrías hacerlo con una clase Datem cuyo único atributo sea un Calendar.

Como tú dices la clase Date está deprecated y lo que debería usarse es el nuevo api de Java 8. El problema está en el enunciado de la práctica, si lo ves verás que ponen ejemplos orientativos sobre el código donde usan Date. Ese creo que es el motivo por el que se ha usado Date, si los ejemplos hubieran sido con Calendar se hubiera usado Calendar.

El problema está en el enunciado, que en este aspecto no está bien, pero claro, ¿qué le vas a hacer cuando es algo que te viene de arriba? Supón que tienes un jefe que se empeña en que uses Date...  :-\


PARA QUIENES QUIERAN ACCEDER AL CÓDIGO CREADO POR LORENZO31 AQUÍ ESTÁ EL LINK:


https://www.aprenderaprogramar.com/foros/index.php?topic=2622.0

« Última modificación: 23 de Junio 2015, 18:33 por Ogramar »

 

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".