// $RCSfile: Reservation.h,v $
#ifndef Reservation_h
#define Reservation_h

#include "Money.h"
#include "Flight.h"
#include "ReservationObserver.h"
#include <vector>

class PricingStrategy;

class Reservation {
public:
  virtual long pennies();
  virtual const char *description();

  virtual Money *getTotal();

  virtual Money *getPreDiscountTotal();

  virtual bool contains(City *c);

  virtual void enterFlight(Flight *f);

  Reservation(PricingStrategy *ps);

  Reservation(const Reservation & r);

  virtual ~Reservation();

  virtual void subscribe(
             ReservationObserver *ro);

  virtual void publish();

private:
  PricingStrategy *pricingStrategy;
  vector<Flight *> *flights;
  vector<ReservationObserver *>
                   *subscribers;
};

#endif
