I have trouble designing classes that reflect different business behaviors/rules. An example to explain my case:- a tour has a departure- a departure may be a guaranteed departureif a departure is guaranteed:    - a guaranteed departure may have a date that, starting from that date:    * departure cannot be cancelled by tour agency for any reason    * before that date in can be cancelled    * but it may not have a date indicator, which means departure can't be cancelledelse:   - departure can be cancelled anytime by agency for any reasonWhat's the correct way to design classes in such scenarios?A simple boolean field (cancellable) and simple Date field (cancellableBefore)  in Departure classwhen cancellable == true and cancellableBefore == null => always cancellablewhen cancellable == true and cancellableBefore != null => cancellable if now < cancellableBefore...and so on...or is there a more OO answer to this?
Object oriented design - Designing business rules
object oriented