Skip to content
This repository was archived by the owner on Jul 23, 2024. It is now read-only.
This repository was archived by the owner on Jul 23, 2024. It is now read-only.

Parcial 23/09/2021 ej 3 #11

@lulostupnik

Description

@lulostupnik

Hola Franco, como estas? Queria saber si esta solucion es correcta, ya que use un ENUM mas, y me quedo medio diferente a la subida. Hay un par de cosas que capaz se podrian incluir en los errores comunes que pusiste, pero no estoy totalmente seguro si esta bien o mal dado a la diferente implementacion. Gracias

package ej3;
import ej2.Person;

public enum AeroChair {
    AMANCAY(), HORSETOOTH(){
        @Override
        public boolean canRide(PersonType p){
            return true;
        }
    }, SIXFOLD();

    public boolean canRide(PersonType p){
        return p.equals(PersonType.SKI);
    }
}
package ej3;

public enum PersonType {
    SKI(){
        @Override
        public String toString(){
            return "Ski";
        }
    }, VISITOR(){
        @Override
        public String toString(){
            return "Visitor";
        }
    };
}

package ej3;

public class Ticket {
    private PersonType p;
    private int cantTrips;
    private int ticketNum;
    public Ticket(PersonType p, int cantTrips, int ticketNum){
        this.p = p;
        this.cantTrips = cantTrips;
        this.ticketNum=ticketNum;
    }

    public void ride(){
        cantTrips--;
    }
    public boolean ridesLeft(){
        return cantTrips > 0;
    }
    public PersonType getPersonType(){
        return p;
    }

    @Override
    public String toString(){
        return "%s ticket %d has %d rides left".formatted(p.toString(), ticketNum, cantTrips);
    }
}

package ej3;

public class TicketOffice {
    private static int lastId = 1001;
    public void ride(Ticket t, AeroChair chairType){
        if(!t.ridesLeft()){
            throw new IllegalArgumentException("No more rides left for ticket");
        }
        if(!chairType.canRide(t.getPersonType())){
            throw new IllegalArgumentException("Invalid chairlift for ticket");
        }
        t.ride();
    }
    public Ticket buyVisitorTicket(int cantTrips){
        return new Ticket(PersonType.VISITOR, cantTrips, TicketOffice.lastId++);
    }
    public Ticket buySkiTicket(int cantTrips){
        return new Ticket(PersonType.SKI, cantTrips, TicketOffice.lastId++);
    }
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions