1 Modellierung einer Uhr

Ähnliche Dokumente
5.5.8 Öffentliche und private Eigenschaften

Universität Augsburg, Institut für Informatik Sommersemester 2005 Prof. Dr. Werner Kießling 15. Oktober 2005 Dr. Alfons Huhn, Timotheus Preisinger

5.4 Klassen und Objekte

Kapitel 1 Das Projekt Uhr (Observer-Muster, MVC-Muster) Seite 1

Software Engineering Klassendiagramme Assoziationen

Distributed Computing Group

Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden.

Große Übung Praktische Informatik 1

Autor: Michael Spahn Version: 1.0 1/10 Vertraulichkeit: öffentlich Status: Final Metaways Infosystems GmbH

Schritt 1 - Ein Spielfeld

Objektorientierte Programmierung OOP Programmieren mit Java

Einführung in die objektorientierte Programmierung mit Java. Klausur am 19. Oktober 2005

Java-Programmierung. Remote Method Invocation - RMI

1 Polymorphie (Vielgestaltigkeit)

Primitive Datentypen

Beispiel: Methode mit einem Fehler. Diese Methode wird problematisch, wenn von außen eine Dauer von 0 Sekunden angegeben wird, etwa im Aufruf

von Anja Austermann Drag and Drop

Kapitel 6. Vererbung

Folge 18 - Vererbung

368 4 Algorithmen und Datenstrukturen

Einführung in Javadoc

Kapitel 6. Vererbung

Programmieren I. Prinzipieller Ablauf. Eigenschaften von JAVA. Source-Code Javac Bytecode. Java Virtual Machine (Java, Browser, Appletviewer)

Objektorientierte Programmierung

Java Einführung Programmcode

JDBC. Es kann z.b. eine ODBC-Treiberverbindung eingerichtet werden, damit das JAVA-Programm auf eine ACCESS-DB zugreifen kann.

Aufgabe 1. »Programmieren«, WS 2006/2007. Nino Simunic M.A.

Kapitel 6. Vererbung

Problemstellung. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 24: Reflection 1. IDE und automatische Tests.

Java: Vererbung. Teil 3: super()

Projekt AGB-10 Fremdprojektanalyse

Programmiervorkurs. Organisation: Steffen Gebert, Alexander Wolff. Tutoren: Jürgen Zöller, Jonathan Stoll. Wintersemester 2012/2013

Programmieren in Java

AKTUEL ZU JAVA 8 PROGRAMMIEREN IN JAVA. 7. Auflage. Im Internet: Alle Beispielprogramme und Lösungen

Probeklausur: Programmierung WS04/05

PIWIN 1 Übung Blatt 5

5. Abstrakte Klassen. Beispiel (3) Abstrakte Klasse. Beispiel (2) Angenommen, wir wollen die folgende Klassenhierarchie implementieren:

Programmierprojekt Aufgabe 1

i n g e n i e u r b ü r o f ü r s o f t w a r e t e c h n o l o g i e w w w. v o e l t e r. d e Servlet Debugging

Ogre Einführung Teil 1

Software Engineering Klassendiagramme Einführung

II.1.1. Erste Schritte - 1 -

Variablen manipulieren per JDI

5. Abstrakte Klassen

Seite Seite 2

Folge 19 - Bäume Binärbäume - Allgemeines. Grundlagen: Ulrich Helmich: Informatik 2 mit BlueJ - Ein Kurs für die Stufe 12

Objektorientierte Programmierung

Eine Einführung in. für mathematisch- technische Assistenten / Informatik (IHK)

Eine Klasse beschreibt Objekte mit gleichen Attributen und Methoden.

Programmierkurs Java

Datenbankanwendungsprogrammierung Crashkurs Java

Musterlösungen zur Klausur Informatik 3

Grundlagen Programmierung

Tutorium Java Ein Überblick. Helge Janicke

Fachgebiet Informationssysteme Prof. Dr.-Ing. N. Fuhr. Programmierung Prof. Dr.-Ing. Nobert Fuhr. Übungsblatt Nr. 6

Programmieren in Java

