29.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.  Der Javaeditor stellt ein Werkzeug zur Verfügung, mit dessen Hilfe wir kleine Projekte in UML darstellen können.
 

Starten
Wir legen eine klasse StoppUhr an. Es reicht die folgenden Quelltext zu schreiben:

public class StoppUhr{

}

Danach klicken wir in der Menüleiste vom Javaeditor unter UML auf 'Klasse bearbeiten:

Es öffnet sich ein Fenster um die Attribute und Methoden, genauer deren Signaturen festzulegen:
 

Klasse anlegen

Zunächst legen wir die Attribute fest. Wir legen dazu die Namen, den Typ und falls gewünscht den Initialisierungswert fest. Wir legen die Zugriffsrechte fest und teilen dem Editor mit, ob er uns für das aktuelle Attribut eine get- oder set-Methode generieren soll.
 


 

  Unschwer kann man erkennen, dass parallel zum Editieren des Modells in UMLein Java-Code erzeugt wird.

Kommen wir zu den Methoden. Wir klicken dazu auf das Methodenregister. Der Javaeditor unterscheidet zwischen Prozeduren und Funktionen. Wir verwenden diese Namen in unserem Kurs nicht. Es reicht zu wissen, dass der Autor des Javaeditors eine Methode mit Rückgabewert Funktion und eine ohne Rückgabewert (genauer mit dem Rückgabewert void) Prozedur nennt.

Da für die Methide starten kein Rückgabewert gewünscht wird, wir also Prozedur ausgewählt haben, lässt sich auch kein Typ festlegen. Die Liste der formalen Parameter (das sind die Übergabeparameter in den runden Klammern hinter dem Methodennamen) bleibt leer.
 


 
Gerüst ist fertig

Wie schon bei den Attributen wird auch bei den Methoden der Quuelltext, d.h. die Signatur der Methode in Java angelegt. Die Funktionalität, sie ist kein Bestandteil der UML-Klassen-Beschreibung.
 

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 29.4 Arbeiten mit einem Stoppuhr-Objekt
 
zur Startseite www.pohlig.de (C) MPohlig 2006