Objektorientierte Programmierung
LVA 185.162, VL 2.0, 2010 W

1. Laborübungsaufgabe

Themen:

Datenabstraktion, Klassenzusammenhalt, Objekt-Kopplung

Termine:

Ausgabe: 13.10.2010
reguläre Abgabe: 20.10.2010, 13:45 Uhr
nachträgliche Abgabe: 27.10.2010, 13:45 Uhr

Abgabeverzeichnis:

Gruppe/Aufgabe1

Programmaufruf:

java Test

Grundlage:

Erstes Kapitel des Skriptums

Aufgabe

Welche Aufgabe zu lösen ist:

Schreiben Sie in Java den Kern eines Programms zur Verwaltung des Lagers eines Computer-Händlers. Folgende Vorgänge sollen unterstützt werden:

Schreiben Sie nur den Kern eines entsprechenden Programms ohne Benutzerschnittstelle sowie ein Testprogramm. Der Kern soll die oben beschriebene Funktionalität aufweisen, aber keinerlei Eingabe von der Tastatur oder Ausgabe auf den Bildschirm (auch nicht von/auf eine Datei) machen. Alle benötigten bzw. erzeugten Daten müssen über Parameter und Rückgabewerte von Methoden übergeben werden. Entsprechende Typen der Daten sollen Sie selbst finden. Die Daten der Lagerverwaltung können bei Programmbeendigung verloren gehen, eine permanente Speicherung ist also nicht nötig.

Das Testprogramm soll mittels java Test von Gruppe/Aufgabe1 aus aufrufbar sein und die oben beschriebene Funktionalität, vor allem auch Grenzfälle überprüfen. Die Tests sollen selbständig ohne Benutzerinteraktion ablaufen, sodass Aufrufer keine Testfälle auswählen oder Testdaten eintippen müssen. Alle Testdaten sollen im Testprogramm vorgegeben sein. Testergebnisse sollen (in nachvollziehbarer und verständlicher Form) am Bildschirm ausgegeben werden.

Wie die Aufgabe zu lösen ist:

Ihr Programmcode soll wiederverwendbar sein, da die nächste Aufgabe voraussichtlich auf Teilen davon aufbaut. Lesen Sie das erste Kapitel des Skriptums und achten Sie darauf, wie Sie gute Qualität von Software und gute Wiederverwendbarkeit erreichen können. Achten Sie besonders auf Datenabstraktion: Alles, was kaum trennbar miteinander verbunden ist, soll in einem Objekt gekapselt sein, leicht voneinander trennbare Einheiten sollen zu verschiedenen Objekten gehören. Auf Daten soll nur über dafür vorgesehene Methoden zugegriffen werden. Unnötige Zugriffe und unnötige Zugreifbarkeit von Daten und Methoden sind zu vermeiden. Achten Sie auf hohen Klassenzusammenhalt und schwache Objektkopplung. Die Lösung soll möglichst einfach sein und keine unnötige Funktionalität haben.

Diese Aufgabe hilft den TutorInnen bei der Einschätzung Ihrer Vorkenntnisse sowie der Zusammenarbeit in der Gruppe. Sorgen Sie dafür, dass Sie diese Aufgabe so gut Sie können in der Gruppe lösen (ohne Abschreiben) und jedes Gruppenmitglied etwa in gleichem Maße mitarbeitet. Sonst könnten Sie durch eine Fehleinstufung wertvolle Zeit verlieren. Scheuen Sie sich nicht, Ihre Tutorin oder Ihren Tutor um Hilfe zu bitten, wenn Sie bei der Lösung der Aufgabe Probleme haben oder keine brauchbare Zusammenarbeit in der Gruppe zustande kommt. Die TutorInnen sind dazu da, Ihnen bei inhaltlichen Problemen und gruppeninternen Konflikten zur Seite zu stehen und Sie möglichst erfolgreich durch die Laborübung zu schleusen.

Warum die Aufgabe diese Form hat:

Der Umfang ist so gewählt, dass die Programmierung selbst nicht zu viel Zeit in Anspruch nimmt und dadurch Zeit für die interne Organisation der Gruppe (also zum Kennenlernen, Finden einer passenden Position in der Gruppe und Aufbau geeigneter Kommunikationsmöglichkeiten) und inhaltliche Diskussionen bleibt. Auf eine genaue Spezifikation der Aufgabenstellung wird aus folgenden Gründen bewusst verzichtet:

Allgemeine Informationen zur Laborübung

Folgende Informationen betreffen auch alle weiteren Aufgabenstellungen.

Was bei der Lösung der Aufgaben zu beachten ist:

Die Aufgabenstellungen lassen Ihnen viel Freiheit, stellen zum Teil aber auch klare Anforderungen. Nützen Sie die Freiheit zur Vereinfachung der Lösungen, vergewissern Sie sich aber, dass alle Anforderungen erfüllt sind.