Studentische Lösung zum Übungsblatt Nr. 7

Übungen zur Vorlesung Einführung in die Informatik Wintersemester 2010/11

UNIVERSITÄT ULM Fakultät für Ingenieurswissenschaften und Informatik Institut für Datenbanken und Informationssysteme

Institut für Programmierung und Reaktive Systeme 26. April Programmieren II. 10. Übungsblatt

Brainfuck. 1 Brainfuck. 1.1 Brainfuck Geschichte und Umfeld. 1.2 Esoterische Programmiersprachen

5 Projekt Bankverwaltung

Schieberegler und analoge Anzeigen

Selbstbestimmtes Lernen. Proinformatik III Objektorientierte Programmierung. Format. Inhalt. Buzzwords

Computeranwendung und Programmierung (CuP)

Javakurs für Anfänger

Allgemein: Klassen testbar machen. 5. Mocking. Mocks programmieren. Zusammenspiel von Klassen testen

Programmierkurs Java

Aufgabenblatt Nr. 5 Generizität und TicTacToe

5. Threads, Serverprozesse und Benachrichtigungen

Web und Mobile Apps Programmieren mit Dart

Propädeutikum zur Programmierung

Objektorientierte Programmierung. Kapitel 12: Interfaces

Einführung Datentypen Verzweigung Schleifen Funktionen Dynamische Datenstrukturen. Java Crashkurs. Kim-Manuel Klein

Programmiersprache 2 (C++) Prof. Dr. Stefan Enderle NTA Isny

Institut für Programmierung und Reaktive Systeme 25. August Programmier-Labor Übungsblatt. int binarysearch(int[] a, int x),

Algorithmen und Datenstrukturen

Java Einführung Umsetzung von Beziehungen zwischen Klassen. Kapitel 7

Datenbanken & Informationssysteme Übungen Teil 1

Ein erstes Java-Programm

Info: Standard DO-178B. 5. Mocking. Zusammenspiel von Klassen testen. Allgemein: Klassen testbar machen

Kapitel 3 Das Projekt Bankkonto Seite 1

Jürgen Bayer. MDI-Anwendungen in C#

Java - Webapplikationen

3. Konzepte der objektorientierten Programmierung

Assoziation und Aggregation

Vorkurs Informatik WiSe 15/16

Software Engineering II

Java programmieren: Konsolen-Programme

Applets Belebung von Webseiten. Dipl.-Ing. Wolfgang Beer

Szenario 3: Service mit erweiterter Schnittstelle

3 Objektorientierte Konzepte in Java

3 Objektorientierte Konzepte in Java

Übungsblatt 3: Algorithmen in Java & Grammatiken

Rekursion. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java:

Teil II. Objektorientierte Programmierung und objektorientierter Entwurf

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...

Kapitel 1: Anforderungen an moderne Software und ihre Umsetzung in Java

Übung 1 mit C# 6.0 MATTHIAS RONCORONI

Transkript:

PNS Wahlpflichtfach Informatik Projekt: Uhrzeit Seite 1 1 Modellierung einer Uhr Aufgabe: Es soll ein Modell für eine Digitaluhr erstellt werden, die Stunden und Minuten im Format hh:mm repräsentiert. Ziel: Wir wollen die Uhrzeit sowohl grafisch als auch in einem Textfenster ausgeben können. Dazu muss das Modell unserer Uhr strikt von der Anzeige getrennt werden. Dazu modellieren wir zunächst eine Uhr, die uns nur die nötigen Methoden, die eine Uhr besitzen sollte, zur Verfügung stellt. Diese können wir bereits in der Bluej-Umgebung testen. In einem zweiten Schritt implementieren wir dann eine grafische und Text-basierte Anzeige. Beide dienen im Wesentlichen nur der Anzeige eines (Zeit-)Textes. 1. Schritt: abstrakte Modellierung einer Uhr Wir kümmern uns zunächst überhaupt nicht um eine Anzeige der Uhrzeit. Uns interessiert nur, was eine Uhr eigentlich können müsste. Da eine automatische Zeitsynchronisation aufwendig ist, wollen wir (zunächst) die Zeit jeweils manuell takten. Ein Takt soll die Uhrzeit um eine Minute vorstellen. Woraus besteht eine Digitaluhr? Was ist für unsere Implementierung wichtig? Gibt es dabei Dinge (Objekte), die gleich oder ähnlich funktionieren ( man muss das Rad nicht zweimal erfinden )? Welchen Wertebereich habt die Stunden-/Minutenanzeige? Was wollen wir mit der Uhr machen (welche Methoden benötigen wir?) Welche Konsequenzen ergeben sich aus diesen Fragen für unsere Uhr? 2. Schritt: Implementierung unterschiedlicher konkreter Uhren Sobald wir ein abstraktes Uhrenmodell besitzen, können wir die Uhrzeit auf unterschiedliche Art ausgeben. Wir beschränken uns auf eine einfache Textausgabe in einem Textfenster und eine grafische Ausgabe auf der uns bekannten Leinwand. Man könnte später die Uhrzeit auch über das Internet auf einer html-seite oder einem Handy ausgeben lassen.

