diff options
| author | Michael <mr.michael.racz@gmail.com> | 2011-06-29 00:15:43 +0200 |
|---|---|---|
| committer | Michael <mr.michael.racz@gmail.com> | 2011-06-29 00:15:43 +0200 |
| commit | 3947b2c9c9148fc402ae876a6ebf1c171ecc6148 (patch) | |
| tree | a6d90534f46df9b21563aecd728e5011a971d1a4 /eiffel-fragen/eiffel-fragen.txt | |
| parent | fa080cdb57f7fed327b0f967545c389f0d87d9ca (diff) | |
| download | foop-3947b2c9c9148fc402ae876a6ebf1c171ecc6148.tar.gz foop-3947b2c9c9148fc402ae876a6ebf1c171ecc6148.tar.bz2 foop-3947b2c9c9148fc402ae876a6ebf1c171ecc6148.zip | |
eiffel fragen 4, 5
Diffstat (limited to 'eiffel-fragen/eiffel-fragen.txt')
| -rw-r--r-- | eiffel-fragen/eiffel-fragen.txt | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/eiffel-fragen/eiffel-fragen.txt b/eiffel-fragen/eiffel-fragen.txt index 62fcef2..7ccb881 100644 --- a/eiffel-fragen/eiffel-fragen.txt +++ b/eiffel-fragen/eiffel-fragen.txt | |||
| @@ -20,6 +20,12 @@ Die Zusicherungen wirken sich zwangsläufig stark auf die Laufzeit aus. Sie sind | |||
| 20 | ----------------------------------------------------------------------------------------- | 20 | ----------------------------------------------------------------------------------------- |
| 21 | - Eiffel erlaubt kovariante Eingangsparametertypen. Unter welchen Bedingungen führt das zu Problemen, und wie äußern sich diese? Können Sie ein Programm schreiben, in dem die Verwendung kovarianter Eingangsparametertypen zu einer Exception führt? | 21 | - Eiffel erlaubt kovariante Eingangsparametertypen. Unter welchen Bedingungen führt das zu Problemen, und wie äußern sich diese? Können Sie ein Programm schreiben, in dem die Verwendung kovarianter Eingangsparametertypen zu einer Exception führt? |
| 22 | 22 | ||
| 23 | 23 | Kovariante Eingangsparametertypen verstoßen gegen die Untertypsbeziehung, sogenannte Catcalls können auftreten: | |
| 24 | |||
| 25 | Kovariante Eingangsparameter werden in der Methode add_authorized_signer verwendet. | ||
| 26 | ACCOUNT.add_authorized_signer erwartet eine PERSON, RETIREEACCOUNT.add_authorized_signer einen RETIREE. Das Codefragment in bank.e Zeile 56 führt zu einem Laufzeitfehler. Ohne Upcast würde ein Compilezeitfehler folgen (z.B. RETIREEACCOUNT.add_authorized_signer( student_instanz ) ), bei einem Upcast zu ACCOUNT erkennt der Compiler den Fehler nicht mehr und es wird eine "Catcall detected"-Exception geworfen. | ||
| 27 | |||
| 24 | ----------------------------------------------------------------------------------------- | 28 | ----------------------------------------------------------------------------------------- |
| 25 | - Vereinfachen kovariante Eingangsparametertypen die Programmierung? Unter welchen Bedingungen ist das so? | 29 | - Vereinfachen kovariante Eingangsparametertypen die Programmierung? Unter welchen Bedingungen ist das so? |
| 30 | |||
| 31 | Kovariante Eingangsparametertypen können bei kovarianten Problemen, wie zum Beispiel bei binären Methoden hilfreich sein. Bei kontravarianten Eingangsparametern muss sich der Entwickler mit Patterns wie "visitor" oder type checks behelfen. Eine equals Methode könnte man in Eiffel mit kovarianten Eingangsparametern realisieren, die Untertypsbeziehung wird, wie bereits erwähnt, aufgelöst. Ist eine Untertypsbeziehung nicht notwendig, stellen kovariante Eingangsparametertypen kein Problem dar. | ||
