저는 Object Oriented Design을 처음 사용하면서도 여전히 학습 과정에 있습니다. 전철 예약 시스템에 대한 수업을 설계했지만 주 예약 클래스를 모델링하는 방법에 대해서는 잘 모릅니다.기차 예약 시스템 용 클래스 설계
이 내 디자인 모습입니다 :
public class Station {
private int stationID;
private String stationName;
// Getters and Setters
}
public class Train {
private int trainID;
private String trainName;
private Map<Station, Double> trainStationsWithFares;
public Train(int ID, String trainName, Station[] stations) {
// Initialize ID and name and create a hashmap with all stations and
// zero fare initially for all stations.
....
trainStationsWithFares = new HashMap<Station, Double>();
for(Station s : stations) trainStationsWithFares.put(s, new Double(0.0));
}
// Getters and Setters (including methods to add new stations with fares and
// update fares of existing stations
}
public class Passenger {
private String Name;
private int id;
private int age;
private static final enum { Male, Female } gender;
}
public class TicketDetails {
private Train t;
private Station from;
private Station to;
private Passenger passenger;
// Getters and Setters
}
public class TrainTicket {
private int ID;
private TicketDetails ticketDetails;
private Double fare;
public TrainTicket(TicketDetails ticketDetails)
throws InvalidTrainException, InvalidFromStationException,
InvalidToStationException {
...
calculateFare();
}
// Calculates fare based on Train and from and to Stations and taxes, etc.
private void calculateFare() {
this.fare = ...
}
}
// Assuming card payment only for online reservation system for simplicity.
// Design can be modified and enhanced suitably.
public class PaymentDetails {
private String cardNumber;
private String cardExpirationMonth;
private String cardExpirationYear;
private String cardCVV;
// Getters and Setters
}
내 질문 : 점검이처럼 내 예약 클래스보기? 그렇다면이 클래스의 메서드는 TrainTicket
, PaymentDetails
등과 같은 다른 클래스의 개체에 어떻게 액세스합니까?
public abstract class ReservationSystem {
// Purchase train ticket by providing ticket details and payment details.
public abstract TrainTicket purchaseTicket(TicketDetails ticketDetails,
PaymentDetails paymentDetails);
// Cancel existing train ticket by providing ticket reference and payment details
// for cancellation charges.
public abstract boolean cancelTicket(TrainTicket tt, PaymentDetails details);
// Modify existing train ticket by providing existing ticket reference,new ticket
// details and payment details for any additional charge or modify charges.
public abstract TrainTicket modifyTicket(TrainTicket existingTicket,
TicketDetails newTicketDetails, PaymentDetails paymentDetails) {
}
}
아니면이 다음과 같아야가 :
public class ReservationSystem{
private Map<trainId, Train> trains;
private Ticketdetails ticketdetails;
private PaymentDetails paymentDetails;
private TrainTicket tt;
public vector<Train> getTrain(TicketDetails ticketdetails);
public TrainTicket purchaseTicket(TicketDetails ticketDetails,
PaymentDetails paymentDetails);
public boolean cancelTicket(TrainTicket tt, PaymentDetails details);
public TrainTicket modifyTicket(TrainTicket existingTicket,
TicketDetails newTicketDetails, PaymentDetails paymentDetails);
}
내가 방법을 알고 싶어요해야 기본 예약 클래스 접근 방법과 다른 클래스의 멤버.
미리 감사드립니다.
이것은 C++가 아닙니다. – Pubby
은 http://codereview.stackexchange.com/에 더 적합합니다. – Sikorski