Az objektumorientált programozás, ahogy azt a neve is mondja, objektumok körül forog. Új és új osztályokat hozunk létre, azok ilyen-olyan relációban állnak egymással, egymásba ágyazzuk őket, hatalmas kompozitokat létrehozva. A Liskov féle kicserélhetőségi elv arra hivatott, hogy a kódunk biztonságosan újrahasznosítható legyen. Na de mégis hogy teszi mindezt?