MoviePlan-movieCost : double {readOnly}-planCost : double {readOnly}-prepaid : int {readOnly}-name : String {readOnly}-spent : double-numberPurchased : int-punches : int#APPROVED_MOVIE_COSTS : Interval {readOnly}#APPROVED_PLAN_COSTS : Interval {readOnly}+MoviePlan()+MoviePlan(name : String, prepaid : int, planCost : double, movieCost : double)#costOfPurchasedMovie() : double#costToDate() : double+getCategory() : Category {exceptions=IllegalStateException}+getCostOfNextMovie() : String+getCostPerMovie() : double {exceptions=IllegalStateException}+getName() : String+getPlanCost() : double#numberPurchased() : int#numberSeen() : int#remainingPrepaid() : int#spent() : double+toString() : String+use() : booleanTieredPlan-tierCost : double {readOnly}-tierLimit : int {readOnly}+TieredPlan()+TieredPlan(name : String, prepaid : int, planCost : double, movieCost : double, tierLimit : int, tierCost : double)#costOfPurchasedMovie() : doubleLimitedPlan-creditLimit : double {readOnly}+LimitedPlan()+LimitedPlan(name : String, int : prepaid, planCost : double)+LimitedPlan(name : String, prepaid : int, planCost : double, movieCost : double, creditLimit : double)+getCostOfNextMovie() : String+use() : boolean