Objektorientierte Programmierung
LVA 185.162, VL 2.0, 2009 W
2. Laborübungsaufgabe
Themen:
Aufwandsabschätzung, Programmiereffizienz, Untertypbeziehungen und dynamisches Binden
Termine:
| Ausgabe: |
21.10.2009 |
| reguläre Abgabe: |
28.10.2009, 13:45 Uhr |
| nachträgliche Abgabe: |
04.11.2009, 13:45 Uhr |
Abgabeverzeichnis:
Gruppe/Aufgabe2
Programmaufruf:
java Test
Grundlage:
Skriptum bis Seite 56, Schwerpunkt auf Abschnitt 2.1
Aufgabe
Welche Aufgabe zu lösen ist:
Erweitern Sie Ihre Lösung der
ersten Aufgabe so, dass das Anmeldesystem in der Praxis verwendbar wird.
Von Anwendern des Systems werden unten aufgezählte Erweiterungen für sinnvoll oder notwendig erachtet.
Diese Aufzählung ist einerseits noch unvollständig, andererseits aber bereits so umfangreich, dass in der vorgegebenen Zeit bei weitem nicht alles umsetzbar ist.
Ihre Aufgabe besteht darin, eine vernünftige Teilmenge der aufgezählten Punkte zu wählen und in Programmcode umzusetzen.
Ein möglichst großer Teil der Ihrer Meinung nach wichtigsten Funktionalität soll dadurch abgedeckt werden.
- Anmeldungen gehen beim Löschen eines Prüfungstermins nicht mehr verloren.
Es soll möglich sein, einen Prüfungstermin (bezüglich Ort und Zeit) zu verschieben oder gänzlich abzusagen, obwohl bereits Studierende dazu angemeldet sind.
Das heißt, es sind auch abgesagte Prüfungstermine zu verwalten, und bei verschobenen Prüfungsterminen ist genau zu erfassen, für welchen Ort und welche Zeit Studierende ursprünglich angemeldet wurden.
- Regeln im Zusammenhang mit Prüfungen sollen besser im System abgebildet werden:
An- und Abmeldungen sollen im Normalfall nur bis eine Woche vor dem Prüfungstermin (oder in einem anderen vom Lehrveranstaltungsleiter bestimmbaren Rahmen) möglich sein.
Mehrere Anmeldungen einer Studentin oder eines Studenten zu Prüfungen für dieselbe Lehrveranstaltung sollen im Normalfall unterbunden werden (außer wenn die Lehrveranstaltung mehrere Prüfungsteile umfasst - dann für jeden Prüfungsteil, wobei Prüfungsteile manchmal in einer bestimmten Reihenfolge zu absolvieren sind).
Ausnahmen sind notwendig, wenn beispielsweise Prüfungstermine verändert oder abgesagt werden, oder ganz allgemein, wenn Lehrveranstaltungsleiter dies in Einzelfällen für gerechtfertigt halten.
- Man kann sich über das System nicht nur zu Prüfungen, sondern auch zu Lehrveranstaltungen, Abgabegesprächen, etc. anmelden.
Die Integration solcher Informationen ist sinnvoll, um beispielsweise sicherstellen zu können, dass alle Studierenden, die sich zu einer Prüfung anmelden, auch die entsprechende Lehrveranstaltung besuchen und ein Abgabegespräch abgelegt (bzw. sich dazu angemeldet) haben.
- Im Zuge der Anmeldung sollen je nach Lehrveranstaltung automatisiert weitere Schritte gesetzt werden können, beispielsweise die Bildung von Gruppen, Zuweisung von TutorInnen, Vergabe von Accounts auf Übungsrechnern, Einrichtung von Diskussionsforen, sowie Verteilung von Skripten und individuellen Aufgabenstellungen.
- Im System werden alle Leistungen der Studierenden (erreichte Punkte bei Übungsaufgaben, Prüfungsantritte und dabei erzielte Beurteilungen, etc.) erfasst.
Diese Informationen sind notwendig um sicherzustellen, dass beispielsweise
- genug Punkte als Voraussetzung für einen Antritt zu einer Prüfung oder einem Abgabegespräch erreicht wurden,
- eine Anmeldung zu einer Prüfung nur erfolgen kann, wenn noch keine Prüfung oder höchstens eine bestimmte Maximalzahl negativer Prüfungen für die entsprechende Lehrveranstaltung gemacht wurde,
- Erinnerungen oder negative Beurteilungen erfolgen, wenn innerhalb vorgegebener Zeiträume keine ausreichenden Leistungen erbracht wurden,
- aufbauende Lehrveranstaltungen nur besucht werden, wenn entsprechende Grundlehrveranstaltungen positiv abgeschlossen wurden,
- eine positiv abgeschlossene Lehrveranstaltung nach einer bestimmten Zeit nicht nocheinmal gemacht werden kann.
- Eine maximale Anzahl an Teilnehmern bei Lehrveranstaltungen, Prüfungen, etc. soll festlegbar sein.
Um mehr Gerechtigkeit bei der Anmeldung zu überlaufenen Lehrveranstaltungen und Prüfungen gewährleisten zu können, sollen Informationen dazu bereits vor einem festgelegten frühesten Anmeldezeitpunkt gegeben werden.
- Lehrveranstaltungen können ganz unterschiedlich strukturiert sein - Vorlesungen, Übungen, etc. - mit einer (schriftlichen oder mündlichen) Prüfung am Ende oder beliebig vielen Beurteilungsschritten unterschiedlicher Art - ganz oder teilweise in Gruppen oder jeder für sich - und so weiter.
Um die Festlegung der genauen Modalitäten zu erleichtern, werden Lehrveranstaltungen in Lehrveranstaltungsarten eingeteilt.
Lehrveranstaltungsarten können unterschiedliche Aspekte betreffen - Art der Anmeldung, Art der Beurteilung, etc. und dementsprechend kann jede Lehrveranstaltung mehrere Lehrveranstaltungsarten haben.
Auch für einzelne Übungsaufgaben, Abgabegespräche, Prüfungen und so weiter sind Arten festlegbar.
Eine Lehrveranstaltungsart kann aus anderen (einfacheren) Lehrveranstanstaltungsarten und Arten ihrer Bestandteile (Übungsaufgaben, etc.) zusammengesetzt werden.
- Trotz oder gerade wegen der umfangreichen personenbezogenen Daten im System muss sichergestellt sein, dass nur jene Benutzer Zugang erhalten, die dazu berechtigt sind.
Studierende dürfen nur Zugang zu den sie selbst betreffenden Daten erhalten, Tutoren nur zu den die eigenen Gruppen betreffenden Daten und Lehrveranstaltungsleiter nur zu den die eigenen Lehrveranstaltungen betreffenden Daten.
Nur wenige Administratoren bekommen Zugang zu allen Daten.
Einige Daten - beispielsweise die angebotenen Lehrveranstaltungen und Prüfungen - sollen unbeschränkt sichtbar sein.
- Daten für die Zugangskontrolle müssen verwaltet werden.
Als Grundlagen dienen Daten aus der Imatrikulation und Inskription von Studierenden, Dienstverträge von Lehrenden, sowie Genehmigungen zur Abhaltung von Lehrveranstaltungen durch die Universitätsverwaltung.
Es muss sichergestellt sein, dass der Zugang zu den Daten erlischt, sobald die Grundlage dafür nicht mehr gegeben ist.
- Lehrende und Studierende sollen von jeder Änderung, die sie betreffen, informiert werden.
- Daten gehen bei Programmbeendigung nicht verloren, und ein Backup-System verhindert Datenverlust bei einem Systemausfall.
Entwickeln Sie nach wie vor nur den Kern eines entsprechenden Programms ohne Benutzerschnittstelle.
Dieser soll keine Eingabe von der Tastatur verlangen oder Ausgabe auf den Bildschirm machen.
Erweitern Sie das Testprogramm (aufrufbar mittels java Test von Gruppe/Aufgabe2 aus) um Überprüfungen der zusätzlichen Funktionalität.
Wie in der ersten Aufgabe sollen alle Tests selbständig ohne Benutzereingaben ablaufen und Testergebnisse in nachvollziehbarer und verständlicher Form am Bildschirm ausgeben.
Wie die Aufgabe zu lösen ist:
Die oben aufgezählten möglichen Erweiterungen sind nur als Anhaltspunkte gedacht.
Sie können auch andere sinnvoll erscheinende Erweiterungen machen und einzelne Punkte nur unvollständig oder anders als angedeutet lösen.
Eine der größten Schwierigkeiten dieser Aufgabe besteht in der richtigen Abschätzung des Umfangs der Erweiterungen, die Sie in einer Woche machen können.
Planen Sie entsprechend Ihren Vorkenntnissen und Fähigkeiten möglichst viele Erweiterungen ein, die Sie in der vorgesehenen Zeit auch zum Abschluss bringen können - das heißt, so viel Sie können, aber auf keinen Fall mehr als Sie können.
Versuchen Sie, sehr rasch zu einer brauchbaren Lösung zu kommen.
Ignorieren Sie Details, die Ihnen als unwichtig erscheinen.
Bedenken Sie, dass Sie alle Teile Ihrer Lösung durch Testfälle überprüfen sollen und planen Sie die Zeit für die Entwicklung der Testfälle ein.
Anders als in den letzten Jahren wird es heuer im Normalfall keine Gelegenheit geben, Teile der Arbeit, die Sie in der vorgegebenen Zeit nicht zu Ende bringen, nachzuholen.
Senden Sie möglichst bald ein grobes Konzept Ihrer geplanten Erweiterungen (am besten mit einer Einteilung, welches Gruppenmitglied was machen soll) an Ihre Tutorin oder Ihren Tutor.
Die TutorInnen werden sich bemühen, rasch hilfreiche Rückmeldungen zu den Konzepten zu geben.
Überschätzen Sie sich nicht.
Erstellen Sie eher ein Konzept, von dem Sie sicher annehmen, dass Sie die Arbeiten zeitlich problemlos schaffen.
Wenn das Konzept Ihrer Tutorin oder Ihrem Tutor nicht reicht, werden Sie ohnehin rasch um eine Abänderung gebeten werden.
Einer der Schwerpunkte dieser Aufgabe ist der Umgang mit Untertypbeziehungen zusammen mit dynamischem Binden.
Planen Sie Ihre Erweiterungen so, dass Untertypbeziehungen verwendet werden.
Setzen Sie gezielt dynamisches Binden ein.
Diese Teile Ihrer Lösung könnten in der nächsten Aufgabe eine wichtige Rolle spielen.
Beachten Sie die allgemeinen Informationen zur Laborübung aus der ersten Aufgabe und stellen Sie Ihre Lösung in das Verzeichnis Gruppe/Aufgabe2.
Von dort aus soll das Testprogramm durch Java Test aufrufbar sein.
Wegen des Umfangs dieser Aufgabe ist es gestattet, Unterverzeichnisse von Gruppe/Aufgabe2 anzulegen und mit Paketen zu arbeiten.
Sie müssen aber keine Pakete verwenden wenn Sie darin keine Vorteile sehen.
Warum die Aufgabe diese Form hat:
Sie sollen möglichst große Freiheit bei der Lösung der Aufgabe haben und selbst die Verantwortung für alles übernehmen, was mit der Entwicklung der Software zu tun hat.
Es gibt niemanden, der Ihnen vorschreibt, wie die Aufgabenstellung genau zu verstehen ist.
Dadurch sollen Sie eine Ahnung davon bekommen, was es bedeutet, selbst für ein Softwareprojekt verantwortlich zu sein.
Diese Aufgabe ist im Vergleich zu allen anderen Aufgaben die bei weitem umfangreichste und stellt damit hohe Anforderungen an jedes einzelne Gruppenmitglied sowie die Zusammenarbeit innerhalb der Gruppe - eine Nagelprobe für das Funktionieren der Gruppe und zum Aufdecken möglicher Schwachstellen in der Organisation der Gruppe.
Untertypbeziehungen sind ein schwieriges, aber für die objektorientierte Programmierung sehr wichtiges Thema.
Nutzen Sie daher die Gelegenheit, bei der Lösung dieser Aufgabe Erfahrungen damit zu gewinnen:
Fehler, die Sie dabei vielleicht noch machen, wirken sich nicht auf Ihre Beurteilung aus.
Auf diese Weise bekommen Sie von den TutorInnen Rückmeldungen und bei Bedarf maßgeschneiderte Hilfe.