addition to my 2 question:
DbC rule says:
"...when redeﬁning a routine [in a derivative], you may only replace its
precondition by a weaker one, and its postcondition by a stronger one."
I think preconditions for base class can't be the weakest, because then I cannot define preconditions for derived classes (because they would be stronger, than in a base class).
But how can I define strong preconditions for abstract base class?...