Chapter 8 Contract Programming with Interfaces