Design by Contract (DbC) behandelt die Beziehung zwischen einer method und ihrem Aufrufer als formale Vereinbarung, definiert durch drei Dinge: preconditions (was der Aufrufer garantieren muss), postconditions (was die method dafür garantiert), und invariants (was für das object jederzeit wahr bleibt).
Die drei Verpflichtungen
PRECONDITION → caller's duty: inputs/state the method requires to run correctly
POSTCONDITION → method's duty: what it promises on return (if precondition held)
INVARIANT → always-true property of the object, before and after every method
