Foro de elhacker.net

Programación => Java => Mensaje iniciado por: Glwlwl en 25 Marzo 2015, 12:24 pm



Título: Ejercicio Java cine
Publicado por: Glwlwl en 25 Marzo 2015, 12:24 pm
Buenas estoy intentando resolver un ejercicio de tres partes para la facultad y me he atascado bastante pronto ^^

Debo crear tres clases para simular la venta de entradas de un cine.

Las clases son : Cine, sala, sesión
 
Actualmente estoy intentado hacer la clase cine.

Este es el enunciado
http://gyazo.com/eb886e0a7eb52b7a40169b1b30bacd0a
http://gyazo.com/099845ddfabf07b842826b67024499bc

Y esto es lo que hice hasta ahora

http://gyazo.com/3bff40043b94970b000a518b03835ac3

La verdad no se como continuar, si alguien pudiera darme un ejercicio del estilo corregido, para tener una idea de lo que debo hacer se lo agradecería.
Gracias espero vuestras respuestas. =)

Código
  1. [/public class Cine {
  2.  
  3. private String nombre;
  4. private int[] salas = new int[20];
  5.  
  6. public Cine(String nombre, int[] salas) {
  7. this.nombre = nombre;
  8. this.salas = salas;
  9.  
  10. }
  11.  
  12. public String getNombre() {
  13. return nombre;
  14. }
  15.  
  16. public String getSalas() {
  17. return salas;
  18. }
  19. }]


Título: Re: Ejercicio Java cine
Publicado por: engel lex en 25 Marzo 2015, 12:38 pm
dudo que te den un ejercicio listo, así no funciona normalmente el foro, revisa los temas de java, ve las preguntas, las respuestas, leete un tutorial y ante duda, aquí estamos  ;)

por cierto, tema movido a java


Título: Re: Ejercicio Java cine
Publicado por: Glwlwl en 25 Marzo 2015, 12:51 pm
No pretendía que me dieran la resolución del ejercicio, igual me he expresado mal pero lo que quería era un ejercicio parecido para ver por donde abarcarlo.  

Aun así gracias por la aclaración intentare buscar mas información en el foro.

Mod: procura no hacer doble post, usa el botón modificar para estos casos


Título: Re: Ejercicio Java cine
Publicado por: engel lex en 25 Marzo 2015, 12:55 pm
si, se entendió perfectamente ;)

lo que pasa es que es raro que te den un código así de muestra, no digo que no se pueda, ni que vaya contra las normas... solo que no es común ;)

que tal si haces  preguntas, expones tus dudas y por ahí vas resolviendo


Título: Re: Ejercicio Java cine
Publicado por: Usuario Invitado en 25 Marzo 2015, 15:21 pm
Podría darte todo el código, pero no será bueno para ti. El objetivo de los ejercicios es que trates de no pedir ayuda hasta que realmente te hayas estancado. Así es como se hace un buen programador, en base a trabajo duro. Y mira que el curso de Programación II, donde se supone que has pasado Métodos algorítmicos I, Métodos algorítmicos II y Programación I, y quizás Análisis de algoritmos. Es decir, en éste punto, no debería ser problema resolver el ejercicio.

Como soy buen amigo (xD), te dejaré algunas clases:

Código
  1. import java.util.List;
  2. import java.util.ArrayList;
  3.  
  4. public class Session {
  5.    private Byte id;
  6.    private List<String> schedules;
  7.    private SessionSeats sessionSeats;
  8.  
  9.    public Session() {
  10.        schedules = new ArrayList<>();
  11.    }
  12.  
  13.    public Session(Byte id, List<String> schedules., SessionSeat sessionSeats) {
  14.        this.id = id;
  15.        this.schedules = schedules;
  16.        this.sessionSeats = sessionSeats;
  17.    }
  18.  
  19.    public Byte getid() {
  20.        return id;
  21.    }
  22.  
  23.    public void setid(Byte id) {
  24.        this.id = id;
  25.    }
  26.  
  27.    public List<String> getSchedules() {
  28.        return schedules;
  29.    }
  30.  
  31.    public void setSchedules(List<String> schedules) {
  32.        this.schedules = schedules;
  33.    }
  34.  
  35.    public SessionSeats getSessionSeats() {
  36.        return sessionSeats;
  37.    }
  38.  
  39.    public void setSessionSeats(SessionSeats sessionSeats) {
  40.        this.sessionSeats;
  41.    }
  42.  
  43.    public void addSchedule(String schedule) {
  44.        schedules.add(schedule);
  45.    }
  46.  
  47.    public String removeSchedule(String schedule) {
  48.        shedules.remove(schedule);
  49.        return schedule;
  50.    }
  51.  
  52. }

