Domanda

In Eiffel si dice che dovremmo "allentare le pre-condizioni e serrando le post-condizioni", ma non sono sicuro che cosa questo significa. Come funziona questo beneficio / è beneficiato di sub-classing?

Grazie

È stato utile?

Soluzione

In Design by Contract, si specifica una serie di pre-condizioni e una serie di post-condizioni per una funzione. Per esempio, diciamo che si stesse scrivendo una funzione di allocazione di memoria. Si richiede che accetta un numero intero positivo come input, e produce un puntatore uniformemente allineata come risultato.

Allentando i mezzi precondizione che quando si crea una classe derivata, si deve accettare qualsiasi input che la classe base potrebbe accettare, ma potrebbe accettare altri ingressi pure. Utilizzando l'esempio precedente, una classe derivata potrebbe essere scritto ad accettare un numero intero non negativo, invece di numeri interi positivi solo.

Sul lato conseguenza, è necessario assicurarsi che il risultato di una funzione derivata soddisfa tutti i requisiti posti sulla funzione di base - ma è possibile anche aggiungere ulteriori restrizioni. Ad esempio, una versione derivata della funzione sopra potrebbe decidere di solo produrre risultati che erano multipli di 8. Ogni multiplo di 8 è chiaramente anche, così soddisfa ancora il requisito della funzione di base, ma ha imposto una restrizione supplementare pure.

Il contrario non sarebbe il lavoro: se la funzione di classe di base permette di numeri interi non negativi come input, allora la classe derivata deve continuare ad accettare tutti i numeri interi non negativi come input. Il tentativo di cambiare per accettare solo numeri interi positivi (cioè, rifiuta 0, che è consentito dalla classe base) non sarebbe stato permesso -. Classe derivata non può più essere sostituito per la versione base in tutte le circostanze

Allo stesso modo con risultati:. Se la classe base imposto un "multiplo di 8" requisito su un risultato, la versione derivata deve anche garantire che tutti i risultati sono multipli di 8. Tornando 2 o 4 violino questa esigenza

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top