Plans

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() : boolean
TieredPlan
-tierCost : double {readOnly}
-tierLimit : int {readOnly}
+TieredPlan()
+TieredPlan(name : String, prepaid : int, planCost : double, movieCost : double, tierLimit : int, tierCost : double)
#costOfPurchasedMovie() : double
LimitedPlan
-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