Código
  1. public class SessionSeats {
  2.    private Character[][] seats;
  3.  
  4.    public SessionSeats(Character[][] seats) {
  5.        this.seats = seats;
  6.        if(seats[0] == null)
  7.            fillSeatsByDefault();
  8.    }
  9.  
  10.    public Character[][] getSeats() {
  11.        return seats;
  12.    }
  13.  
  14.    public void showSeats() {
  15.        for(short row=0; row<seats.length; row++) {
  16.            for(short col=0; col<seats[row].length; col++) {
  17.                System.out.println(seats[row][col]);
  18.            }
  19.        }
  20.    }
  21.  
  22.    private void fillSeatsByDefault() {
  23.        for(short row=0; row<seats.length; row++) {
  24.            for(short col=0; col<seats[row].length; col++) {
  25.                seats[row][col] = 'O';
  26.            }
  27.        }
  28.    }
  29.  
  30.    private void reserveSeat(Integer row, Integer column) {
  31.        seats[row][column] = 'X';
  32.    }
  33.  
  34. }

Código
  1. import java.util.List;
  2. import java.util.ArrayList;
  3.  
  4. public class Room {
  5.    private Byte id;
  6.    private List<Session> sessions;
  7.  
  8.    public Room() {
  9.        sessions = new ArrayList<>();
  10.    }
  11.  
  12.    public Room(Byte id, List<Session> sessions) {
  13.        this.id = id;
  14.        this.sessions = sessions;
  15.    }
  16.  
  17.    public Byte getid() {
  18.        return id;
  19.    }
  20.  
  21.    public void setid(Byte id) {
  22.        this.id = id;
  23.    }
  24.  
  25.    public List<Session> getSessions() {
  26.        return sessions;
  27.    }
  28.  
  29.    public void setSessions(List<Session> sessions) {
  30.        this.sessions = sessions;
  31.    }
  32.  
  33.    public void addSession(Session session) {
  34.        sessions.add(session);
  35.    }
  36.  
  37.    public Session removeSession(Session session) {
  38.        sessions.remove(session);
  39.        return session;
  40.    }
  41.  
  42. }

Código
  1. public class MovieTheater {
  2.    private String name;
  3.    private List<Room> rooms;
  4.    private final TicketSeller ticketSeller;
  5.  
  6.    public MovieTheater(String name, List<Room> rooms) {
  7.        this.name = name;
  8.        this.rooms = rooms;
  9.        ticketSeller = new TicketSeller(rooms);
  10.    }
  11.  
  12.    public Ticket buyTicket() {
  13.        ticketSeller.buyTicket();
  14.    }
  15.  
  16.    // tus otros metodos aquí...
  17. }

Código
  1. public class Ticket {
  2.    private String owner;
  3.    private Session sessionId;
  4.    private String schedule;
  5.    private Integer seat[];
  6.  
  7.    public Ticket() {
  8.        seat = new Integer[2];
  9.    }
  10.  
  11.    public Ticket(String owner, Session session, String schedule, Integer[] seat) {
  12.        this.owner = owner;
  13.        this.session = session;
  14.        this.schedule = schedule;
  15.        this.seat = seat;
  16.    }
  17.  
  18.    public String getOwner() {
  19.        return owner;
  20.    }
  21.  
  22.    public void setOwner(String owner) {
  23.        this.owner = owner;
  24.    }
  25.  
  26.    public Session getSession() {
  27.        return sessionId;
  28.    }
  29.  
  30.    public void setSessionId(Session session) {
  31.        this.session = session;
  32.    }
  33.  
  34.    public String getSchedule() {
  35.        return schedule;
  36.    }
  37.  
  38.    public void setSchedule(String schedule) {
  39.        this.schedule = schedule;
  40.    }
  41.  
  42.    public Integer[] getSeat() {
  43.        return seat;
  44.    }
  45.  
  46.    public void setSeat(Integer[] seat) {
  47.        this.seat = seat;
  48.    }
  49.  
  50. }

