Arbeitsblatt 3 – EAD II Klassen und Objekte Aufgabe Uhr Es soll eine Digitaluhr in Java implementiert werden, die Stunden und Minuten zweistellig und durch einen Doppelpunkt getrennt ausgibt. Beim Start soll wahlweise eine Uhrzeit eingegeben werden oder es wird “00:00” zugewiesen. Außerdem soll die Uhrzeit gelesen oder neu zugewiesen werden können. Das Ticken der Uhr wird über eine Methode simuliert. Diese gibt ein Taktsignal, das die Uhr um eine Minute weitersetzt und dabei auch die Anzeige aktualisiert Die Umsetzung erfolgt modularisiert: die zu erledigenden Aufgaben werden auf zwei Klassen aufgeteilt. Die Uhrenanzeige besitzt zwei Anzeigen, die jeweils beginnend bei 0 in jedem Schritt um 1 erhöht werden und bei Erreichen eines Grenzwertes wieder bei 0 beginnen. Da dieses Verhalten gleich ist, kann eine Klasse erstellt werden, die genau das umsetzt. Für die Uhrenanzeige wird diese Klasse dann benutzt. Bild 1: Klassendiagramme für die Klassen Nummernanzeige und Uhrenanzeige Objektdiagramme für zwei Objekte der Klasse Nummernanzeige Was ist der Unterschied zwischen einem Klassendiagramm und einem Objektdiagramm? Welche Informationen kann man dem dargestellten Objektdiagramm entnehmen, die für die Implementierung erforderlich sind? Teil 1 Implementieren Sie die Klasse Nummernanzeige. Überlegen Sie, was die einzelnen Methoden tun müssen. Welche Parameter müssen im Konstruktorparameter übergeben werden? Testen Sie die Klasse, indem Sie einige Objekte erzeugen und ihre Methoden aufrufen. Teil 2 Implementieren Sie die Klasse Uhrenanzeige. Was sind sinnvolle Werte für die Instanzvariablen im Konstruktor ohne Parameter? Schreiben Sie auch einen überladenen Konstruktor, dem man die Anfangszeit übergeben kann. Implementieren Sie ebenfalls die sondierende Methode getUhrzeit() und die verändernde Methode setUhrzeit(int, int). Teil 3 Die Methode taktsignalGeben() soll das Vergehen einer Minute modellieren, also die Uhrzeit um eine Minute weiterstellen. Was muss dabei berücksichtigt werden? Zeichnen Sie das Struktogramm! Teil 4 Die Ausgabe auf der Konsole erfolgt als String. Um nicht jedesmal die Zahlenwerte in eine korrekte zweistellige Darstellung umzurechnen, kann man eine Instanzvariable zeitanzeige erstellen, die jeweils die aktuelle Uhrzeit als String enthält. Die Aufgabe der Methode anzeigeAktualisieren()ist es dann, diese Zeichenkette zeitanzeige zu aktualisieren. Warum kann man diese Methode als private deklarieren? Implementieren Sie die Methode. Graphische Oberfläche für Uhrenanzeige Für eine graphische Oberfläche müssen Fenster erzeugt werden, Elemente in den Container des Fensters eingefügt werden, eventuell die Größe und andere Eigenschaften der Elemente festgelegt und das oder die Fenster sichtbar gemacht werden. import javax.swing.*; import java.awt.*; /** * Stellt die Uhrzeit digital in einem Fenster dar. * * @author (Rita Freudenberg) * @version (14.4.2010) */ public class Digitalanzeige { // instance variables - replace the example below with your own private Uhrenanzeige uhr; private JFrame fenster; private JLabel label1; private Container inhalt; /** * Constructor for objects of class Digitalanzeige */ public Digitalanzeige() { // initialise instance variables uhr = new Uhrenanzeige(); fenster = new JFrame ("Digitaluhr"); inhalt = fenster.getContentPane(); label1 = new JLabel(uhr.getZeitanzeige()); inhalt.add(label1); fenster.setSize(100,100); } fenster.setVisible(true); public void zeigeZeit() { uhr.taktsignalGeben(); label1.setText(uhr.getZeitanzeige()); } }