Objektorientierte Programmierung
LVA 185.162, VL 2.0, 2008 W

1. Übungsaufgabe

Themen:

Datenabstraktion, Klassenzusammenhalt, Objekt-Kopplung

Termine:

Ausgabe: 09.10.2008
reguläre Abgabe: 16.10.2008, 12:45 Uhr
nachträgliche Abgabe: 23.10.2008, 12:45 Uhr

Abgabeverzeichnis:

Gruppe/Aufgabe1

Programmaufruf:

java Test

Grundlage:

Erstes Kapitel des Skriptums

Aufgabe

Welche Aufgabe zu lösen ist:

Schreiben Sie in Java ein Programm zur Erfassung von Messdaten des Ozongehalts der Luft. Es gibt dafür einen fixen Grenzwert (den Sie selbst festlegen dürfen). Folgende Vorgänge sollen unterstützt werden:

Folgende Bedingungen sollen stets erfüllt sein, und ihre Einhaltung ist an geeigneten Stellen zu überprüfen:

Die Messdatenerfassung ist als Teil eines größeren Programmpaketes vorgesehen. Ihre Methoden werden von anderen Programmteilen (und nicht direkt von einer Person) verwendet. Daher brauchen Sie keine Benutzerschnittstelle entwickeln.

Zu Beginn des Programmlaufs ist die Liste der gespeicherten Messwerte leer. Bei Programmbeendigung können Daten verloren gehen, das heißt, die Daten brauchen nicht permanent gespeichert zu werden. Geben Sie geeignete Fehlermeldungen aus, falls notwendige Bedingungen nicht erfüllt sind. Alle Ausgaben (Fehlermeldungen genauso wie Ergebnisse von Auflistungen und Abfragen) sollen als Strings an den Aufrufer zurückgegeben (und nicht direkt in die Standardausgabe geschrieben) werden.

Schreiben Sie eine Klasse Test zum Testen Ihrer Lösung. Durch Aufruf von java Test sollen alle wichtigen Teile der Messdatenerfassung zumindest einmal durchlaufen werden. Diese Tests sollen nicht interaktiv sein (das heißt, der Programmlauf soll keine Benutzereingaben verlangen). Sorgen Sie dafür, dass die Tests möglichst klar von der eigentlichen Messdatenerfassung getrennt sind, und dass Testergebnisse eindeutig erkennen lassen, welche Tests erfolgreich waren.

Wie die Aufgabe zu lösen ist:

Lesen Sie das ganze erste Kapitel des Skriptums. 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. Es soll in Ihrem Programm mehrere voneinander möglichst unabhängige Objekte geben. 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 guten Klassenzusammenhalt und schwache Objektkopplung - siehe Skriptum. Die Lösung soll möglichst einfach sein und keine unnötige Funktionalität haben.

Allgemeine Informationen zur Laborübung

Folgende Informationen betreffen diese und auch alle weiteren Aufgabenstellungen.

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 jedoch 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).

Was Sie bei der Lösung der Aufgabe beachten sollen:

Diese Aufgabenstellung lässt Ihnen (wie die meisten folgenden) viel Freiheit bei der Lösungsfindung, stellt in manchen Bereichen aber auch klare Anforderungen. Nützen Sie die Freiheit vor allem zur Vereinfachung der Lösung, vergewissern Sie sich aber, dass alle Anforderungen erfüllt sind.

Unter der Überschrift Wie die Aufgabe zu lösen ist: finden Sie einerseits Hinweise darauf, wie Sie die Lösung der Aufgabe vereinfachen können und welche Fallen Sie umgehen sollen, erfahren andererseits aber auch, welche Aspekte bei der Beurteilung Ihrer Lösung als besonders wichtig betrachtet werden. Bei der ersten Aufgabe kommt es beispielsweise besonders auf Datenabstraktion, Klassenzusammenhalt, Objektkopplung und die Einfachheit der Lösung an. Das heißt, es können Ihnen auch für unnötig komplizierte oder umfangreiche Lösungen viele Punkte abgezogen werden. Unterschiedliche Aufgaben haben unterschiedliche Schwerpunkte. Verlassen Sie sich also nicht darauf, dass die nächste Aufgabe nach demselben Schema beurteilt wird wie die vorangegangene, sondern richten Sie sich nach der jeweiligen Aufgabenstellung.

