El documento describe el diseño por contrato, un paradigma de programación orientada a objetos donde las relaciones entre clases se definen mediante contratos formales. Estos contratos especifican las pre y post-condiciones de los métodos a través de aserciones. Las pre-condiciones definen las condiciones que deben cumplirse para llamar al método, mientras que las post-condiciones establecen las garantías del método una vez ejecutado. El diseño por contrato permite construir programas correctos al asegurar que cada método cumple su espec