Objektorientierte Programmierung
LVA 185.162, VL 2.0, 2008 W
2. Übungsaufgabe
Themen:
Untertypbeziehungen, Aufwandsabschätzung, Programmiereffizienz
Termine:
| Ausgabe: |
16.10.2008 |
| reguläre Abgabe: |
23.10.2008, 12:45 Uhr |
| nachträgliche Abgabe: |
30.10.2008, 12: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 die Messdatenerfassung aus der ersten Aufgabe so, dass sie zur Erfassung zahlreicher Parameter der Luftqualität herangezogen werden kann und in der Praxis tatsächlich verwendbar wird.
Folgende Eigenschaften werden von zukünftigen Anwendern des Systems als wichtig angesehen:
- Daten gehen beim Abschalten des Computers nicht verloren.
- Neben dem Ozongehalt werden auch andere Parameter wie Feinstaubgehalt, Stickoxydanteil und Schwefeloxydanteil, aber auch Temperatur, Luftfeuchtigkeit und Luftdruck erfasst.
Je nach Prameter werden die Messwerte in unterschiedlichen Maßeinheiten (% = Prozent, ppm = parts per million, °C = Grad Celsius, hPa = Hektopascal, g/m³ = Gramm pro Kubikmeter, etc.) registriert.
- Es können stets neue Parameter und neue Maßeinheiten von einem Administrator hinzugefügt werden.
- Ein und derselbe Parameter kann in unterschiedlichen Einheiten gemessen werden (beispielsweise in % und ppm, in °C und °F, in hPa und bar).
Um die Messwerte vergleichbar zu machen, muss es zwischen allen Maßeinheiten, die für denselben Parameter sinnvoll sind, Umrechnungsfaktoren oder komplexere Umrechnungsfunktionen geben.
- Neben jedem Messwert werden stets auch die Maßeinheit, das Datum, die Uhrzeit, die Bezeichnung der Messstation (von denen es beliebig viele geben kann) und eine fortlaufende Nummer der Messung an dieser Messstation erfasst.
- Jede Messstation muss bei der Übermittlung der Daten nicht nur ihre eigene Bezeichnung sondern auch ein Passwort und eine fortlaufende Nummer der Messung mitliefern, damit das Fälschen von Daten erschwert wird.
- Ein Administrator kann jederzeit neue Messstationen hinzufügen oder wegnehmen.
Beim Hinzufügen muss der Administrator die Bezeichnung, das Passwort, die erste der fortlaufenden Nummern, die von der Station gemessenen Parameter und die Maßeinheiten, in denen die Messwerte übermittelt werden, angeben.
Entsprechende Angaben können wenn nötig auch geändert werden.
- Liefert eine Messstation offensichtlich falsche Daten (das heißt, eine unbekannte Bezeichnung, ein falsches Passwort, eine inkorrekte fortlaufende Nummer, ein Datum oder eine Uhrzeit, die nicht stimmen kann, oder ein Messergebnis außerhalb eines möglichen Wertebereichs für einen gemessenen Parameter), dann wird die Messung nicht direkt erfasst, aber die übermittelten Daten werden trotzdem in einem Protokoll festgehalten.
- Ein Administrator kann Daten aus dem Protokoll händisch korrigieren und/oder als korrekt anerkennen und deren Erfassung veranlassen.
Das soll sowohl für einzelne Messungen als auch alle Messungen, teilweise eingeschränkt auf einen bestimmten Zeitraum, eine bestimmte Messstation und/oder einen bestimmten Parameter (mit einem Wert innerhalb eines bestimmten Wertebereichs) möglich sein.
- Ein Administrator kann erfasste Messdaten nachträglich (auch mehrfach) markieren und mit einer Begründung für die Markierung versehen.
Das soll sowohl für einzelne Messungen als auch alle Messungen, teilweise eingeschränkt auf einen bestimmten Zeitraum, eine bestimmte Messstation, einen bestimmten Parameter (mit einem Wert innerhalb oder außerhalb eines bestimmten Wertebereichs) und/oder auf das Vorhandensein einer Markierung (mit einer bestimmten Begründung) möglich sein.
Es soll auch möglich sein, solche Markierungen wieder zu entfernen, ebenfalls für einzelne Messungen als auch alle Messungen mit teilweisen Einschränkungen.
- Administratoren benötigen ein Passwort wenn sie sich im System anmelden.
Mehrere Administratoren sollen gleichzeitig im System arbeiten können.
- Sehr wichtig sind umfangreiche Abfragemöglichkeiten der Messdaten.
Einerseits werden vollständige Listen aller Messdaten gebraucht, teilweise eingeschränkt auf einen bestimmten Zeitraum, ein oder mehrere Messstationen, ein oder mehrere Parameter, Wertebereiche für diese Parameter und das Vorhandensein bzw. Nichtvorhandensein bestimmter oder beliebiger Markierungen.
Es soll möglich sein, die Maßeinheiten für die Werte ausgegebener Parameter festzulegen oder in jenen Maßeinheiten auszugeben, in denen die Messwerte erfasst wurden.
Außerdem soll es möglich sein, bestimmte Daten wie Datum, Uhrzeit, Messstation und fortlaufende Nummer auszublenden, deren Reihenfolge festzulegen, und die ausgegebenen Messwerte danach zu sortieren.
Für Abfragen ist kein Passwortschutz nötig.
- Wichtig sind auch statistische Analysen von abgefragten Daten.
Zumindest Durchschnittswerte und eine bestimmte Anzahl kleinster bzw. größter Werte werden benötigt.
Aber auch gleitende Mittelwerte (verschiedene Varianten davon, siehe z.B. Wikipedia) und andere Techniken zur Verdichtung des umfangreichen Datenmaterials sind sinnvoll.
- Das System soll unter Bedingungen, die vom Administrator festlegbar sind (vor allem bei Überschreitungen von Grenzwerten), Warnungen ausgeben.
Dazu kann der Administrator festlegen, wann eine bestimmte Überprüfung stattfindet (nach jeder Erfassung eines Messwertes einer bestimmten oder beliebigen Messstation oder in regelmäßen Abständen), durch welche Abfrage ein Wert ermittelt wird und bei Über- oder Unterschreitung welchen Wertes Alarm geschlagen werden soll.
- Aus Sicherheitsgründen sind alle Tätigkeiten am System (Administration ebenso wie Abfragen) zu protokollieren.
Ebenso sollen automatisch regelmäßig Backups des gesamten Datenbestands gemacht werden.
Nach wie vor ist die Messdatenerfassung als Teil eines größeren Programmpaketes vorgesehen.
Ihre Methoden werden von anderen Programmteilen verwendet, und Sie brauchen keine Benutzerschnittstelle entwickeln.
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:
Die von den zukünftigen Anwendern des Systems als wichtig angesehenen Eigenschaften sind viel zu umfangreich, als dass Sie diese in der vorgegebenen Zeit vollständig in das System integrieren und testen könnten.
Die erste Teilaufgabe besteht also darin, die wichtigsten Eigenschaften zu identifizieren, die Sie innerhalb einer Woche entwickeln können.
Beachten Sie dabei, dass es zwischen den einzelnen Punkten Überschneidungen gibt und kleine Änderungen die Brauchbarkeit des Systems kaum beeinflussen, die Implementierung aber vielleicht stark vereinfachen.
Solche Änderungen sind nicht nur erlaubt sondern sogar erwünscht.
Machen Sie Pläne, welches Gruppenmitglied welchen Teil entwickelt, und setzen Sie diese (eventuell nach Absprache mit dem Tutor) in die Tat um.
Das Ziel besteht darin, möglichst viele der wichtigsten Eigenschaften so zu realisieren, dass die entsprechenden Programmteile fehlerfrei laufen und getestet sind.
Es kommt eher auf die Funktionsfähigkeit als auf den Umfang an.
Bedenken Sie, dass die Entwicklung der Messdatenerfassung mit dieser Aufgabe voraussichtlich noch nicht abgeschlossen ist und die von Ihnen entwickelten Programmteile später erweitert werden sollen.
Achten Sie daher auf Einfachheit und Erweiterbarkeit der Lösung, also vor allem auf Datenkapselung, gute Faktorisierung (Klassenzusammenhalt), leichte Änderbarkeit (Objektkopplung) und die gezielte Verwendung von Untertypbeziehungen.
Beachten Sie die allgemeinen Informationen zur Laborübung in der ersten Aufgabenstellung.
Aufgrund des Umfangs der zweiten Aufgabe ist es erlaubt (aber nicht notwendig), dass Sie packages verwenden.
Zu diesem Zweck dürfen Sie im Abgabeverzeichnis Gruppe/Aufgabe2
Unterverzeichnisse anlegen.