Este documento describe los conceptos básicos de programación orientada a objetos, incluyendo tipos abstractos de datos, clases, herencia, objetos y métodos estáticos y abstractos. Explica cómo los tipos abstractos de datos especifican funciones, axiomas y precondiciones para colecciones de objetos. También describe cómo las clases implementan los tipos abstractos de datos y cómo la herencia permite a las subclases heredar atributos y métodos de sus superclases.