Thomas Kramer

IT-COW | November 2012

Implementierung einer Notenverwaltung in Java

By Administrator at November 13, 2012 12:13
Filed Under: Design Patterns, Java, Projekte, Studium

Für das Studium und dem Fach Software-Engineering sollten wir eine Notenverwaltung in Java implementieren, deren Oberflächenentwurf wir zunächst über Bleistiftzeichnungen vorab festlegen sollten. Die Implementierung sollte anschließend genau dem Oberflächenentwurf entsprechen.

 

Nachfolgend meine ausführbare Anwendung – gegen Java 6 kompiliert – sowie der dazugehörige Quellcode-Ordner von Eclipse. Da der Sourcecode 16 Klassen umfasst werde ich ihn diesmal nicht von Hand in diesen Blog-Eintrag hineinkopieren.

 

Folgende Besonderheiten gab es diesmal:

 

  • 1. Die Dialoge sind alle modal, es lässt sich immer nur ein Fenster auf einmal öffnen
  • 2. Die Anwendung implementiert das MVC-Pattern
  • 3. Erstmalig verwende ich das Observer-Pattern
  • 4. Ebenfalls erstmalig implementiere ich den WindowListener

 

Das MVC-Pattern hatte ich erstmalig in meiner TreeLayout-Anwendung implementiert, diesmal habe ich es noch um das Observer-Pattern erweitert auch wenn das ebenso wie die Benutzung des MVC-Patterns keine spezifische Anforderung seitens des Studiums für diese Aufgabe war.

 

Ein Observer kümmert sich um das Datenmodell und gibt den Views Bescheid sobald Daten sich geändert haben, z. B. beim Einlesen der Konfigurationsdatei oder wenn im Customizing Daten geändert wurden. Dazu leitet die Controller-Klasse von der Klasse Observable ab und die Views implementieren die Schnittstelle Observer.

 

Ich verwende angepasste Eingabefelder, so dass falsche Daten gar nicht erst eingegeben werden können. Die Konfigurationsdatei wird ins Benutzerverzeichnis geschrieben wo immer Schreibrechte existieren. Die Berechnung der Durchschnittsnote wird mittels NumberFormat-Klasse auf zwei Nachkommastellen abgeschnitten, ich stümpere da nicht mit Abschneiden von Strings herum.

 

Sämtliche Konstanten sind in eine eigene Utility-Klasse ausgelagert. Im .NET-Framework gibt es statische Klassen, diese gibt es in Java nicht – das Pendant dazu sind Utility-Klassen. Dazu erhält eine global sichtbare Klasse lediglich einen parameterlosen privaten Konstruktor, wodurch keine Instanzen gebildet werden können – sämtliche Methoden der Klasse werden dann statisch eingebunden. In Java gibt es das static-Schlüsselwort nur für Methoden, nicht für Klassen.

 

Ich wollte mich auch noch mit XML-Verarbeitung in Java beschäftigen, aber dafür hat die Zeit (zwei Wochen) leider nicht mehr gereicht. Ich kann aber bereits Kenntnisse zu XML aufweisen, siehe auch meinen Reminder zu XML-Dateien oder dem XSD-Codegenerator vom .NET-Framework. Interessant in dem Zusammenhang ist auch mein Beitrag zu LINQ und StreamReader, dem yield-Schlüsselwort und XML-Validierung für .NET.

 

Notenverwaltung.jar

Quellcode.zip

 

Update: Die Berechnung des Notendurchschnitts funktioniert folgendermaßen:

 

((Fach1 * CP) + (Fach2 * CP)...) / Summe-CP

 

Wobei aber nur Fächer mitgezählt werden, die bereits bestanden sind.... und dazu werden - in dieser Reihenfolge - die Noten des 3., 2. und 1. Versuchs jedes Fachs überprüft.

 

An der Stelle gab es einen Division durch Null-Fehler, der auftrat wenn lediglich zu einem Fach mit 0 CP-Punkten eine Notenzuordnung gespeichert wurde. Den Fehler habe ich behoben.

 

Übrigens an der Stelle auch eine Warnung vor dem Abfragen von Fließkommazahlen auf Übereinstimmung, diese wird normalerweise mittels Epsilon vorgenommen. 

 

Tag-Wolke

Monats-Liste