Objektorientierte Programmierung
Inhaltsverzeichnis |
Die folgenden Aufgaben beziehen sich direkt auf die Vorlesung und die dort vorgestellten Beispiele. Es empiehlt sich also das Sktipt durchzuarbeiten, die Beispiele zu erproben und die folgenden Aufgaben anschließend zu bearbeiten.
Für Interessierte: Eine interessante multiparadigmatische Sprache ist Python. Mit Ihrem Scheme-Background wird Ihnen in Python vieles bekannt vorkommen, auch aus dem Gebiet der OOP. Vielleicht haben Sie in den anstehenden Semesterferien einfach etwas Zeit dafür?
Student
Ergänzen Sie in der Definition der Klasse student% eine Methode für die Nachricht hi, sodass Dicky bzw. Deborah nach entsprechender Aufforderung mit "Hi guys, I'm Dick!" bzw. "Hi guys, I'm Deborah!" antwortet.
Interaktions Abschnitt
Hinweis: Vergessen Sie vor der Kommunikation nicht, die Objekte zu reinstanziieren.
<eval id="4b5dae281ca50">;Testbereich</eval>
ID
Unsere beiden Studierenden benötigen noch eine ID, die während ihres gesamten Studiums Gültigkeit besitzt. Bisher gibt es aber weder eine Botschaft, wie etwa take-id, noch eine Methode, wie beispielsweise set-id!, um die entsprechende ID (natürliche Zahl) der Instanzvariablen id zuzuweisen.
Erweitern Sie die Klassendefinition student% dementsprechend.
Interaktions Abschnitt
Hinweis: Vergessen Sie nicht, die Objekte zu reinstanziieren, bevor Sie mit ihnen kommunizieren.
<eval id="4b5dae281d219">;Tesbereich für Student mit ID</eval>
Grußform
Modifizieren Sie die Klassendefinition student% in der beschriebenen Weise und testen Sie Botschaften wie:
> (dolly 'say-your-name) "Lynn, Deborah" > (dolly 'say-your-name 'fnsn) "Deborah Lynn"
Definieren Sie alle öffentlichen Methoden mit case-lambda und ergänzen Sie den Fall der Nichtanwendbarkeit der jeweiligen Methode.
<eval id="4b5dae281d9ec">;Testbereich für Grußformel</eval>
Economist
Schreiben Sie eine Klasse economist% als Kindklasse von student% und fügen Sie die öffentlichen Methoden tell-favourite-subject, zur Beantwortung der Frage nach dem Lieblingsfach, und die Methode I-like!, zur Entgegennahme des Lieblingsfaches, hinzu.
I-like! soll sich der privaten Methode subject-changer!, die den Wert der Instanzvariablen favourite-subject modifiziert, bedienen. Prüfen Sie für je eine Instanz der Klasse economist% und eine der Klasse student%, dass sie die Frage nach dem Lieblingsfach beantwortet bzw. abweist.
Interaktions Abschnitt
Hinweis Stellen sie sicher, dass die Klasse student% korrekt ist und gespeichert wurde.
<eval id="4b5dae281e1fb">;Testbereich für den econiomist%</eval>
Veränderung
Verändern Sie die Klassendefinition von economist% kurzzeitig so, dass economist% eine eigenstänndige, d.h. nicht von student% abgeleitete Klasse ist und erklären Sie die Antwort von pawel bei folgendem Aufruf.
Chemist
Definieren Sie eine Klasse chemist% nach Ihren Vorstellungen. Folgen Sie dem im Skript angegebenen Vererbungsgraph.
<eval id="4b5dae281ed58">;Testbereich chemist%</eval>
Klassenvariable
Was würde geschehen, wenn die Variable enrolled? ebenso wie total eine Klassenvariable wäre? Überprüfen Sie Ihre Vermutung durch Modifikation der Klassendedinition.
<eval id="4b5dae281f52b">;Testbereich</eval>