Design by Contract
-
Hallo Leute.
Gibt es fuer C++ irgendwelche verwendbaren Design by Contract Libraries - also Systeme die vorallem Preconditions, Postconditions und Invarianten unterstuetzen? Idealerweise nur in der Debug Version.
Bin fuer alle Links dankbar.
-
Hem, bringt C++ nicht sowas schon von Haus aus mit? const und assert fällt mir da ein. Was soll denn so eine Library können?
-
Artchi schrieb:
Hem, bringt C++ nicht sowas schon von Haus aus mit? const und assert fällt mir da ein. Was soll denn so eine Library können?
Was const damit zu tun hat, ka.
assert ist eine minimal Loesung.
Ich brauche zB soetwas:
template <class InputIterator, class OutputIterator> OutputIterator copy(InputIterator first, InputIterator last, OutputIterator result) { precondition( first<=last && //valid range (result<first || last>result) //result not within [first,last) range //theoretisch fehlt hier die ueberpruefung ob result genug Speicher hat um die ganzen Elemente auch aufzunehmen ) while(first!=last) { *result = *first; ++result; ++first; } return result; postcondition ( equal(first, last, result) &&//Zugriff auf die originalen Werte return == result + (last-first) ) }
-
Uhm, vielleicht kannst du mit http://www.gnu.org/software/nana/nana.html etwas anfangen. Ansonsten werden die Design by Contract (TM) Ideen in C u. C++ IMHO mit dem Präprozessor irgendwie "implementiert". Eine so einfache Handhabung wie in Eiffel hab ich für C++ noch nicht gesehen. Die Links sind als Ideengeber gedacht.
EDIT (Links):
http://adtmag.com/joop/article.aspx?id=4593
http://www.math.uni-wuppertal.de/~buhl/teach/exercises/PbC07/programmingbycontract.pdf
http://www.ddj.com/cpp/184405997
http://www.lifeglass.org/PVAMU/COMP3113/ProgrammingByContractExampleCpp.pdf
http://seal.ifi.unizh.ch/fileadmin/User_Filemount/Vorlesungs_Folien/Seminar_SE/SS06/kandrical_design_contract.pdf
http://www.aspectc.org/ IMHO könnte man AOP dazu verwenden um Verträge zu implementieren, deshalb der Link zu einer AOP Lib.Und in der Zeitschrift "Proceedings of the Technology of Object-Oriented Languages and Systems" sollte der Artikel "Emulating Design by Contract in C++" zu finden sein.
-
-
Hello! Very good job(this site)! Thank you man.