PNS Wahlpflichtfach Informatik Projekt: Uhrzeit Seite 2 1.1 Modell einer abstrakten Uhr Eine Uhr besitzt je zwei Ziffern für die Stunden- und Minutenanzeige. Beide Anzeigen (Stunden, Minuten) funktionieren ähnlich, arbeiten aber mit unterschiedlichen Wertebereichen. Sinnvollerweise implementiert man zunächst eine Klasse NummernAnzeige, die eine zweistellige Zahl von 0 bis zu einer maximalen Zahl limit darstellt. Mit Blick auf die Uhr soll diese Klasse eine Methode erhoehe erhalten, die beim Erreichen des Limits wieder bei 0 beginnt. 1.1.1 Die Klasse NummernAnzeige Damit ergibt sich das Gerippe einer Klasse Nummernanzeige : public class NummernAnzeige { private int wert; private int limit; // Konstruktor mit Standardwert 0 und dem maximalen Wert max public Nummernanzeige(int max) {... // ------- Methoden ------- // Setzt den Wert der Anzeige auf einen neuen Wert public void setzewert(int neu) {... // Gibt den Wert der Anzeige als Zahl public int gibwert() {... // Gibt den Wert der Anzeige als String (ggf. mit führender Null) public String gibanzeige() {... // Erhöht den Wert um 1. Falls wert = limit ist, wird wert=0 gesetzt public void erhoehe() {... Wie muss der Aufruf für eine Stunden- bzw. Minutenanzeige aussehen? Implementiere diese Klasse und teste deine Methoden. Lade dir hierzu das Projekt Uhr.zip unter pns-berlin.de herunter und erstelle in diesem Projekt die Klasse Nummernanzeige. Die in diesem Projekt vorhandenen Klassen brauchst Du für dieses Beispiel noch nicht.

PNS Wahlpflichtfach Informatik Projekt: Uhrzeit Seite 3 1.1.2 Die Klasse Uhr Nun können wir uns an die Implementierung der Uhr machen. Wir wissen bereits, dass die Uhr aus zwei Attributen der Klasse Nummernanzeige besteht, die wir nun nur noch mit einigen Methoden versehen müssen. public class Uhr { private NummernAnzeige stunde; private NummernAnzeige minute; // Konstruktor mit Standarduhrzeit,,00:00 public Uhr() {... // ------- Methoden ------- // Liefert die aktuelle Uhrzeit im Format,,hh:mm public String gibuhrzeit() {... // Gibt den Wert der Stunde bzw. Minute als Zahl public int gibstunde() {... public int gibminute() {... // Setzt die Stunde bzw. Minute auf einen neuen Wert public void setzestunde() {... public void setzeminute() {... // Die Uhr wird (manuell) um eine Minute vorgestellt. public void taktsignalgeben() {... Implementiere diese Klasse und teste deine Methoden. Ergänze die Klasse Uhr um einen zweiten Konstruktor, der das Setzen einer Anfangsuhrzeit erlaubt. Dazu sollen die Stunden und Minuten als Zahl mit angegeben werden.

PNS Wahlpflichtfach Informatik Projekt: Uhrzeit Seite 4 1.2 Anzeigen der Uhrzeit Endlich kommen wir nun zur Anzeige der Uhrzeit. Wir beschäftigen uns zunächst mit einer einfachen Ausgabe der Uhrzeit in einem Textfenster. Dabei erfolgt jede Ausgabe in einer neuen Zeile. Die Uhrzeit scrollt also nach unten. Das ist nicht schön, aber dafür einfach :-); Hierzu erstellen wir die Klasse TextUhr, die eine Uhr als Attribut besitzt. Für die Anzeige benötigen wir eine Methode zeigeuhrzeit, die die aktuellen Zeit ausgibt. Hierzu kennt Java den Befehl System.out.println(). Innerhalb der runden Klammern wird angegeben, was geschrieben werden soll. Dabei kann es sich um eine Aufzählung von Strings, Zahlen usw. handeln, die mit einem Plus-Zeichen verbunden werden. Beispiele: int alter = 16; System.out.println("Hello world"); System.out.println("Hello" + "world"); System.out.println("Otto ist "+alter+" Jahre alt"); // Hello world // Hello world // Otto ist 16 Jahre alt Damit ergibt sich folgendes Gerüst für die Klasse TextUhr. Für die Simulation wird eine Methode warte benötigt, die im Quelltext vollständig angegeben ist. Sie erwartet eine Zeitangabe in Millisekunden. public class TextUhr { // Attribut private Uhr uhr; // Konstruktor mit Standarduhrzeit "00:00" public TextUhr() {... // gibt die aktuelle Uhrzeit in einem Textfenster aus. public void zeigeuhrzeit() {... // stellt die Uhr um eine Minute vor und gibt die neue Uhrzeit aus public void taktsignalgeben() {... // Die Uhr wird 100 mal um eine Minute vorgestellt. // Dabei wird jedes mal für einen kurzen Moment gewartet (ca. 50 ms) public void simulation() {... // Einen Moment (in Millisekunden) warten public void warte(int millisekunden) { try { Thread.sleep(millisekunden); catch (Exception e) { // Exception ignorieren Implementiere die Klasse TextUhr und teste sie. Ergänze die Klasse um einen Konstruktor zur Angabe der Startuhrzeit.

PNS Wahlpflichtfach Informatik Projekt: Uhrzeit Seite 5 1.3 Grafische Anzeigen der Uhrzeit Zum Schluss kommen wir zu einer grafischen Anzeige der Uhrzeit. Damit wir Text auf der Leinwand ausgeben können, benötigen wir eine (komplexe) Klasse Text, die ähnlich wie Kreis, Quadrat usw. benutzt wird. Diese Klasse benötigt neben einem Attribut uhr weitere Attribute für die grafische Anzeige: ausgabe... Typ Text zur Textausgabe kreis1, kreis2... Kreise zur Erzeugung eines Ringes Die übrigen Methoden entsprechen den Methoden der Klasse TextUhr, müssen aber hier natürlich an die Grafikausgabe angepasst werden. public class GrafikUhr { // Attribut private Uhr uhr; private Kreis kreis1; private Kreis kreis2; private Text ausgabe; // Konstruktor mit Standarduhrzeit "00:00" // Es wird eine Uhr mit einem schwarzen Ring und // roten Ziffern im Innern erstellt. public GrafikUhr() {... // gibt die aktuelle Uhrzeit in einem Textfenster aus. public void zeigeuhrzeit() {... // stellt die Uhr um eine Minute vor und gibt die neue Uhrzeit aus public void taktsignalgeben() {... // Die Uhr wird 100 mal um eine Minute vorgestellt. // Dabei wird jedes mal für einen kurzen Moment gewartet (ca. 50 ms) public void simulation() {... // Einen Moment (in Millisekunden) warten public void warte(int millisekunden) { try { Thread.sleep(millisekunden); catch (Exception e) { // Exception ignorieren Implementiere die Klasse GrafikUhr und teste sie. Ergänze die Klasse um einen Konstruktor zur Angabe der Startuhrzeit.