1

Java で次の状況をモデル化したいのですが、行き詰まっています。

ここに画像の説明を入力

具体的には、顧客、予約、フライト予約、バス予約に関連する部分です。それぞれ独自の予約リスト (フライト ブックまたはバス ブック) を持つ Customer オブジェクトの配列が必要です。

次のテスト コードのようにクラスを呼び出すことを計画していましたが、前述の状況をモデル化する方法がわかりません。

public class Test
       public static void main(String argv[])
              Customer customerList      //this will hold an array of objects of clients
              Client cli1=new Client("smith","jhonson","2341")
              Client cli2=new Client("tor", "jhon","1234")
              customerList.addClient(cli1)
              customerList.addClient(cli2)
              FlightBook fl1=new FlightBook("Canada","12/July")
              BusBook bus1=new BusBook("Montreal","15/July")
              Booking bookList       //holds an array of flight and bus bookings
              bookList.addBook(fl1)
              bookList.addBook(bus1)

どうすれば fl1 と bus1 を最初の顧客 (cli1) に割り当てることができますか? クライアント1がフライトの予約(fl1)とバスの予約(bus1)を行ったことがわかるように。後ですべてのクライアントを繰り返し処理し、それぞれがどの予約を行ったかを確認したいので、これを尋ねます。

ありがとうございます。Java のタイプミスは考慮しないでください。これはメイン プログラムのドラフトに過ぎません。

4

1 に答える 1

0

私はあなたがこれに少し違ったアプローチをすることができると思います

顧客は予約を行うことができ、行った予約への参照を保持する必要があります

class Customer
{
    private String fname;
    private String lname;
    private String address;
    private Set<Schedule> bookings;

    public Booking makeBooking(Schedule booking)
    {
        booking.getTransport().addPassenger(this);

        bookings.add(booking);

        // account.debit(booking.price());
    }

    public void cancelBooking(Schedule booking)
    {
        booking.getTransport().removePassenger(this);

        bookings.remove(booking);

        // account.credit(booking.getPrice())
    }
}

しかし、「予約」とは、実際には顧客が交通手段のスケジュールから行うものです。

class Schedule
{
    private Transport transport;
    private String departsFrom;
    private String arrivesAt;
    private Date departureDate;
    private Date arrivalDate;

    public Transport getTransport()
    {
        return transport;
    }
}

次に、トランスポートは飛行機またはバスのいずれかの方法で乗客を収容する必要があります

abstract class Transport
{
    private int id;

    private Set<Customer> passengers;

    public void addPassenger(Customer passenger)
    {
        if (!isFull())
        {
            passengers.add(passenger);
        }
    }

    public void removePassenger(Customer passenger)
    {
        passengers.remove(passenger);
    }
}

そしてあなたはそれを使うでしょう

public static void main(String[] args)
{
    // take a mode of transport
    Transport plane = new Plane();

    // put it in a schedule
    Schedule schedule = new Schedule(plane, "London", "New York", "2013-01-01", "2013-01-02");

    // let customers make a booking against the schedule
    Customer jo = new Customer("Jo", "Smith");

    Customer al = new Customer("Al", "Bar");

    jo.makeBooking(schedule);

    al.makeBooking(schedule);
}
于 2013-06-10T23:20:10.377 に答える