This repository was archived by the owner on Jul 23, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
This repository was archived by the owner on Jul 23, 2024. It is now read-only.
Parcial 23/09/2021 ej 3 #11
Copy link
Copy link
Open
Description
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
Labels
No labels