Ein häufiger Fehler besteht darin, eine Aufgabe nur nach Gefühl zu lösen ohne zu verstehen, worauf es ankommt. Meist bezieht sich die Aufgabe auf ein Thema, das kurz zuvor in der Vorlesung behandelt wurde. Versuchen Sie, eine Beziehung zwischen der Aufgabenstellung und dem Vorlesungsstoff herzustellen. Achten Sie besonders darauf, Fachbegriffe (wie Datenabstraktion, Klassenzusammenhalt und Objektkopplung) nicht nur umgangssprachlich zu interpretieren, sondern verwenden Sie diese Begriffe so wie in der Vorlesung und im Skriptum beschrieben. Als Hilfestellung sind in jeder Aufgabenstellung die Teile des Skriptums genannt, in denen die relevantesten Themen behandelt werden - manchmal ein ganzes Kapitel, manchmal (vor allem bei komplizierten Themen) nur wenige Seiten.

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 den String Tests erfolgreich ausgibt statt tatsächlich Tests durchzuführen. Solche Versuche werden durch händische Beurteilungen mit hoher Wahrscheinlichkeit erkannt. Spätere Aufgaben enthalten nicht selten Schwierigkeiten, die nur mit Allgemeinwissen oder über Internet-Recherchen kaum zu lösen sind. Gerade in solchen Fällen ist davon abzuraten, die Schwierigkeiten durch Tricks zu umgehen. Hinweise zur richtigen Lösung finden sich im Skriptum oder lassen sich vom Tutor erfragen.

Was im Hinblick auf die Abgabe 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 (java Test für diese und einige weitere Aufgaben) aufrufbar sein; das heißt, die Methode main soll in der Klasse Test in der Datei Test.java (die Sie selbst schreiben) 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. Verzichten Sie auf die Verwendung von Verzeichnissen innerhalb des Abgabeverzeichnisses, außer für spätere Aufgaben, wo dies in der Aufgabenstellung ausdrücklich erlaubt oder verlangt wird. Wo keine Unterverzeichnisse erlaubt sind, ist es auch nicht möglich, packages zu verwenden. Stellen Sie sicher, dass ein Aufruf von javac *.java in keinem zur Abgabe gehörenden Verzeichnis eine Fehlermeldung liefert, da Lösungen mit Syntaxfehlern in der Regel nicht beurteilt werden. Warnings sind bei den ersten Aufgaben zwar erlaubt, später aber nicht mehr. Versuchen Sie gleich von Anfang an, alle 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.

Nehmen Sie Kontakt mit Ihrem Tutor auf:

Wählen Sie 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 kurz vorzustellen. Teilen Sie bitte Folgendes mit: Durch Beantwortung dieser Fragen helfen Sie der Tutorin oder dem Tutor, Sie richtig einzuschätzen. 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.
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
         LVAs 2010 S
         LVAs 2009 W
         LVAs 2009 S
         LVAs 2008 W
            OOP
               Laborübung
               1. Aufgabe
               2. Aufgabe
               3. Aufgabe
               4. Aufgabe
               5. Aufgabe
               6. Aufgabe
               7. Aufgabe
               8. Aufgabe
               9. Aufgabe
               Cacao
            Typsysteme
            Seminar
         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:
Laborübung
Tutoren
Skriptum
Folien
nächste Aufgabe
Fakultät für Informatik
Technische Universität Wien
Anfang | HTML 4.01 | Datenschutzerklärung | letzte Änderung: 2008-10-09 (Puntigam)