The authors explore the field of dependently-typed object-oriented programming by deriving it from first principles using the principle of duality.