Código
  1. public class SessionUtils {
  2.  
  3.    private void showSchedules(List<Room> rooms) {
  4.        for(Room room : rooms) {
  5.            for(Session session : room.getSessions()) {
  6.                for(String schedule : session.getSchedules())
  7.                    System.out.println(schedule);
  8.            }
  9.        }
  10.    }
  11.  
  12.    private Byte getSessionId(List<Room> rooms, String choosedSchedule) throws RuntimeException {
  13.        Byte id = -1;
  14.        for(Room room : rooms) {
  15.            for(Session session : room.getSessions()) {
  16.                for(String schedule : session.getSchedules()) {
  17.                    if(schedule.equals(choosedSchedule))
  18.                        id = session.getSessionId();
  19.                }
  20.            }
  21.        }
  22.        if(id == -1)
  23.            throw new RuntimeException("No se ha encontrado una sesión para ese horario");
  24.        return id;
  25.    }
  26.  
  27.    private Session getSessionById(List<Room> rooms, Byte id) throws RuntimeException {
  28.        Session target = null;
  29.        for(Room room : rooms) {
  30.            for(Session session : room.getSessions()) {
  31.                if(session.getSessionId().equals(id))
  32.                    target = session;
  33.            }
  34.        }
  35.        if(target == null)
  36.            new RuntimeException("No se ha encontrado una sesión con ese ID");
  37.        return target;
  38.    }
  39. }

Código
  1. public class TicketSeller {
  2.    private final List<Room> rooms;
  3.  
  4.    public TicketSeller(List<Room> rooms) {
  5.        this.rooms = rooms;
  6.    }
  7.  
  8.    public Ticket buyTicket() {
  9.        System.out.println("¿Cuál es su nombre?");
  10.        String owner = new Scanner(System.in).nextLine();
  11.        System.out.println("¿En que horario desea ver la película?");
  12.        SessionUtils.showSchedules(rooms);
  13.        String schedule = new Scanner(System.in).readLine();
  14.        Byte sessionId = SessionUtils.getSessionIdBySchedule(rooms, schedule);
  15.        Session session = SessionUtils.getSessionById(rooms, sessionId);
  16.        SessionSeats seats = session.getSessionSeats();
  17.        seats.showSeats(); // muestra los asientos disponibles
  18.        System.out.println("¿Qué asiento desea? Ingresar las coordenadas así: X-Y");
  19.        String[] coordinates = new Scanner(System.in).readLine().split("-");
  20.        Integer row = coordinates[0];
  21.        Integer column = coordinates[1];
  22.        seats.reserveSeat(row, column)
  23.        Integer[] seat = new Integer[] { row, column};
  24.        Ticket ownerTicket = new Ticket(owner, session, schedule, seat);
  25.  
  26.        return owerTicket;
  27.    }
  28. }


Ya tienes por lo menos el 50%.


Título: Re: Ejercicio Java cine
Publicado por: Glwlwl en 25 Marzo 2015, 23:56 pm
Te lo agradezco enormemente, y de verdad mi objetivo nunca fue este, me gusta aprender el problemas es que con el trabajo y las asignaturas del primer quatri decidí dejar de lado programación 1 para asegurarme de aprobar el resto(por lo que no tengo las bases) y cuando intente cancelar la matricula de la asignatura del segundo quatri (programación 2) era demasiado tarde y no me puedo permitir perder el dinero por catear la asignatura. Te agradezco muchísimo el aporte, me esta ayudando mucho.