26.3 Die Klasse StoppUhr in Java

Lösung zur Klasse StoppUhr aus UML-Stoppuhr (26.2)
 
  Um eine Klasse, und später ganze Hierarchien von Klassen und ihre Beziehung untereinander in UML-Notation zu modellieren, verwendet man gerne UML-Editoren.  Visual-Paradigm ist ein solches Werkzeug, das als Community Edition kostenlos im Netz (www.visial-paradigm.com) bezogen werden kann, in seiner Funktionalität gegenüber der Vollversion aber eingeschränkt ist.
 


Starten vp

Nach dem Start von Visual-Paradigm erzeugt man zunächst per Mausklick (rechts) auf Class Diagramm ein Klassendiagramm, das es erlaubt beim Modellieren einen Java-Code zu erzeugen.
 

Klasse anlegen

Danach steht uns ein Editorfeld zur Verfügung, auf dem wir Klassen und ihre Beziehungen in UML darstellen können. Am linken Rand steht eine ganze Reihe von Werkzeugen zur Verfügung. Wir benutzen zunächst den Schalter 'class' um ein leere Klasse in UML zu erzeugen. Wir geben ihr den Namen StoppUhr und erhalten zunächst einen leeren Kasten für unsere neue Klasse:


 

Attribute festlegen Um die Klasse zu modellieren klicken wir (rechte Maustaste) auf die Klasse un öffnen im Kontextmenü 'Open Specification'. Es öffnet sich ein Fenster 'Class Specification', wir wählen dort das Register 'Attributes' um unserer Klasse Attribute hinzuzufügen (Add...)


 

Add... (Attributes) Nach dem Klicken auf Add.. öffnet sich ein Fenster 'Attribute Specification'. Wir tragen bei Name startZeit, bei Visibility wählen wir protected und unter Typ wählen wir als Rückgabtyp long.

Analog verfahren wir mit den Attributen stoppZeit und istAktiv. Beim letzten wählen wir als Typ boolean. Am Ende sind alle Attribute in der Liste, die Attribute-Spezifikation hat dann das Aussehen:

und die Klasse selbst zeigt auch schon Details, wir stellen aber noch die Ansicht auf UML um:

Die Klasse sieht dann so aus:

Methoden hinzufügen Das Hinzufügen der Methoden geht analog. Wir zeigen es an der Methode getLaufzeit().

Nach 'Open Specification' wählen wir jetzt 'Operations' und fügen dort mit 'Add...' unsere Methode hinzu.


 

Gerüst ist fertig Sind alle Methoden angelegt, ist das UML-Modell der Klasse StoppUhr fertig. Sehr nützlich bei Visual-Paradigm ist, dass parallel zur Modellierung der Klasse ein Gerüst für die Java-Klasse entsteht. Der dabei entstandenen Quelltext lässt sich in der Community Edition leider nicht exportieren. Trotzdem ist es von Nutzen, sich einen Auszug aus dem Quelltext, den Visual Paradigm liefert mal anzuschauen.

Wir erkennen, dass der Text in der 'Documentation' als Dukumentationskomentare erschein, die Methodenrümpfe sind angelegt und mit einer Ausnahme versehen, so dass der Quelltext kompiliert und im Prinzip von einer GUI syntaktisch getestet werden könnte.
 

Download:
StoppUhr. java
Um die Klasse StoppUhr zu vervollständigen, müssen die Rümpfe Methoden entsprechend ihrer Funktionalität implementiert werden. Die fertige Klasse ist unten dargestellt. Im Download ist die Klasse StoppUhr zusätzlich mit Dokumentationskommentaren versehen.
 
public class StoppUhr {
  protected long startZeit, stoppZeit;
  protected boolean istAktiv;

  public void starten(){
    if (!istAktiv){
      istAktiv = true;
      startZeit = System.currentTimeMillis();
    }
  }
    
  public void stoppen(){
    if (istAktiv){
      istAktiv = false;
      stoppZeit = System.currentTimeMillis();
    }
  }
    
  public long getLaufzeit(){
    return (istAktiv ? System.currentTimeMillis() : stoppZeit) - startZeit;
  }
   
  public boolean istAktiv(){
    return istAktiv;
  }
}
 

Eine Anmerkung: Ein Attribut schützt man durch ungewünschten Zugriff von außen durch das Vorsetzen des Wortes private.  Dasselbe gilt auch für Methoden. Will man ein Attribut oder eine Methode öffentlich machen, einen Zugriff von außen also zulassen, setzt man an Stelle von private das Wort public. Was bedeutet nun aber protected?.  Die Abgrenzung zu public und private wird erst deutlich wenn wir noch die Vererbungsstruktur von Klassen berücksichtigen. Ist ein Attribut oder eine Methode einer Klasse A mit protected geschützt, so so sind diese für Klassen, die von A erben, öffentlich, protected wirkt hier wie public, dagegen wirkt protected wie private für Klassen, die nicht von A erben.

zu 26.4 Arbeiten mit einem Stoppuhr-Objekt
zur Startseite www.pohlig.de (C) MPohlig 2004