Condición previa
En la programación informática, una precondición es una condición o predicado que siempre debe ser cierto justo antes de la ejecución de alguna sección de código o antes de una operación en una especificación formal.
Si se viola una condición previa, el efecto de la sección de código se vuelve indefinido y, por lo tanto, puede o no llevar a cabo su trabajo previsto. Pueden surgir problemas de seguridad debido a condiciones previas incorrectas.
A menudo, las condiciones previas simplemente se incluyen en la documentación de la sección de código afectada. A veces, las condiciones previas se prueban utilizando protecciones o aserciones dentro del propio código, y algunos lenguajes tienen construcciones sintácticas específicas para hacerlo.
Por ejemplo: el factorial solo se define para números enteros mayores o iguales a cero. Entonces, un programa que calcula el factorial de un número de entrada tendría condiciones previas de que el número sea un número entero y que sea mayor o igual a cero.
En programación orientada a objetos
Las condiciones previas en el desarrollo de software orientado a objetos son una parte esencial del diseño por contrato. El diseño por contrato también incluye nociones de condición posterior e invariante de clase.
La condición previa para cualquier rutina define cualquier restricción en el estado del objeto que sea necesaria para una ejecución exitosa. Desde el punto de vista del desarrollador del programa, esto constituye la parte del contrato de la persona que llama de rutina. La persona que llama está entonces obligada a asegurarse de que la condición previa se cumpla antes de llamar a la rutina. La recompensa por el esfuerzo de la persona que llama se expresa en la condición posterior de la rutina llamada.
Ejemplo de Eiffel
La rutina del siguiente ejemplo escrito en Eiffel toma como argumento un número entero que debe ser un valor válido para una hora del día, i. ej., del 0 al 23, inclusive. La condición previa sigue a la palabra clave require
. Especifica que el argumento debe ser mayor o igual a cero y menor o igual a 23. La etiqueta "valid_argument:
" describe esta cláusula de condición previa y sirve para identificarla en caso de una violación de la condición previa en tiempo de ejecución.
set_hour ()a horas: INTEGER) -- Set `hour' to `a_hour ' necesidad valid_argument: 0 . a horas y a horas . 23 do hora := a horas asegurar hour_set: hora = a horas final
Precondiciones y herencia
En presencia de herencia, las rutinas heredadas por las clases descendientes (subclases) lo hacen con sus condiciones previas vigentes. Esto significa que cualquier implementación o redefinición de rutinas heredadas también debe escribirse para cumplir con su contrato heredado. Las condiciones previas se pueden modificar en rutinas redefinidas, pero solo se pueden debilitar. Es decir, la rutina redefinida puede disminuir la obligación del cliente, pero no aumentarla.
Contenido relacionado
FX-87
Datos de paquetes digitales celulares
Andres tridgell