Unter Wie die Aufgabe zu lösen ist: finden Sie Hinweise darauf, wie Sie die Lösung vereinfachen können, welche Fallen Sie umgehen sollten und welche Aspekte für die Beurteilung besonders wichtig sind. Bei der ersten Aufgabe kommt es also besonders auf Datenabstraktion, Klassenzusammenhalt, Objektkopplung und Einfachheit der Lösung an. Ab der vierten Aufgabe können Ihnen bei solchen Hinweisen beispielsweise auch für unnötig komplizierte oder umfangreiche Lösungen Punkte abgezogen werden. Unterschiedliche Aufgaben haben unterschiedliche Schwerpunkte. Jede Aufgabe wird daher nach einem anderen Schema beurteilt.

Ein häufiger Fehler besteht darin, eine Aufgabe nach Gefühl zu lösen, ohne zu verstehen, worauf es ankommt. Jede Aufgabe bezieht sich auf Themen, die in der Aufgabenstellung genannt werden und meist kurz zuvor in der Vorlesung behandelt wurden. Versuchen Sie, eine Beziehung zwischen Aufgabenstellung und Vorlesungsstoff herzustellen. Achten Sie darauf, Fachbegriffe (wie Datenabstraktion, Klassenzusammenhalt und Objektkopplung) nicht nur umgangssprachlich zu interpretieren, sondern verwenden Sie diese Begriffe so wie in Vorlesung und Skriptum beschrieben.

Vermeiden Sie umgekehrt aber auch, alle in der Vorlesung behandelten Techniken unbedingt in Ihrer Lösung unterbringen zu wollen. Verwenden Sie nur die Lösungsstrategien, die Ihnen sinnvoll erscheinen. Für die meisten Aufgaben sind viele verschiedene Lösungsansätze zielführend, und bei der Beurteilung wird kein guter Lösungsansatz einem anderen, gleich guten bevorzugt werden.

Versuchen Sie nicht, Teile der Aufgabenstellung durch Tricks oder Spitzfindigkeiten zu umgehen. Beispielsweise gibt es immer wieder Lösungen, in denen die Test-Klasse nur Tests erfolgreich ausgibt statt tatsächlich Tests durchzuführen. Solche Versuche werden durch händische Beurteilungen rasch erkannt. Spätere Aufgaben enthalten oft Schwierigkeiten, die mit Allgemeinwissen alleine oder über aufgabenbezogene Internet-Recherchen kaum zu lösen sind. Gerade in solchen Fällen kann die Umgehung der Schwierigkeiten durch Tricks zu starken Punkteabzügen führen. Hinweise zu einer guten Lösung lassen sich häufig im Skriptum oder auf den Vorlesungsfolien finden.

Was im Hinblick auf Abgaben zu beachten ist:

Schreiben Sie Ihre Lösung in das am Beginn der Aufgabenstellung genannte Verzeichnis (Gruppe/Aufgabe1 für die erste Aufgabe) auf der g0. Das Programm soll von diesem Verzeichnis aus durch den ebenfalls oben genannten Befehl (in der Regel java Test) aufrufbar sein. Das heißt, die Methode main soll in der Klasse Test in der von Ihnen selbst geschriebenen Datei Test.java (nicht test.java oder sonst irgendwie anders) stehen. Schreiben Sie (abgesehen von geschachtelten Klassen) nie mehr als eine Klasse in jede Datei. Das Verzeichnis soll zum Zeitpunkt der Abgabe und der nachträglichen Abgabe alle .java-Dateien enthalten, die Sie für Ihre Lösung benötigen. Bitte entfernen Sie alle .java-Dateien, die nicht zur Abgabe gehören. Dateien mit anderen Endungen werden bei der Beurteilung nicht berücksichtigt. Stellen Sie sicher, dass ein Aufruf von javac *.java (bzw. javac *.java */*.java und so weiter wenn Sie Pakete verwenden) im Abgabeverzeichnis keine Fehlermeldung liefert, da Lösungen mit Syntaxfehlern im Allgemeinen nicht beurteilt werden. Warnings sind bei den ersten Aufgaben zwar erlaubt, später aber teilweise nicht mehr. Versuchen Sie gleich von Anfang an, Warnings zu vermeiden. Verwenden Sie außer den Java-Standardbibliotheken keine vorgefertigten Programmteile, da diese bei der Beurteilung als nicht vorhanden angesehen werden. Vermeiden Sie jede Änderung der Verzeichnisstruktur der Abgabeverzeichnisse (kein Verschieben, Umbenennen, Löschen und Neuanlegen) um die automatische Abgabe nicht zu behindern. Wenn Sie die Verzeichnisstruktur irrtülich ändern, wenden Sie sich bitte an Ihre Tutorin, Ihren Tutor oder die Lehrveranstaltungsleitung.

Wie Account und Gruppen-Verzeichnis zu verwenden sind:

Bei der Anmeldung zur Lehrveranstaltung haben Sie (jeder Teilnehmer) einen eigenen Account auf dem Übungsrechner g0 bekommen. In diesem Account können Sie unabhängig von anderen Übungsteilnehmern (auch unabhängig von anderen Mitgliedern Ihrer Gruppe) arbeiten. Das Verzeichnis Gruppe gehört allen Gruppenmitgliedern gemeinsam. Legen Sie alle Daten, die von den Gruppenmitgliedern gemeinsam (und nicht nur von Ihnen persönlich) verwendet werden, in diesem Verzeichnis ab. Das gilt insbesondere für Lösungen von Aufgaben. Es kann pro Gruppe und Aufgabe nur eine gemeinsame Lösung geben, auf die sich die Gruppenmitglieder einigen müssen. Es bleibt der Gruppe überlassen, wie die Arbeit aufgeteilt wird, solange die Aufteilung einigermaßen gerecht ist (wird beim Abgabegespräch überprüft).

Bitte achten Sie darauf, dass alle Gruppenmitglieder Lese- und Schreibrechte auf Dateien im Verzeichnis Gruppe haben. Fehlende Rechte entstehen oft durch Kopieren einer Lösung vom eigenen Rechner in ein Abgabeverzeichnis. Der Besitzer von datei kann durch chmod g+rw datei (oder chmod g+rw *) allen Gruppenmitgliedern solche Zugriffe auf datei (bzw. alle seine Dateien im aktuellen Verzeichnis) geben. Manchmal führen fehlende Rechte dazu, dass letzte notwendige Änderungen vor der Abgabe nur mehr sehr schwer möglich sind, wenn der Besitzer einer Datei gerade nicht greifbar ist.

Änderungen der Struktur von Abgabeverzeichnissen sind zu vermeiden. Sie können aber in Gruppe (jedoch nicht in Gruppe/Aufgabe1 bis Gruppe/Aufgabe8) beliebig weitere Verzeichnisse anlegen und dort beispielsweise alte Versionen oder andere Dateien, die nicht zur Abgabe gehören, ablegen.

Was TutorInnen von Ihnen wissen möchten:

Teilen Sie Ihrer Tutorin oder Ihrem Tutor bitte möglichst bald mit, welche Vorkenntnisse Sie haben, damit Sie in der Form betreut werden können, die für Sie am günstigsten ist. Wählen Sie dazu ein Mitglied Ihrer Gruppe zur Kontaktperson. Die Kontaktperson soll so bald wie möglich eine Mail an die Tutorin bzw. den Tutor (siehe Gruppe/TUTOR) schicken um sich mit folgenden Informationen vorzustellen: Die genaue Form der Betreuung wird durch die Tutorin oder den Tutor bestimmt. Unabhängig von der Form der Betreuung kann natürlich jedes Gruppenmitglied jederzeit konkrete Fragen an die Tutorin oder den Tutor richten.

Scheuen Sie sich bitte nicht, sich auch mit organisatorischen und gruppeninternen Problemen an die Tutorin oder den Tutor zu wenden. Gerade gruppeninterne Konflikte (z.B. Gruppenmitglieder melden sich nicht, haben keine Zeit, können bzw. wollen kaum zur Lösung der Aufgaben beitragen, oder können sich nicht auf eine gemeinsame Lösung einigen) sind häufige Ursachen für ein schlechtes Abschneiden im Laborübungsteil. TutorInnen kennen solche Probleme und haben Möglichkeiten, zur Verbesserung der Situation beizutragen. Je früher TutorInnen von möglichen Problemen erfahren, um so einfacher sind sie in der Regel zu lösen.

Complang
Puntigam
   Kontakt
   Research
   Lehre
      OOP
      Typsysteme
      EP2
      FOOP
      Prog.spr.
      frühere Lehre
         LVAs 2017 W
         LVAs 2017 S
         LVAs 2016 W
         LVAs 2016 S
         LVAs 2015 W
         LVAs 2015 S
         LVAs 2014 W
         LVAs 2014 S
         LVAs 2013 W
         LVAs 2013 S
         LVAs 2012 W
         LVAs 2012 S
         LVAs 2011 W
         LVAs 2011 S
         LVAs 2010 W
            OOP
               1. Aufgabe
               2. Aufgabe
               3. Aufgabe
               4. Aufgabe
               5. Aufgabe
               6. Aufgabe
               7. Aufgabe
               8. Aufgabe
            Typsysteme
         LVAs 2010 S
         LVAs 2009 W
         LVAs 2009 S
         LVAs 2008 W
         LVAs 2008 S
         LVAs 2007 W
         LVAs 2007 S
         LVAs 2006 W
         LVAs 2006 S
         LVAs 2005 W
         LVAs 2005 S
         LVAs 2004 W
         LVAs 2004 S
         LVAs 2003 W
   Links
Sitemap
Kontakt
Schnellzugriff:
Tutoren
Skriptum
Folien
nächste Aufgabe
Fakultät für Informatik
Technische Universität Wien
Anfang | HTML 4.01 | Datenschutzerklärung | letzte Änderung: 2010-10-13 (Puntigam)