Projekt Su-do-ku Generator

Größe: px
Ab Seite anzeigen:

Download "Projekt Su-do-ku Generator"

Transkript

1 Projekt Su-do-ku Generator unter der Leitung von Univ.-Ass. Dr. Michael Hahsler verfasst für Abteilung für Informationswirtschaft Wirtschaftsuniversität Wien, UZA II 3.Ebene Augasse 2-6, A-1090 Wien, Austria von Jasna Tusek Homepage: Wien,

2 Für Su-do-ku Fans 2

3 Inhaltsverzeichnis 1. PROJEKTPHASEN PROBLEMDEFINITION PROJEKTBESCHREIBUNG SPIELREGELN PROJEKTZIELE IDEEN FÜR UMSETZUNG PROJEKTPLAN MODELLIERUNG KLASSENDIAGRAMM SEQUENZDIAGRAMM USE CASE DIAGRAMM ZUSTANDSDIAGRAMM IMPLEMENTIERUNG KLASSE SUDOKUZAHL KLASSE GENERATOR KLASSE MENÜ KLASSE GUI KLASSE MAIN TEST FUNKTIONALITÄT IN DETAILS FUNKTIONALITÄT UND BENUTZERFREUNDLICHKEIT IN DETAILS PLATTFORMUNABHÄNGKEIT GETESTETE FUNKTIONEN ABNAHME UND PRÄSENTATION PROJEKT-API UTIL.*; IO.*; AWT.*; X.SWING.*; NET.*; BESONDERHEITEN AUSNAHMEBEHANDLUNG (= EXCEPTIONS) ZWEIDIMENSIONALES ARRAY GRAFISCHE BENUTZEROBERFLÄCHE GUI-KOMPONENTEN JFRAME JMENU JPANEL JBUTTON JFORMATTEDTEXTFIELD JTEXTAREA JTABBEDPANE JOPTIONPANE LAYOUT-MANAGER GRIDLAYOUT BOXLAYOUT BORDERLAYOUT

4 5. BESCHREIBUNG DER PROJEKTKLASSEN KLASSE SUDOKUZAHL VARIABLEN METHODEN MODIFIZIERER KLASSE GENERATOR VARIABLEN METHODEN MODIFIZIERER KLASSE MENÜ VARIABLEN METHODEN MODIFIZIERER KLASSE GUI VARIABLEN METHODEN MODIFIZIERER KLASSE MAIN INSTALLATION UND WARTUNG FAZIT...35 BILDVERZEICHNIS...36 TABELLENVERZEICHNIS...36 LITERATURVERZEICHNIS

5 1. Projektphasen Das vorliegende Projekt wird in folgende Projektphasen gegliedert: Problemdefinition, Projektplan, Modellierung, Implementierung, Test und Präsentation. 1.1 Problemdefinition Die Problemdefinition wird stets zu Beginn des Projekts erstellt und gibt die wesentlichen Ziele des Projekts vor Projektbeschreibung Mit diesem Projekt wird ein Su-do-ku Generator modelliert und implementiert. Das mit Abstand beliebteste Rätsel der Welt besteht aus 81 Feldern, welche in einer 9 x 9 Matrix angeordnet sind. Diese Matrix kann auch als ein einfaches Quadrat beschrieben werden, welches sich wiederum in neun weitere Subquadrate eingliedern lässt. Die Subquadrate entsprechen dann nur noch mehr einer 3 x 3 Matrix (siehe Bild 1). Daraus lässt sich auch ableiten, dass der ganze Su-do-ku Quadrat aus neun Zeilen und neun Spalten und jedes Subquadrat aus drei Zeilen und drei Spalten besteht. Nun werden die Zahlen 1 bis 9 so eingefügt, dass in keiner Zeile, keiner Spalte und in keiner 3 x 3 Matrix eine Zahl doppelt vorkommt. Der Generator muss daher diese Bedingung prüfen, bevor er die Zahlen schließlich in einer Su-do-ku Benutzeroberfläche ausgibt. Das Programm wird permanent neue Su-do-ku Angaben generieren. Zudem wird das Programm auf Wunsch des Benutzers das generierte Su-do-ku lösen Spielregeln Um das Programm etwas interessanter zu gestalten, wird zu der allgemeinen Regel auch eine spezielle Regel eingeführt. Der Su-do-ku Generator wird somit folgende Bedingungen erfüllen: 1. keine Zahl darf doppelt vorkommen (dies gilt für jedes Subquadrat, für jede Zeile und jede Spalte) 2. jede Zahl kommt auf eine und dieselbe Position nur einmal vor (gilt für alle 9 Subquadrate) Bild 1 Su-do-ku Feld 5

6 Bild 1 zeigt das Su-do-ku Feld und markiert die Position 11. Diese Position liegt in jedem einzelnen Subquadraten stets in der ersten Zeile und ersten Spalte. Die zweite Regel besagt daher, dass die Zahlen 1 bis 9 auf diese neun Felder so verteilt werden müssen, dass keine Zahl in der Position 11 doppelt vorkommt. Dasselbe gilt für die restlichen Positionen. Somit ist die Benutzeroberfläche des Su-do-ku Generators in folgende Positionen gegliedert: Bild 2 Gliederung des Su-do-ku in Positionen Erläuterung zu Bild 2: p11 = Position in der ersten Zeile und ersten Spalte des jeweiligen Subquadrats p12 = Position in der ersten Zeile und zweiten Spalte des jeweiligen Subquadrats p13 = Position in der ersten Zeile und dritten Spalte des jeweiligen Subquadrats p21 = Position in der zweiten Zeile und ersten Spalte des jeweiligen Subquadrats p22 = Position in der zweiten Zeile und zweiten Spalte des jeweiligen Subquadrats p23 = Position in der zweiten Zeile und dritten Spalte des jeweiligen Subquadrats p31 = Position in der dritten Zeile und ersten Spalte des jeweiligen Subquadrats p32 = Position in der dritten Zeile und zweiten Spalte des jeweiligen Subquadrats p33 = Position in der dritten Zeile und dritten Spalte des jeweiligen Subquadrats Anmerkung: Die einzelnen Subquadrate sind daher hinsichtlich ihrer Positionsstruktur ident Projektziele Mit der Umsetzung des Su-do-ku Generators werden folgende Ziele verfolgt: 1. Die Funktionalität des Generators muss alle Bedingungen des Rätsels erfüllen. 2. Die Benutzoberfläche (GUI) hat eine besondere Benutzerfreundlichkeit zu gewährleisten. 3. Informationen und Hilfe werden vom Programm zur Verfügung gestellt Ideen für Umsetzung 1. Klassen: Zahl, Generator, GUI, Main 2. Verwendung von Java-API: java.util.*; (Collections) java.awt.*; (ActionEvent, ActionListener) javax.swing.*; (GUI) java.io.serializable; (Interface) 6

7 1.2 Projektplan Da dieses Projekt zu den Standardprojekten zählt, werden folgende Phasen des Projekts in der Planung berücksichtigt: Problemdefinition Projektplan Modellierung Implementierung Test Abnahme und Präsentation Der Projektplan wird anhand einer Zeittafel und nach eigener Schätzung erstellten Stundenprognose dargestellt. Die erstellten Tabellen spiegeln die wichtigsten Daten wieder und fassen wichtige Informationen (u.a Dauer der Aktivitäten) zusammen. I ZEITTAFEL Monat 1.Woche 2.Woche 3.Woche 4.Woche Oktober Kick off Problemdefinition, Modellierung Projektplan, Modellierung, Umsetzung, Test November 2006 Umsetzung, Test Umsetzung, Test Umsetzung, Test Umsetzung Dezember 2006 Umsetzung, Test Test Januar Korrektur, Test Abnahme, Präsentation Tabelle 1 Zeittafel --- II STUNDENPROGNOSE Projektphasen Stunden pro Woche Anzahl an Wochen Gesamt Kick off 2h 1 2h Problemdefinition 1h 1 1h Projektplan 1h 1 1h Modellierung 2h 2 4h Implementierung 10h 8 80h Test 1h 6 6h Abnahme, Präsentation 1h 1 1h Summe Tabelle 2 Stundenprognose 95h Anschließend wird die Modellierung der gängigen Diagramme erstellt. 7

8 1.3 Modellierung Entspreched der Grundlagenliteratur [BeSt04] werden die wesentlichen Modellierungsdiagramme erstellt, d.h das Klassendiagramm, Sequenzdiagramm, Use Case Diagramm und das Zustandsdiagramm. Die Wahl dieser Diagramme liegt insbesondere daran, dass es sich hier um eine objektorientierte Implementierung handelt. Das Klassendiagramm stellt die wichtigsten Ansatzpunkte für die erfolgreiche Implementierung des Programms dar: die Klassen mit den dazugehörigen Variablen und Methoden sowie die Beziehung zwischen den Klassen. Beim Sequenzdiagramm steht der zeitliche Ablauf von Kommandos im Mittelpunkt [BeSt04]. So ist das Lösen eines Sudoku-Beispiels immer dann möglich, wenn der Generator aktiviert ist, d.h wenn ein Sudoku-Beispiel generiert wurde. Das Use Case Diagramm zeigt insbesondere die Rolle des Benutzers und die des Generators. Sobald der Benutzer ein Kommando abgibt, d.h eine Funktion aktiviert, reagiert der Generator entsprechend darauf. Für das Abfangen möglicher Fehler wird die Ausnahmebehandlung berücksichtigt. Dabei werden entsprechende Exceptions (NullPointerException, NumberFormatException) vom Programm abgefangen. Das Zustandsdiagramm basiert auf der Dynamik der Objekte und ihrer Zustände. Die genannten Diagramme werden anschließend dargestellt. Bild 3 stellt das Klassendiagramm dar. Bild 4 zeigt das Sequenzdiagramm. Das Use Case Diagramm ist im Bild 5 dargestellt und Bild 6 zeigt das Zustandsdiagramm an. 8

9 1.3.1 Klassendiagramm Bild 3 Klassendiagramm 9

10 1.3.2 Sequenzdiagramm Bild 4 Sequenzdiagramm 10

11 1.3.3 Use Case Diagramm Für das bessere Verständnis des Use Case Diagramms wird zunächst der Use Case beschrieben. Use Case Name: Su-do-ku Generator Akteure: Spieler Vorbedingungen: PC oder Notebook mit JDK 5.0 (Java Development Kits), Empfehlung: Starten mit der freiverfügbaren Entwicklungsumgebung Eclipse (Free Download unter Nachbedingungen: Ausreichend Akku-Kapazität oder Kabelanschluss (stellen sicher, dass der Use Case auch tatsächlich erfolgreich zu Ende durchgeführt werden kann) Auslöser: Spieler startet das Programm Ablaufbeschreibung: Nach dem Programmstart kann der Spieler ein neues Su-do-ku generieren oder ein Su-do-ku aus einer Datei öffnen. Der Spieler kann nun das Su-do-ku vom Generator lösen lassen. Es versteht sich von selbst, dass hier die richtige Reihenfolge eingehalten werden soll, ansonsten tritt Ausnahmebehandlung ein (es werden sog. Exceptions ausgelöst). Das Programm kann jederzeit ohne oder mit vorheriger Aktivierung des Generators beendet werden. Fehlsituationen: Mögliche Erwartungsabweichungen hinsichtlich dem System können bei der Benutzeroberfläche des Su-do-ku Generators erkannt werden (lässt sich leicht mit der Umprogrammierung oder Ergänzung im Code beseitigen). Bei der Lösung des Rätsels durch den Spieler können Fehler auftreten, die der Spieler leicht beheben kann, indem er das Rätsel vom Generator kontrollieren lässt. Scheint das Rätsel zu schwierig zu sein, bietet das System Unterstützung in Form der Positions-Pointer. Ist der Benutzer mit dem Generator noch nicht vertraut, können Fehlsituationen entstehen, welche mittels gegebener Hilfestellung ebenfalls beseitigt werden. Variationen: Der Spieler kann ein neues Sudoku generieren, dieses selbst lösen oder es vom Generator lösen lassen. Der Spieler kann das Sudoku aus einer bereits bestehenden Datei öffnen, diese selbst lösen oder vom Generator lösen lassen. Der Spieler kann das generierte Sudoku oder auch das aus der Datei geöffnete Sudoku teilweise lösen und diese in dieselbe Datei oder in eine neue Datei speichern. Der Spieler kann das teilweise gelöste Sudoku vom Generator kontrollieren lassen und nach der Fehlerbehebung weitermachen oder speichern um später weitermachen zu können. Instanzen: Dr. McCallister ließt täglich seine beliebte Tageszeitung. An einem frühen Morgen findet er wie gewohnt seine Zeitung auf dem Frühstückstisch. Nur dieses Mal wurde von der Redaktion der Su-do-ku Teil ausgelassen. Enttäuscht wendet er sich an seine Tochter. Auch seine Tochter ist 11

12 ein Su-do-ku Fan und hat für alle Fälle vorgesorgt: im Laufe des Anwendungsprojekts aus Java hat sie ein Su-do-ku Generator implementiert, welchen sie nun vom Vater testen lässt. Von nun an rätselt Dr. McCallister öfters als nur ein Mal am Tag. Kevin löst gerne Rätsel, nur dass er nie genug davon bekommt. Zuletzt erhielt er von seinem Vater ein ganzes Buch voller Su-do-ku Rätsel und nun sind auch alle diese Rätsel komplett gelöst. Als er an einem ruhigen Abend das Telefonat seiner Schwester belauscht, erfährt er von dem Su-do-ku Generator und nutzt die erste Gelegenheit, die ihm geboten wird. Sobald seine Schwester das Wohnzimmer verlässt (auch wenn es nur für einige Sekunden ist), nimmt Kevin das Notebook seiner Schwester um nach dem Generator Programm zu suchen. Aber erst als ihm seine große Schwester zu Hilfe kommt, kann er das Programm finden. Kevin bekommt ein eigenes Notebook zu Weihnachten und seine Schwester wird ihm den Su-do-ku Generator gerne installieren. Ergebnisse: Nach Beendigung des Use Case lässt sich höhere Zufriedenheit des Spielers feststellen (insbesondere im Vergleich zu alternativen Möglichkeiten, wie z. B Rätsel aus Tageszeitungen). Zudem können die zahlreichen Funktionen zum erneuten Programmstart motivieren und zu einer anderen Zeit weitere Neugier hervorrufen. Nicht-funktionale Anforderungen: Wie gründlich die Funktionen des Su-do-ku Generators vom Spieler erforscht werden, ist völlig dem Spieler überlassen. Der Use Case stellt Anforderungen hinsichtlich der Qualität der Funktionen und der Reihenfolge. Nicht destotrotz kann der Spieler die Funktionen völlig flexibel wählen und entscheidet selbst über die Dauer seines Spiels und über die Art und Weise wie er zur Lösung gelangt. Autorin: Jasna Tusek Ursprung: Dokumentation des Projektes Su-do-ku Generator 12

13 Bild 5 zeigt den zuvor beschriebenen Use Case im Use Case Diagramm. Bild 5 Use Case Diagramm 13

14 1.3.5 Zustandsdiagramm Bild 6 Zustandsdiagramm 14

15 1.4 Implementierung In diesem Kapitel wird die Funktionsweise der einzelnen Projektklassen beschrieben. Die detaillierte Beschreibung dieser Klassen erfolgt in Kapitel Klasse Sudokuzahl Die Klasse Sudokuzahl erzeugt Zufallszahlen zwischen 1 und 9 und speichert diese in eine Liste um sicherzustellen, dass keine Zahl doppelt aufgenommen wird. Jede Zahl, die sich bereits in der Liste befindet, wird nicht mehr gespeichert. Stattdessen wird eine neue Zahl erzeugt Klasse Generator Der Generator führt ein Positionsrandom durch und speichert die einzelnen Sudokuwerte in zweidimensionale Arrays, um die Werte leichter an die Benutzeroberfläche zu übergeben. Dabei werden mehrere Arrays initialisiert. Ein Array stellt das Sudokubeispiel dar, mit dem nächsten Array wird die gesamte Lösung festgehalten und ein drittes Array speichert die Werte aus einer geöffneten Sudoku-Datei Klasse Menü Die Klasse Menü legt alle Funktionen fest, die in der Menüleiste angezeigt werden. Zu jeder Funktion wird das ActionCommand gesetzt und der ActionListener hinzugefügt. Um die einzelnen Funktionen auch über Tastatur auswählen zu können (mittels einer Tastenkombination), wird die Klasse KeyStroke aus dem Paket javax.swing.*; importiert. Anschließend kann die Tastenkombination mittels der Methode setaccelerator(keystroke tastenkombination) der entsprechenden Funktion zugewiesen werden Klasse GUI Die grafische Benutzeroberfläche des Su-do-ku Generators wird mit der Klasse GUI realisiert. Dabei werden die meisten Klassen (JFrame, JFormattedTextField, JPanel, JButton, JTextArea etc.) aus dem Paket importiert. Mit JFormattedTextField werden 81 Su-do-ku Felder implementiert. Das Menü wird an das Frame angehängt und die Methode actionperformed(actionevent e) implementiert Klasse Main Die Klasse Main führt die Hauptmethode aus, mit der das gesamte Programm gestartet wird. 15

16 1.5 Test Im Rahmen des Projekts Su-do-ku Generator werden folgende Klassen hinsichtlich ihrer Funktionalität bzw. der Benutzerfreundlichkeit getestet: Klasse Sudokuzahl Klasse Generator Klasse GUI Klasse Menü Klasse Main (= ganzes Programm) Tabelle 3 zeigt alle getesteten Klassen an, die den Test zufriedenstellend bestanden haben. Monat Testgegenstand Testdatum Testdauer Oktober 2006 Klasse Sudokuzahl h November 2006 Klasse Generator h November 2006 Klasse Menu + GUI h Dezember 2006 Ganzes Programm h Summe 4h Tabelle 3 Getestete Klassen Funktionalität in Details Folgende Klassen werden hinsichtlich ihrer Funktionalität getestet: Klasse Sudokuzahl generiert Zufallszahlen und prüft die erste Su-do-ku Regel. Wird eine Zufallszahl doppelt generiert, wird sie ausgelassen und stattdessen wird eine neue Zahl generiert. Die ersten fünf von neun Zahlen sind Zufallszahlen, die restlichen vier Zahlen werden nacheinander in eine Liste aufgenommen (um eine Endlosschleife zu vermeiden). Diese Liste enthält bei jedem erneuten Durchlauf die Zahlen 1 bis 9 in jeweils unterschiedlicher Reihenfolge. Diese Funktionalitäten sind mit diesem Test bestätigt. Klasse Generator initialisiert einen Durchlauf und speichert die dabei ermittelte Zahlenreihenfolge in eigene Methoden. Immer wenn der Generator aktiviert wird, werden die Sudokuzahlen in unterschiedlicher Reihenfolge gespeichert. Der Test bestätigt auch diese Funktionalität Funktionalität und Benutzerfreundlichkeit in Details Folgende Klassen werden insbesondere hinsichtlich ihrer Benutzerfreundlichkeit, aber auch hinsichtlich ihrer Funktionalität getestet: Klasse GUI stellt die notwendige Benutzeroberfläche dar. Daher werden insbesondere Funktionen, welche die Benutzerfreundlichkeit optimieren, berücksichtigt. Mit der Verwendung einer eigenen Menüleiste und dem KeyListener (siehe Klasse Menü) wird das Ziel verwirklicht. Das Programm wird erfolgreich implementiert und besteht den Test. 16

17 Klasse Menü erbt von JMenuBar die notwendigen Komponenten und sorgt für entsprechende Benutzerfreundlichkeit des Programms. Die Klasse Menü wird in das Frame der Klasse GUI eingefügt. Test bestätigt die vollständige Funktionalität. Mit der Klasse Main werden sowohl die Funktionalität als auch die Benutzerfreundlichkeit, d.h. das gesamte Programm getestet. Mit diesem Test werden die Mängel erkannt und beseitigt Plattformunabhängkeit Der Generator wird auch auf Plattformunabhängigkeit getestet. Tabelle 4 zeigt das Ergebnis an. Betriebssystem Voraussetzung Ergebnis Testdatum Windows Java 5.0 OK Linux Java 5.0 OK Mac OS X Java Mac OS X Tiger (already preinstalled) Tabelle 4 Plattformunabhängkeit Der Screenshot im Bild 7 zeigt den Prototyp und im Hintergrund die Eclipse mit der das Programm implementiert wurde. Die Klassen, die für das Programm verwendet werden, sind in eigenen Subfenstern zu sehen, dabei ist die Klasse Main jene, die aktiv ist da für den Start des Programms genau diese Klasse aufgerufen werden muss. Darunter ist die Console abgebildet, welche Informationen über das erfolgreiche Generieren von Sudokuzahlen liefert. Um die Details zu sehen, müsste man einfach hinaufscrollen. Um die Details des Codes gut nachzuvollziehen, ist es daher ratsam, dass Programm mit der Eclipse starten zu lassen um auch Zugriff zu den Informationen in der Console zu erhalten. Bild 7 Prototyp mit Eclipse im Hintergrund 17

18 1.5.4 Getestete Funktionen Die Tabelle 5 zeigt alle getesteten Funktionen in der Reihenfolge, in welcher sie auch in der Menüleiste angezeigt werden um sicherzustellen, dass keine Funktion ausgelassen wird. Funktion Testergebnis Testdatum Programmstart Menü: DATEI Menü-Funktion: Neu Menü-Funktion: Datei öffnen Menü-Funktion: Su-do-ku öffnen Menü-Funktion: Su-do-ku speichern Menü-Funktion: Übersicht Menü-Funktion: Beenden Menü: BEARBEITEN Menü-Funktion: Su-do-ku generieren Menü-Funktion: Su-do-ku vereinfachen Menü-Funktion: Su-do-ku lösen Menü-Funktion: Einträge kontrollieren Menü-Funktion: Eingaben löschen Menü: ANSICHT Menü-Funktion: Position Menü-Funktion: Position Menü-Funktion: Position Menü-Funktion: Position Menü-Funktion: Position Menü-Funktion: Position Menü-Funktion: Position Menü-Funktion: Position Menü-Funktion: Position Menü-Funktion: Alle Positionen aktivieren Menü-Funktion: Info zu Positionen Menü: OPTIONEN Menü-Funktion: Hintergrund-Farben Menü-Funktion: Hintergrund deaktivieren Menü-Funktion: Info zu Hintergrund Menü: HILFE 18

19 Funktion Testergebnis Testdatum Menü-Funktion: Welcome Menü-Funktion: Hilfe Menü-Funktion: Info zu Su-do-ku Button: Neues Su-do-ku generieren Tabelle 5 Getestete Funktionen des Su-do-ku Generators 1.6 Abnahme und Präsentation Der Termin wird mit dem Projektleiter festgelegt. Das Projekt wird zum gegeben Zeitpunkt, jedoch spätestens am , präsentiert. 2. Projekt-API Die Java-Bibliothek stellt zahlreiche Hilfspakete zur Verfügung. Für das vorliegende Projekt ist der Import von Klassen aus folgenden Paketen erforderlich: 1. java.util.*; 2. java.io.*; 3. java.awt.*; 4. javax.swing.*; 5. java.net.*; 2.1 Java.util.*; Aus dem Paket Java.util.*; wird eine neue Instanz von LinkedList erzeugt. LinkedList liste = new LinkedList(); Die verlinkte Liste wird in der Klasse Sudokuzahl implementiert um mit Hilfe dieser Liste einerseits sicherzustellen, dass keine Zahl doppelt in die Liste aufgenommen wird und andererseits eine entsprechende Reihenfolge der Sudokuzahlen zu gewährleisten. 2.2 Java.io.*; Aus dem Paket Java.io.*; werden neue Objekte von FileReader und BufferedReader erzeugt. File datei; BufferedReader in = new BufferedReader(new FileReader(datei)); 19

20 Der FileReader ließt jene Datei ein, die dem FileReader-Konstruktor übergeben wird. Diese Datei ist der übergebene Parameter von Typ File. Weiters wird die neu erzeugte FileReader-Instanz an BufferedReader übergeben. Der BufferedReader ließt nun den übergebenen Parameter ein. In der Klasse Generator werden File, FileReader, BufferedReader und IOException importiert. Für die Klasse GUI ist der Import von File, FileReader, FileWriter, BufferedReader und BufferedWriter erforderlich, da das Speichern und Öffnen von Dateien implementiert werden. Zudem wird auch die Klasse IOException importiert um die beim Speichern und Öffnen auftretenden Fehler abzufangen. Das Programm kann somit mit Hilfe der Ausnahmebehandlung optimiert werden. 2.3 Java.awt.*; Aus dem Paket Java.awt.*; werden die Klassen Event und Color importiert um die Menüleiste zu formatieren. Die Klasse Event wird als Hilfsklasse verwendet und wird insbesondere bei der Implementierung der Tastenkombination (siehe KeyStroke im Paket javax.swing.*;) herangezogen. Das Paket Java.awt.*; stellt auch das Paket Java.awt.event.*; zur Verfügung. Aus dem Event-Paket werden ActionListener und KeyEvent importiert, welche insbesondere in der Klasse Menü zum Einsatz kommen. In der Klasse GUI werden die ActionListener und ActionEvent aus dem genannten Paket importiert. 2.4 Javax.swing.*; Das Paket Javax.swing.*; stellt die wesentlichsten Komponenten zur Implementierung der Benutzeroberfläche dar. Für die Implementierung einer Menüleiste sind daher insbesondere JMenuBar, JMenu und JMenuItem erforderlich und werden daher aus dem genannten Paket importiert. Zudem werden auch ButtonGroup, JRadioButtonMenuItem und JCheckBoxMenuItem importiert. Eine Menüleiste wird mit Hilfe der Vererbung realisiert: public class Menu extends JMenuBar{... } Jedes einzelne Menüpunkt wird mit der Erzeugung einer neuen Instanz der Klasse JMenu implementiert. JMenu menu; menu = new JMenu("Datei"); menu = new JMenu("Bearbeiten"); menu = new JMenu("Ansicht"); menu = new JMenu("Optionen"); menu = new JMenu("Hilfe"); Einzelne Menüfunktionen werden mit Hilfe von JMenuItem initialisiert, indem jeweils eine neue Instanz von JMenuItem erzeugt wird: JMenuItem welcome; welcome = new JMenuItem("Welcome"); 20

21 Die Erzeugung eines ButtonGroup Objekts ermöglicht das Selektieren jeweils eines einzelnen Objekts vom Objektdatentyp JRadioButton bzw. JRadioButtonMenuItem. Unter dem Menüpunkt Optionen kann die Hintergrundfarbe des Su-do-ku Generators verändert werden. Wird nun Silber eingestellt, kann nicht gleichzeitig auch Gold eingestellt werden. Bei jeweiligem Funktionsaufruf wird daher die Hintergrundfarbe geändert, in diesem Fall von Silber auf Gold. Die Klasse JCheckBoxMenuItem dient der Implementierung einer True-False Beziehung. Ist die entsprechende Funktion selektiert dann erhält die boolean-variable den Wert true, sonst erhält sie den Wert false: JCheckBoxMenuItem checkbox; checkbox = new JCheckBoxMenuItem("Hintergrund nicht definiert", false); Für die Menüleiste ist zudem der Import der Klasse KeyStroke erforderlich um die Tastenkombinationen der einzelnen Funktionen zu implementieren. JMenuItem generieren; generieren = new JMenuItem("Su-do-ku generieren"); generieren.setaccelerator(keystroke.getkeystroke(keyevent.vk_1, Event.ALT_MASK)); Die Menüfunktion Su-do-ku generieren kann mit der Tastenkombination ALT+1 aktiviert werden. Weitere aus dem genannten Paket importierte Klassen werden in Kaptel 4 näher erläutert, da die Beschreibung der grafischen Benutzeroberfläche für diesen Abschnitt zu umfangreich ist. 2.5 Java.net.*; Aus dem Paket Java.net.*; wird der Uniform Resource Locator (=URL) importiert. Mithilfe der URL-Adresse können Objekte aus dem World Wide Web in das Programm eingefügt werden. Im Falle des Su-do-ku Generators wird ein PNG-Objekt eingefügt, d.h ein selbsterstelltes Su-do-ku Bild. String name; //Name des Bildes (=icon.png) URL imgurl = GUI.class.getResource(name); 3 Besonderheiten Die wesentlichsten Besonderheiten für den Su-do-ku Generator sind die Ausnahmebehandlung und die zweidimensionalen Arrays. Die Ausnahmebehandlung sorgt für das Abfangen von möglichen Fehlern. Die zweidimensionalen Arrays helfen bei der korrekten Generierung von Sudokuzahlen. 3.1 Ausnahmebehandlung (= Exceptions) In der Klasse Generator wird die Ausnahmebehandlung mithilfe der Try-Catch Schleife 21

22 berücksichtigt. String datei; try{ BufferedReader in = new BufferedReader(new FileReader(datei));... }catch (IOException ex){ System.err.println(ex); } Beim Öffnen eines Su-do-ku aus einer bereits bestehenden Datei werden die Zahlen aus der Datei gelesen und vom Generator interpretiert. Die Zahl Null steht für ein leeres Feld, restliche Zahlen von 1 bis 9 werden übernommen, so dass der Generator nach erfolgreichem Einlesen das Su-do-ku auch selbstständig lösen kann. In der Klasse GUI werden überall dort Try-Catch-Schleifen implementiert, wo eine Ausnahme (=Exception) auftreten kann. Try{... }catch(numberformatexception nf){ System.err.println(nf); }catch(nullpointerexception np){ System.err.println(np); } 3.2 Zweidimensionales Array In der Klasse Generator werden drei verschiedene Integer-Arrays implementiert. Alle drei sind zweidimensionale Arrays, die zumindest einer 9x9 Sudokumatrix entsprechen. 1. Integer[][] wert; 2. Integer[][] daten; 3. Integer[][] zahl; Das erste Array wert speichert die vom Generator erzeugten Werte in der richtigen Reihenfolge. Dabei wird insbesondere die zweite Su-do-ku Bedingung berücksichtigt: keine Sudokuzahl darf auf einer und derselben Position doppelt vorkommen (egal in welchem Subquadraten sich die Zahl befindet). Das erste Array speichert alle 81 Werte in der richtigen Position und stellt daher auch die Lösung des Su-do-ku dar. Das zweite Array daten speichert die aus einer Datei gelesenen Werte, ebenfalls in der richtigen Reihenfolge und in der richtigen Position. Der Unterschied liegt nur darin, dass die Werte nicht generiert werden müssen. Das dritte Array zahl übernimmt nur einzelne Werte des ersten Arrays und gibt ein Su-do-ku Beispiel aus. Welche Sudokuzahlen nun ausgegeben werden und welche Felder leer bleiben, hängt daher zum Großteil vom dritten Array ab. 22

23 4 Grafische Benutzeroberfläche Für eine benutzerfreundliche grafische Oberfläche werden zahlreiche Klassen aus dem Paket Javax.swing.*; importiert. Alle in diesem Kapitel angeführten Klassen werden in der Klasse GUI verwendet. 4.1 GUI-Komponenten Die wesentlichsten Klassen sind JMenu, JFrame, JPanel, JButton, JFormattedTextField und JTextArea. Zusätzliche Komponenten werden implementiert um einerseits die Benutzeroberfläche zu optimieren (JTabbedPane) und andererseits Hilfestellung (JOptionPane) anzubieten JFrame Die Klasse JFrame stellt das Fenster des Su-do-ku Generators dar. Der übergebene Parameter vom Typ String ist der Name des Fensters. JFrame frame; frame = new JFrame("Su-do-ku Generator"); JMenu In der Klasse GUI wird eine neue Instanz vom Objektdatentyp Menü in einer eigenen Methode, newmenu() mit dem Rückgabewert Menü, erzeugt: public Menu newmenu(){ menubar = new Menu(this); return menubar; } Daraufhin wird das Menü an das Frame mit Hilfe der Methode setjmenubar() angehängt: frame.setjmenubar(newmenu()); JPanel Für die Benutzeroberfläche werden die notwendigen JPanels initialisiert. JPanel mainpanel; mainpanel = new JPanel();... 23

24 4.1.4 JButton Im vorliegenden Projekt wird nur ein JButton initialisiert, nämlich für die wesentlichste Funktion eines Generators: neues Su-do-ku generieren. JButton taste = new JButton("Neues Su-do-ku generieren"); taste.addactionlistener(this); taste.setactioncommand("generieren"); Zudem wird der JButton an das JFrame angehängt. frame.add(taste, BorderLayout.PAGE_END); JButton mit dem Namen taste wird an das Ende des Frames (PAGE_END) angehängt JFormattedTextField Der Default-Konstruktor der Klasse JFormattedTextField erstellt ein einfaches JTextField, welches die Eingabe und Änderung von Textzeichen ermöglicht. Jedes Textfeld ermöglicht die Darstellung nur einer Zeile. In Verbindung mit den LayoutManagern (siehe Kapitel 4.2) ist die Größe dieser formatierten Felder mit der Größe des Fensters abstimmbar. Wird das JFrame-Fenster vergrößert, dann werden die einzelnen JFormattedTextFields größer und vice versa JTextArea Mit der Klasse JTextArea wird ein Textbereich dargestellt, welches im Vergleich zu JTextField die Darstellung von vielen Zeilen ermöglicht. JTextArea wird für die Darstellung des Inhalts der geöffneten Su-do-ku Datei verwendet. Zudem wird auch der Willkommenstext im Textbereich dargestellt JTabbedPane Die Benutzeroberfläche des Su-do-ku Generators beinhaltet zwei anklickbare Karten. Die erste Karte, die defaultmäßig selektiert wird (sudokuborder), zeigt das Su-do-ku Gitter und die zweite Karte ist defaultmäßig im Hintergrund und zeigt den Textbereich (textborder). Die erste Karte hat stets den Index 0, die zweite hat den Index 1 usw. JTabbedPane tabbedpane; tabbedpane = new JTabbedPane(); tabbedpane.addtab("su-do-ku", icon2, sudokuborder, null); tabbedpane.addtab("information", icon2, textborder, null); tabbedpane.setselectedindex(0); 24

25 Anschließend wird JTabbedPane in das Fenster (frame) eingefügt und zentriert: frame.add(tabbedpane, BorderLayout.CENTER); JOptionPane Der Su-do-ku Generator bietet nicht nur bei Ausnahmen Hilfestellung in Form von Standardialogen sondern auch Informationen und Spielregeln zu Farb-Sudoku. Die Standardialoge öffnen in einem neuen Fenster und zeigen die Information an. Welche Information nun wie angezeigt wird, hängt davon ab, welche Methode aufgerufen wird. Im Rahmen des Su-do-ku Generators werden zwei Methoden aus der Klasse JOptionPane aufgerufen: 1. JOptionPane.showMessageDialog(frame, "\nproject: Su-do-ku Generator\nAuthor: Jasna Tusek\n\nFor Players Of All Countries\nGreetings from Croatia and Austria", "INFO zu SU-DO-KU Generator", JOptionPane.INFORMATION_MESSAGE); 2. JOptionPane.showConfirmDialog(frame, "Programm jetzt beenden?", "beenden", JoptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE); Die erste Methode zeigt ein Dialog mit einer Nachricht. Die zweite Methode zeigt ein Dialog mit der Option. Dabei ist eine Bestätigung erforderlich. Der Su-do-ku Generator wird daher erst nach erfolgreicher Bestätigung geschlossen. 4.2 Layout-Manager Das Design eines Programms wird überwiegend vom Layout-Manager bestimmt. Der Layout- Manager kann die Komponenten unterschiedlich anordnen, wie sie jeweils gut zusammenpassen. Der Vorteil eines Layout-Managers liegt insbesondere an der automatischen Anpassung der Komponentengröße. Wird das Fenster verkleinert, dann werden proportional auch die einzelnen Komponenten verkleinert und vice versa. Für das vorliegende Projekt werden folgende Layout-Manager verwendet: GridLayout, BoxLayout und BorderLayout GridLayout Die Klasse GridLayout ordnet mehrere Komponenten in Zeilen und Spalten und bestimmt den Abstand zwischen den Komponenten. JPanel sudokupanel, panel1, panel2... panel9; sudokupanel = new JPanel(new GridLayout(3, 3, 15, 15)); sudokupanel.add(panel1); sudokupanel.add(panel2);... sudokupanel.add(panel9); 25

26 Die neun Panels werden an das sudokupanel angehängt und in drei Zeilen und drei Spalten angeordnet mit dem horizontalen und vertikalen Abstand zwischen den Komponenten von 15. Jeder dieser Panels besitzt neun Textfelder, die ebenfalls in 3 Zeilen und 3 Spalten angeordnet sind. Das Resultat dieser Konstruktion ist das Su-do-ku Gitter bestehend aus 81 Textfeldern BoxLayout Mit der Klasse BoxLayout werden Komponenten entweder in horizontaler (BoxLayout.X_AXIS) oder in vertikaler Richtung (BoxLayout.Y_AXIS) angeordnet. Zudem können weitere zwei Ausrichtungen bestimmt werden: BoxLayout.LINE_AXIS und BoxLayout.PAGE_AXIS. JPanel sudokuborder, textborder; sudokuborder.setlayout(new BoxLayout(sudokuBorder, BoxLayout.PAGE_AXIS)); textborder.setlayout(new BoxLayout(textBorder, BoxLayout.PAGE_AXIS)); BorderLayout Mit dem BorderLayout wurde die Komponente tabbedpane ins Zentrum des Fensters gerückt und die Komponente taste an das Fensterende. frame.add(tabbedpane, BorderLayout.CENTER); frame.add(taste, BorderLayout.PAGE_END); 5. Beschreibung der Projektklassen Die wesentlichen Merkmale der Projektklassen sind ihre Variablen, Methoden und Modifizierer. Die Konstruktoren sind spezielle Methoden und werden daher unter Methoden zusammengefasst. 5.1 Klasse Sudokuzahl Die Klasse Sudokuzahl besitzt zwei Variablen und folgende Methoden: 1. Sudokuzahl() 2. generierezufallszahl() 3. generieresudokuzahl() 4. restlichewerte() 26

27 5.1.1 Variablen Zunächst wird die Variable zahl vom primitiven Datentyp integer deklariert und anschließend die Variable liste vom Objektdatentyp List initialisiert. private int zahl; private List liste = new LinkedList(); Methoden Der Default-Konstruktor der Klasse Sudokuzahl ruft die Methode generierezufallszahl() auf. public Sudokuzahl(){...} Die Methode generierezufallszahl() ruft aus der Klasse Math die Methode random() auf und generiert eine Zufallszahl zwischen 1 und 9. Diese Zufallszahl ist zugleich der Rückgabewert vom Typ integer. public int generierezufallszahl() { zahl = (int)(9*math.random()+1); //liefert eine Zahl zwischen 1 und 9 return zahl; } Die Methode generieresudokuzahl() ruft die Methode generierezufallszahl() auf und prüft ob die Zahl bereits in der Liste enthalten ist. Ist dies nicht der Fall wird die Zahl der Liste hinzugefügt. Jede Zahl, die in die Liste hinzugefügt wird, ist zugleich auch der Rückgabewert dieser Methode vom Typ integer. public int generieresudokuzahl(){... return naechstezahl; } Die Methode restlichewerte() fügt jene Zahlen von 1 bis 9, die noch nicht in der Liste enthalten sind, der Reihe nach hinzu. Jene Zahl, die der Liste hinzugefügt wird, wird von der Methode zurückgegeben. public int restlichewerte(){... return zahl; } Modifizierer Alle Methoden sind öffentlich zugänglich (public), das heißt aus anderen Klassen kann auf diese Methoden zugegriffen werden. Auf die Variablen zahl und liste kann nicht zugegriffen werden, da 27

28 dies auch nicht notwendig ist. Daher sind die deklarierten Variablen mit private versehen. 5.2 Klasse Generator Die Klasse Generator besteht aus zahlreichen Variablen, jeweils neun Variablen für neun Sudokuzahlen und neun Positionen. Die implementierten Methoden sorgen für einen reibungslosen Programmablauf Variablen Die zweidimensionalen Arrays vom Typ Integer zählen zu den wesentlichsten deklarierten Variablen. Die Arrays speichern die Sudokuwerte. Damit aber richtige Werte gespeichert werden, werden die generierten Sudokuzahlen vorübergehend in den Variablen a, b... i festgehalten. Die Werte der einzelnen Positionen werden in den Variablen p1, p2... p9 gelagert. private int a, b, c, d, e, f, g, h, i; private boolean p1, p2, p3, p4, p5, p6, p7, p8, p9; private Integer[][] wert; private Integer[][] daten; private Integer[][] zahl; private Sudokuzahl sudokuzahl; Methoden Die Klasse Generator besitzt folgende Methoden: 1. Generator() Der Default-Konstruktor erzeugt eine Instanz vom Objektdatentyp Sudokuzahl und ruft die Methoden generierezahl(sudokuzahl zahl) und bestimmeposition() auf. public Generator(){ System.out.println("\nGenerator aktiviert"); sudokuzahl = new Sudokuzahl(); generierezahl(sudokuzahl); bestimmeposition(); System.out.println("\nGenerieren abgeschlossen"); } 2. Generator(File datei) Der Konstruktor mit dem Parameter datei vom Typ File ließt den übergebenen Parameter ein und speichert die Werte in das zweidimensionale Array. Mit dem Aufruf der Methode setsudokuzahl(daten) werden die gespeicherten Werte in entsprechenden Variablen festgehalten. 28

29 public Generator(File datei){... try{ BufferedReader in = new BufferedReader(new FileReader(datei)); daten[zeile][spalte] = new Integer(aktuelleZeile.charAt(1..n)+"");... } in.close(); }catch (IOException ex){ System.err.println(ex); } setsudokuzahl(daten); } 3. setwerte() setzt die richtigen Werte auf die richtige Stelle. Um eine Verwechslung zu vermeiden werden die Werte in ein neues Array gespeichert. public void setwerte(){ wert = new Integer[10][10]; wert[1..9][1..9] = new Integer(zeigeErsteZahl()... zeigeneuntezahl());... } 4. setsudokuzahl(integer[][] daten) die Werte aus der Datei werden den Variablen zugewiesen um daraufhin auch die ungelösten Felder lösen zu können. public void setsudokuzahl(integer[][] daten){... if(daten[1..9][1..9].intvalue()!= 0){a, b,... i = daten[1..9][1..9].intvalue();} } Damit nun das ganze Sudokubeispiel gelöst werden kann, müssen die Sudokuzahlen 1, mindestens einmal in der Datei vorkommen. 5. zeigesudoku(int zeile, int spalte) Diese Methode wird immer dann aufgerufen, wenn ein Sudokuwert aus einer Datei angezeigt werden soll. Die übergebenen Parameter zeile und spalte vom Typ integer geben an, welcher Wert zurückgegeben werden soll. public int zeigesudoku(int zeile, int spalte){ int sudokuzahl= daten[zeile][spalte].intvalue(); return sudokuzahl; } 6. generierebeispiel() Mit der Methode generierebeispiel() werden die Werte aus dem Array wert einzeln selektiert und jene Werte, die im Beispiel angezeigt werden sollen, werden dem Array zahl zugewiesen. 29

30 7. generieresudoku(int zeile, int spalte) Diese Methode ruft die Methode generierebeispiel() auf. Die Methode selbst wird von der Klasse GUI aufgerufen. public int generieresudoku(int zeile, int spalte){ generierebeispiel(); int sudokuzahl = zahl[zeile][spalte].intvalue(); return sudokuzahl; } 8. loesesudoku(int zeile, int spalte) liefert die Lösung des Sudoku für jedes Feld. Der einmalige Aufruf gibt eine Sudokuzahl zurück. Die Lösung eines Sudokubeispiels besteht aus 81 Feldern, so dass die Methode 81 mal aufgerufen wird. public int loesesudoku(int zeile, int spalte){ int sudokuzahl= wert[zeile][spalte].intvalue(); return sudokuzahl; } 9. generierezahl(sudokuzahl zahl) Wird ein Sudokubeispiel vom Generator generiert, dann wird die Methode generierezahl(sudokuzahl zahl) aufgerufen. Diese Methode weist die generierten Sudokuzahlen den Variablen a, b,... i zu. public void generierezahl(sudokuzahl zahl){ a = zahl.generieresudokuzahl();... i = zahl.restlichewerte(); } 10. bestimmeposition() Zudem werden in der Methode bestimmeposition() die boolean Werte den einzelnen Positionen zugewiesen. Mittels einfachem Math.random wird bei fünf von neun Positionen der boolean Wert auf true geändert. Defaultmäßig haben die restlichen vier Positionen den boolean Wert false. Diese Methode entscheidet maßgeblich darüber welche Werte tatsächlich im Sudokubeispiel ausgegeben werden. 11. zeigeerstezahl()... zeigeneuntezahl(); isp1,... isp9, setp1,... setp9 Für die Speicherung der neun Sudokuzahlen und neun Positionen dienen restliche Methoden: Modifizierer zeigeerstezahl(), zeigezweitezahl... zeigeneuntezahl() isp1, isp2... isp9 setp1, setp2... setp9 Das einfache Prinzip wurde auch in der Klasse Generator umgesetzt. Die Variablen bleiben für 30

31 weitere Klassen unsichtbar (private), während die Methoden auch von anderen Klassen abrufbar sein sollen (public). 5.3 Klasse Menü Die Menüleiste des Su-do-ku Generators wird mit der Klasse Menü implementiert. Die zahlreichen Funktionen des Generators werden als eigene Variablen initialisiert, die meisten Variablen sind vom Objektdatentyp JMenu bzw. JMenuItem Variablen Zusätzlich zu den Variablen vom Typ JMenu und JMenuItem ist es erforderlich folgende Variablen zu deklarieren: ActionListener listener; ButtonGroup buttongroup; Der ActionListener-Parameter wird an den Konstruktor übergeben Methoden Der Konstruktor mit dem Parameter vom Typ ActionListener ist die einzige notwendige Methode, mit der auch die gesamte Menüleiste implementiert werden kann. Besonderheiten sind die Implementierung der Tastenkombination, mit der ebenfalls Funktionen aufgerufen werden können. JMenuItem neu; neu.setaccelerator(keystroke.getkeystroke(keyevent.vk_1, Event.CTRL_MASK)); Damit die Funktion auch erkannt wird, wird ein Kommando gesetzt und der Listener (Zuhörer) hinzugefügt. neu.setactioncommand("neu"); neu.addactionlistener(listener); Zudem muss die Hierarchie der Komponenten eingehalten werden. Die einzelnen Funktionen werden jeweils dem übergeordneten Menü (Datei, Bearbeiten, Ansicht, Optionen oder Hilfe) zugewiesen und diese Menüs werden wiederum einem übergeordneten Menü hinzugefügt. JMenuItem gold, silber; layout.add(gold); layout.add(silber); menu.add(layout); Zum Beispiel werden die Variablen gold und silber zuerst dem übergeordneten JMenu layout 31

32 zugeordnet. Daraufhin wird layout wiederum dem übergeordneten JMenu menu zugewiesen Modifizierer Die Variable listener vom Typ ActionListener wird außerhalb der Klasse Menü aufgerufen und enthält daher den Modifizierer public. Bei der Implementierung von serialisierbaren Komponenten (z.b Klassen mit dem Interface Serializable) wird stets die Deklaration der Variable static final serialversionuid vom Typ long verlangt. In diesem Fall erbt die Klasse Menü die Komponenten der Klasse JMenuBar und zählt daher ebenfalls zur serialisierbaren Klasse. 5.4 Klasse GUI Für das Design der grafischen Benutzeroberfläche muss die Hierarchie der Komponenten eingehalten werden. Textfelder und Textbereiche werden an JPanels angehängt, und mehrere JPanels werden einem übergeordneten JPanel zugewiesen, dieser JPanel wird wiederum an das übergeordnete JFrame angehängt. Die eingesetzten Layout-Manager sorgen dafür, dass die unterschiedlichen Komponenten auch in der gewünschten Reihenfolge angezeigt werden Variablen Die Klasse GUI erbt von der Klasse JFrame und zählt somit genauso wie die Klasse Menü zu den serialisierbaren Klassen. Somit wird auch hier die Deklaration der Variable static final serialversionuid notwendig. Die restlichen Variablen sind entweder vom primitiven Datentyp (int, boolean) oder vom Objektdatentyp (String, JFrame, Menu, JTextArea, JPanel, JFormattedTextField[][], JTabbedPane und Generator) Methoden Folgende Methoden (inkl. Default-Konstruktor) werden in der Klasse GUI implementiert: 1. GUI() die wichtigsten Komponenten des Programms (JFrame, JPanel, JTabbedPane) werden schon im Konstruktor initialisiert. Auch notwendige Methoden (newmenu() und newsudokupanel()) werden aufgerufen, so dass defaultmäßig ein leeres Sudoku-Gitter angezeigt wird. 2. newmenu() erzeugt neue Instanz vom Typ Menü 3. newsudokupanel() liefert die grafische Benutzeroberfläche des Su-do-ku Gitters 4. newgenerator() 32

33 aktiviert Generator, d.h neue Instanz vom Typ Generator wird erzeugt und die Sudokuwerte werden initialisiert 5. zeigeimageicon(string name) zeigt den übergebenen Parameter an, in diesem Fall ein PNG-Objekt 6. oeffnedatei(file datei) öffnet den übergebenen Parameter vom Typ File. D.h nur Dateien mit der Endung.txt werden geöffnet, sonstige Dateien werden nicht geöffnet. Der Inhalt wird im Textbereich angezeigt. 7. oeffnesudoku(file datei) öffnet zwar auch eine Datei, jedoch wird der Inhalt direkt im Sudoku Gitter angezeigt, so dass dieses Sudoku zugleich gelöst werden kann. 8. speicheresudoku(file datei) speichert Sudoku in das übergebene Parameter vom Typ File. 9. zeigehintergrund(int i) zeigt die Hintergrundfarbe von der jeweiligen Position an. Der übergebene Parameter i bestimmt welche Position angezeigt wird. Der übergebene Parameter i kann die Werte 1 bis 9 einnehmen, da es neun verschiedene Positionen gibt. 10. actionperformed(actionevent e) behandelt alle Erreignisse. Jene Funktion, die vom Benutzer abgerufen wird, wird von der Methode erkannt, so dass anschließend der - diesem Kommando zugewiesene - Programmcode ausgeführt wird Modifizierer Alle Methoden mit Ausnahme der zeigeimageicon(string name) werden public deklariert. Die Klasse zeigeimageicon(string name) kann auf bestimmte Objekte im World Wide Web zugreifen und wird daher vor unerlaubtem Zugriff außerhalb der Klasse geschützt, d.h protected. protected static ImageIcon zeigeimageicon(string name) { URL imgurl = GUI.class.getResource(name);... } 5.5 Klasse Main Die Klasse Main dient der Dokumentationsfunktion und ergänzt somit die Javadoc. Zudem startet sie das gesamte Programm mithilfe der Hauptmethode. Die Deklaration von Variablen ist in dieser Klasse nicht notwendig. Zusätzlich wird der Default-Konstruktor implementiert. Um für die Javadoc ersichtlich zu werden, wird die Initialisierung der grafischen Benutzeroberfläche ebenfalls in einer eigenen Methode implementiert. Alle Methoden werden public deklariert. 33

34 6. Installation und Wartung Um das Programm starten zu können, ist die Java-Software erforderlich. Diese kann kostenlos runtergeladen und installiert werden. Free Download der Software: Java Entwicklungsumgebung Editor Zusammengefasst besteht das Programm Su-do-ku Generator aus folgenden -Klassen: Sudokuzahl, Generator, Menu, GUI, und Main. Daher müssen diese Klassen zuerst installiert und kompiliert werden. Daraufhin ist der Benutzer aufgefordert die Hauptklasse aufzurufen. Mit dem Aufruf der Hauptklasse Main wird das Programm gestartet. An den einwandfreien Betrieb wurde bereits bei der Implementierung des Codes gedacht. So werden mögliche Fehler vom Programm abgefangen. Zudem wird dem Benutzer notwendige Hilfestellung geboten. Funktionen wie das Speichern und Öffnen von Su-do-ku erfordert zudem eine genaue Einstellung des Verzeichnisses auf welches der Generator zugreifen soll. Im Original-Programmcode ist das Verzeichniss C:\\ eingestellt: file.setdirectory("c:\\dokumente und Einstellungen\\Admin\\workspace\\"); Wird mit dem Betriebssystem Windows XP gearbeitet, ist lediglich der Administratorname (Admin) anzupassen. Unter Mac OS X (Tiger) und Linux kann das Verzeichnis von Fall zu Fall variieren (z.b Name des Servers, persönliche Präferenzen und Einstellungen, etc.). Der Verzeichnisname unter Linux kann folgendermaßen lauten: /srv/ai/xmbalrog/home/j99/j /workspace/ Unabhängig davon auf welchem Betriebssystem gearbeitet wird, sollten alle Sudoku-Dateien in dem workspace-ordner gespeichert werden, um einen reibungslosen Programmablauf zu garantieren. Der workspace-ordner wird von der Eclipse automatisch erzeugt. Wird der workspace- Ordner umbenannt, muss auch dieser im Verzeichnisname angepasst werden. Die Änderung des Verzeichnisses kann in der Methode actionperformed(actionevent e) aus der Klasse GUI durchgeführt werden. Der Befehl zum Setzen des Zugriffsverzeichnisses lautet: file.setdirectory("...\\...\\...\\workspace\\"); 34

35 7. Fazit Mit dem Programm Su-do-ku Generator wurde ein eigens entwickeltes Algorithmus für Farb- Sudoku implementiert. Bei der Entwicklung des Algorithmus wurde von Bedingungen des Rätsels ausgegangen. Der Farb-Sudoku erfüllt im Vergleich zu dem gängigen Su-do-ku eine spezielle Bedingung: keine Zahl darf auf einer und derselben Farbe (d.h Position) doppelt vorkommen. Die eigentliche Herausforderung im Rahmen dieses Projekts lag in der Implementierung eines Algorithmus, der auch die spezielle Bedingung berücksichtigt. Das gesamte Programm stellt Open Software dar und ist daher für private Zwecke frei nutzbar. Die Autorin wünscht viel Spaß mit dem Su-do-ku Generator. Bild 8 Getestete Version des Su-do-ku Generators 35

36 Bildverzeichnis Bild 1 Su-do-ku Feld...5 Bild 2 Gliederung des Su-do-ku in Positionen...6 Bild 3 Klassendiagramm...9 Bild 4 Sequenzdiagramm...10 Bild 5 Use Case Diagramm...13 Bild 6 Zustandsdiagramm...14 Bild 7 Prototyp mit Eclipse im Hintergrund...17 Bild 8 Getestete Version des Su-do-ku Generators df Tabellenverzeichnis Tabelle 1 Zeittafel...7 Tabelle 2 Stundenprognose...7 Tabelle 3 Getestete Klassen...16 Tabelle 4 Plattformunabhängigkeit...17 Tabelle 5 Getestete Funktionen des Su-do-ku Generators...18 dk 36

37 Literaturverzeichnis [Abts02] Abts, Dietmar: Grundkurs Von den Grundlagen bis zu Datenbank- und Netzanwendungen, Friedr. Vieweg & Sohn Verlag GmbH, 3. Auflage, Braunschweig/Wiesbaden [BeSt04] Bernroider, Edward; Stix, Volker: Grundzüge der Modellierung Anwendungen für die Softwareentwicklung, Facultas Verlag- und Buchhandels AG, Wien [Diet01] Dieterich, Ernst-Wolfgang: Java 2 Von den Grundlagen bis zu Threads und Netzen, Oldenbourg Wirtschaftsverlag GmbH, 2. Auflage, München [ScSc99] Schader, Martin; Schmidt-Thieme, Lars: Java Eine Einführung, Springer-Verlag, Heidelberg

Java Projekt: Tic Tac Toe + GUI

Java Projekt: Tic Tac Toe + GUI Java Projekt: Tic Tac Toe + GUI Rechnerpraktikum aus Programmierung im WS 2005/06 unter der Leitung von Dr. Michael Hahsler Tadeh Amirian (h0253821) 10.01.2006 1) Problemdefinition Beim TicTacToe Spiel

Mehr

Mit der Maus im Menü links auf den Menüpunkt 'Seiten' gehen und auf 'Erstellen klicken.

Mit der Maus im Menü links auf den Menüpunkt 'Seiten' gehen und auf 'Erstellen klicken. Seite erstellen Mit der Maus im Menü links auf den Menüpunkt 'Seiten' gehen und auf 'Erstellen klicken. Es öffnet sich die Eingabe Seite um eine neue Seite zu erstellen. Seiten Titel festlegen Den neuen

Mehr

Lizenzen auschecken. Was ist zu tun?

Lizenzen auschecken. Was ist zu tun? Use case Lizenzen auschecken Ihr Unternehmen hat eine Netzwerk-Commuterlizenz mit beispielsweise 4 Lizenzen. Am Freitag wollen Sie Ihren Laptop mit nach Hause nehmen, um dort am Wochenende weiter zu arbeiten.

Mehr

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag Ludwig-Maximilians-Universität München WS 2015/16 Institut für Informatik Übungsblatt 9 Prof. Dr. R. Hennicker, A. Klarl Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung:

Mehr

Swing Lernen am Code Teil 1

Swing Lernen am Code Teil 1 Swing Lernen am Code Teil 1 Swing Fenster erzeugen import java.awt.* import java.awt.event.* import javax.swing.* class SwingDemo{ static JFrame Fenster; public static void main(string[] args){ } } Fenster

Mehr

Anwendungspraktikum aus JAVA Programmierung im SS 2006 Leitung: Albert Weichselbraun. Java Projekt. Schiffe Versenken mit GUI

Anwendungspraktikum aus JAVA Programmierung im SS 2006 Leitung: Albert Weichselbraun. Java Projekt. Schiffe Versenken mit GUI Anwendungspraktikum aus JAVA Programmierung im SS 2006 Leitung: Albert Weichselbraun Java Projekt Schiffe Versenken mit GUI 1. Über den Autor: Name: Marija Matejic Matrikelnummer: 9352571 E-mail: marijamatejic@yahoo.com

Mehr

Datensicherung. Beschreibung der Datensicherung

Datensicherung. Beschreibung der Datensicherung Datensicherung Mit dem Datensicherungsprogramm können Sie Ihre persönlichen Daten problemlos Sichern. Es ist möglich eine komplette Datensicherung durchzuführen, aber auch nur die neuen und geänderten

Mehr

Dokumentation des Projektes Tic Tac Toe

Dokumentation des Projektes Tic Tac Toe Praktikum aus Programmierung Dr. Michael Hahsler Dokumentation des Projektes Tic Tac Toe 0050230 1 Java Projekt: Tic Tac Toe 1. Inhaltsverzeichnis 1. Inhaltsverzeichnis... 2 2. Problemdefinition... 2 3.

Mehr

SafeRun-Modus: Die Sichere Umgebung für die Ausführung von Programmen

SafeRun-Modus: Die Sichere Umgebung für die Ausführung von Programmen SafeRun-Modus: Die Sichere Umgebung für die Ausführung von Programmen Um die maximale Sicherheit für das Betriebssystem und Ihre persönlichen Daten zu gewährleisten, können Sie Programme von Drittherstellern

Mehr

TeamSpeak3 Einrichten

TeamSpeak3 Einrichten TeamSpeak3 Einrichten Version 1.0.3 24. April 2012 StreamPlus UG Es ist untersagt dieses Dokument ohne eine schriftliche Genehmigung der StreamPlus UG vollständig oder auszugsweise zu reproduzieren, vervielfältigen

Mehr

Seite 1 von 14. Cookie-Einstellungen verschiedener Browser

Seite 1 von 14. Cookie-Einstellungen verschiedener Browser Seite 1 von 14 Cookie-Einstellungen verschiedener Browser Cookie-Einstellungen verschiedener Browser, 7. Dezember 2015 Inhaltsverzeichnis 1.Aktivierung von Cookies... 3 2.Cookies... 3 2.1.Wofu r braucht

Mehr

Wie richten Sie Ihr Web Paket bei Netpage24 ein

Wie richten Sie Ihr Web Paket bei Netpage24 ein Wie richten Sie Ihr Web Paket bei Netpage24 ein Eine kostenlose ebook Anleitung von Netpage24 - Webseite Information 1 E-Mail Bestätigung... 3 2 Ticketsystem... 3 3 FTP Konto anlegen... 4 4 Datenbank anlegen...

Mehr

Import, Export und Löschung von Zertifikaten mit dem Microsoft Internet Explorer

Import, Export und Löschung von Zertifikaten mit dem Microsoft Internet Explorer Import, Export und Löschung von Zertifikaten mit dem Microsoft Internet Explorer Version 1.0 Arbeitsgruppe Meldewesen SaxDVDV Version 1.0 vom 20.07.2010 Autor geändert durch Ohle, Maik Telefonnummer 03578/33-4722

Mehr

Installationsanleitung CLX.PayMaker Home

Installationsanleitung CLX.PayMaker Home Installationsanleitung CLX.PayMaker Home Inhaltsverzeichnis 1. Installation und Datenübernahme... 2 2. Erste Schritte Verbindung zur Bank einrichten und Kontoinformationen beziehen... 4 3. Einrichtung

Mehr

tentoinfinity Apps 1.0 EINFÜHRUNG

tentoinfinity Apps 1.0 EINFÜHRUNG tentoinfinity Apps Una Hilfe Inhalt Copyright 2013-2015 von tentoinfinity Apps. Alle Rechte vorbehalten. Inhalt der online-hilfe wurde zuletzt aktualisiert am August 6, 2015. Zusätzlicher Support Ressourcen

Mehr

Artikel Schnittstelle über CSV

Artikel Schnittstelle über CSV Artikel Schnittstelle über CSV Sie können Artikeldaten aus Ihrem EDV System in das NCFOX importieren, dies geschieht durch eine CSV Schnittstelle. Dies hat mehrere Vorteile: Zeitersparnis, die Karteikarte

Mehr

Er musste so eingerichtet werden, dass das D-Laufwerk auf das E-Laufwerk gespiegelt

Er musste so eingerichtet werden, dass das D-Laufwerk auf das E-Laufwerk gespiegelt Inhaltsverzeichnis Aufgabe... 1 Allgemein... 1 Active Directory... 1 Konfiguration... 2 Benutzer erstellen... 3 Eigenes Verzeichnis erstellen... 3 Benutzerkonto erstellen... 3 Profil einrichten... 5 Berechtigungen

Mehr

2. ERSTELLEN VON APPS MIT DEM ADT PLUGIN VON ECLIPSE

2. ERSTELLEN VON APPS MIT DEM ADT PLUGIN VON ECLIPSE 2. ERSTELLEN VON APPS MIT DEM ADT PLUGIN VON ECLIPSE 2.1 Die Einrichtung der Benutzeroberfläche Das Einrichten einer Android-Eclipse-Entwicklungsumgebung zur Android-Entwicklung ist grundsätzlich nicht

Mehr

Kommunikations-Management

Kommunikations-Management Tutorial: Wie kann ich E-Mails schreiben? Im vorliegenden Tutorial lernen Sie, wie Sie in myfactory E-Mails schreiben können. In myfactory können Sie jederzeit schnell und einfach E-Mails verfassen egal

Mehr

Wichtige Hinweise zu den neuen Orientierungshilfen der Architekten-/Objektplanerverträge

Wichtige Hinweise zu den neuen Orientierungshilfen der Architekten-/Objektplanerverträge Wichtige Hinweise zu den neuen Orientierungshilfen der Architekten-/Objektplanerverträge Ab der Version forma 5.5 handelt es sich bei den Orientierungshilfen der Architekten-/Objektplanerverträge nicht

Mehr

Installationsanleitung INFOPOST

Installationsanleitung INFOPOST Um mit dem Infopost-Manager effektiv arbeiten zu können, sollte Ihr PC folgende Mindestvoraussetzungen erfüllen: RAM-Speicher: mind. 2 GB Speicher Festplatte: 400 MB freier Speicher Betriebssystem: Windows

Mehr

Anleitungen zum Publizieren Ihrer Homepage

Anleitungen zum Publizieren Ihrer Homepage Anleitungen zum Publizieren Ihrer Homepage Einrichtung und Konfiguration zum Veröffentlichen Ihrer Homepage mit einem Programm Ihrer Wahl Stand Februar 2015 Die Anleitungen gelten für die Homepage-Produkte:

Mehr

LPT1 Anschluss mit PCMCIA Karte

LPT1 Anschluss mit PCMCIA Karte 1. Allgemeines LPT1 Anschluss mit PCMCIA Karte verwendete Hardware: Lenze PC Systembusadapter EMF 2173-V003 PCMCIA Karte Firma QUATECH Typ SPP-100 Auf die Installation der PCMCIA Karte wird hier nicht

Mehr

IDEP / KN8 für WINDOWS. Schnellstart

IDEP / KN8 für WINDOWS. Schnellstart IDEP / KN8 für WINDOWS Schnellstart 1. INSTALLATION 1.1 ÜBER DAS INTERNET Auf der Webseite von Intrastat (www.intrastat.be) gehen Sie nach der Sprachauswahl auf den Unterpunkt Idep/Gn8 für Windows. Dann

Mehr

Installationsanleitung CLX.PayMaker Office

Installationsanleitung CLX.PayMaker Office Installationsanleitung CLX.PayMaker Office Inhaltsverzeichnis 1. Installation und Datenübernahme... 2 2. Erste Schritte Verbindung zur Bank einrichten und Kontoinformationen beziehen... 4 3. Einrichtung

Mehr

Bilder zum Upload verkleinern

Bilder zum Upload verkleinern Seite 1 von 9 Bilder zum Upload verkleinern Teil 1: Maße der Bilder verändern Um Bilder in ihren Abmessungen zu verkleinern benutze ich die Freeware Irfan View. Die Software biete zwar noch einiges mehr

Mehr

Problemdefinition. Cash Flow Reminder. 1 Problembeschreibung: 2 Projektziel: 3 Aufgaben des Benutzers

Problemdefinition. Cash Flow Reminder. 1 Problembeschreibung: 2 Projektziel: 3 Aufgaben des Benutzers Cash Flow Reminder Problemdefinition 1 Problembeschreibung: Viele Studenten verfügen über ein eher geringes monatliches Budget, mit welchem sie aber alle Lebensunterhaltskosten decken sollten. Deshalb

Mehr

4D Server v12 64-bit Version BETA VERSION

4D Server v12 64-bit Version BETA VERSION 4D Server v12 64-bit Version BETA VERSION 4D Server v12 unterstützt jetzt das Windows 64-bit Betriebssystem. Hauptvorteil der 64-bit Technologie ist die rundum verbesserte Performance der Anwendungen und

Mehr

2. Die eigenen Benutzerdaten aus orgamax müssen bekannt sein

2. Die eigenen Benutzerdaten aus orgamax müssen bekannt sein Einrichtung von orgamax-mobil Um die App orgamax Heute auf Ihrem Smartphone nutzen zu können, ist eine einmalige Einrichtung auf Ihrem orgamax Rechner (bei Einzelplatz) oder Ihrem orgamax Server (Mehrplatz)

Mehr

1. Einschränkung für Mac-User ohne Office 365. 2. Dokumente hochladen, teilen und bearbeiten

1. Einschränkung für Mac-User ohne Office 365. 2. Dokumente hochladen, teilen und bearbeiten 1. Einschränkung für Mac-User ohne Office 365 Mac-User ohne Office 365 müssen die Dateien herunterladen; sie können die Dateien nicht direkt öffnen und bearbeiten. Wenn die Datei heruntergeladen wurde,

Mehr

Dokumentation zum Spielserver der Software Challenge

Dokumentation zum Spielserver der Software Challenge Dokumentation zum Spielserver der Software Challenge 10.08.2011 Inhaltsverzeichnis: Programmoberfläche... 2 Ein neues Spiel erstellen... 2 Spielfeldoberfläche... 4 Spielwiederholung laden... 5 Testdurchläufe...

Mehr

DeltaVision Computer Software Programmierung Internet Beratung Schulung

DeltaVision Computer Software Programmierung Internet Beratung Schulung Zertifikate von DeltaVision für Office Projekte 1 Einleitung: Digitale Zertifikate für VBA-Projekte DeltaVision signiert ab 2009 alle seine VBA Projekte. So ist für den Anwender immer klar, dass der Code

Mehr

SANDBOXIE konfigurieren

SANDBOXIE konfigurieren SANDBOXIE konfigurieren für Webbrowser und E-Mail-Programme Dies ist eine kurze Anleitung für die grundlegenden folgender Programme: Webbrowser: Internet Explorer, Mozilla Firefox und Opera E-Mail-Programme:

Mehr

OpenVPN unter Linux mit KVpnc Stand: 16. Mai 2013

OpenVPN unter Linux mit KVpnc Stand: 16. Mai 2013 1 Vorwort OpenVPN unter Linux mit KVpnc Stand: 16. Mai 2013 Folgende Beschreibung wurde mit einem Ubuntu 7.10 mit Kernel 2.6.22-14, OpenVPN 2.0.9 und KVpnc 0.9.1-rc1 getestet. Ein weiterer erfolgreicher

Mehr

Bedienungsanleitung für den SecureCourier

Bedienungsanleitung für den SecureCourier Bedienungsanleitung für den SecureCourier Wo kann ich den SecureCourier nach der Installation auf meinem Computer finden? Den SecureCourier finden Sie dort, wo Sie mit Dateien umgehen und arbeiten. Bei

Mehr

Überprüfung der digital signierten E-Rechnung

Überprüfung der digital signierten E-Rechnung Überprüfung der digital signierten E-Rechnung Aufgrund des BMF-Erlasses vom Juli 2005 (BMF-010219/0183-IV/9/2005) gelten ab 01.01.2006 nur noch jene elektronischen Rechnungen als vorsteuerabzugspflichtig,

Mehr

Hilfe zur Dokumentenverwaltung

Hilfe zur Dokumentenverwaltung Hilfe zur Dokumentenverwaltung Die Dokumentenverwaltung von Coffee-CRM ist sehr mächtig und umfangreich, aber keine Angst die Bedienung ist kinderleicht. Im Gegensatz zur Foto Galeria können Dokumente

Mehr

Dieser Ablauf soll eine Hilfe für die tägliche Arbeit mit der SMS Bestätigung im Millennium darstellen.

Dieser Ablauf soll eine Hilfe für die tägliche Arbeit mit der SMS Bestätigung im Millennium darstellen. Millennium SMS Service Schnellübersicht Seite 1 von 6 1. Tägliche Arbeiten mit der SMS Bestätigung Dieser Ablauf soll eine Hilfe für die tägliche Arbeit mit der SMS Bestätigung im Millennium darstellen.

Mehr

Anwenderdokumentation PersoSim

Anwenderdokumentation PersoSim Anwenderdokumentation PersoSim Die nachfolgende Anwenderdokumentation soll dem Anwender bei der Installation und den ersten Schritten im Umgang mit PersoSim helfen. Installation Grundvoraussetzung für

Mehr

Um die Installation zu starten, klicken Sie auf den Downloadlink in Ihrer E-Mail (Zugangsdaten für Ihre Bestellung vom...)

Um die Installation zu starten, klicken Sie auf den Downloadlink in Ihrer E-Mail (Zugangsdaten für Ihre Bestellung vom...) Inhalt Vorbereitung der LIFT-Installation... 1 Download der Installationsdateien (Internet Explorer)... 2 Download der Installationsdateien (Firefox)... 4 Installationsdateien extrahieren... 6 Extrahieren

Mehr

Leitfaden zur ersten Nutzung der R FOM Portable-Version für Windows (Version 1.0)

Leitfaden zur ersten Nutzung der R FOM Portable-Version für Windows (Version 1.0) Leitfaden zur ersten Nutzung der R FOM Portable-Version für Windows (Version 1.0) Peter Koos 03. Dezember 2015 0 Inhaltsverzeichnis 1 Voraussetzung... 3 2 Hintergrundinformationen... 3 2.1 Installationsarten...

Mehr

Dokumentation IBIS Monitor

Dokumentation IBIS Monitor Dokumentation IBIS Monitor Seite 1 von 16 11.01.06 Inhaltsverzeichnis 1. Allgemein 2. Installation und Programm starten 3. Programmkonfiguration 4. Aufzeichnung 4.1 Aufzeichnung mitschneiden 4.1.1 Inhalt

Mehr

TrekStor - ebook-reader 3.0 - TrekStor (TS) Edition - Firmware-Update

TrekStor - ebook-reader 3.0 - TrekStor (TS) Edition - Firmware-Update TrekStor - ebook-reader 3.0 - TrekStor (TS) Edition - Firmware-Update Es gibt mehrere Versionen der Software (Firmware), da es unterschiedliche Editionen des ebook-reader 3.0 gibt. Um zu überprüfen, welches

Mehr

Tapps mit XP-Mode unter Windows 7 64 bit (V2.0)

Tapps mit XP-Mode unter Windows 7 64 bit (V2.0) Tapps mit XP-Mode unter Windows 7 64 bit (V2.0) 1 Einleitung... 2 2 Download und Installation... 3 2.1 Installation von WindowsXPMode_de-de.exe... 4 2.2 Installation von Windows6.1-KB958559-x64.msu...

Mehr

Informatik I Tutorial

Informatik I Tutorial ETH Zürich, D-INFK/D-BAUG Herbstsemester 2015 Dr. Martin Hirt Daniel Jost Informatik I Tutorial Dieses Tutorial hat zum Ziel, die notwendigen Tools auf dem eigenen Computer zu installieren, so dass ihr

Mehr

Herzlich willkommen bei der Installation des IPfonie -Softclients!

Herzlich willkommen bei der Installation des IPfonie -Softclients! Herzlich willkommen bei der Installation des IPfonie -Softclients! Sie benötigen diesen Softclient, um mit Ihrem Computer bequem über Ihren Internetanschluss telefonieren zu können. Der Softclient ist

Mehr

DHBW Karlsruhe, Vorlesung Programmieren, Events Musterlösung

DHBW Karlsruhe, Vorlesung Programmieren, Events Musterlösung DHBW Karlsruhe, Vorlesung Programmieren, Events Musterlösung Aufgabe Editor package BA.GUI.Swing; import java.awt.*; import java.awt.event.*; import java.io.*; import java.util.logging.level; import java.util.logging.logger;

Mehr

Informatik 1 Tutorial

Informatik 1 Tutorial ETH Zürich, D-INFK/D-BAUG Herbstsemester 2014 Dr. Martin Hirt Christian Badertscher Informatik 1 Tutorial Dieses Tutorial hat zum Ziel, die notwendigen Tools auf dem eigenen Computer zu installieren, so

Mehr

Einstellungen im Internet-Explorer (IE) (Stand 11/2013) für die Arbeit mit IOS2000 und DIALOG

Einstellungen im Internet-Explorer (IE) (Stand 11/2013) für die Arbeit mit IOS2000 und DIALOG Einstellungen im Internet-Explorer (IE) (Stand 11/2013) für die Arbeit mit IOS2000 und DIALOG Um mit IOS2000/DIALOG arbeiten zu können, benötigen Sie einen Webbrowser. Zurzeit unterstützen wir ausschließlich

Mehr

Wählen Sie bitte START EINSTELLUNGEN SYSTEMSTEUERUNG VERWALTUNG und Sie erhalten unter Windows 2000 die folgende Darstellung:

Wählen Sie bitte START EINSTELLUNGEN SYSTEMSTEUERUNG VERWALTUNG und Sie erhalten unter Windows 2000 die folgende Darstellung: Installation Bevor Sie mit der Installation von MOVIDO 1.0 beginnen, sollten Sie sich vergewissern, dass der Internet Information Server (IIS) von Microsoft installiert ist. Um dies festzustellen, führen

Mehr

PDF-Erzeugung mit PDFCreator (nur für Windows, installiert universellen PDF-Druckertreiber) v11/01

PDF-Erzeugung mit PDFCreator (nur für Windows, installiert universellen PDF-Druckertreiber) v11/01 PDF-Erzeugung mit PDFCreator (nur für Windows, installiert universellen PDF-Druckertreiber) v11/01 Erläuterung PDFCreator ist eine Software zur Erzeugung von PDF-Dateien unter Windows. Es kann in all den

Mehr

Programmierkurs Java

Programmierkurs Java Programmierkurs Java Dr. Dietrich Boles Aufgaben zu UE16-Rekursion (Stand 09.12.2011) Aufgabe 1: Implementieren Sie in Java ein Programm, das solange einzelne Zeichen vom Terminal einliest, bis ein #-Zeichen

Mehr

GeoPilot (Android) die App

GeoPilot (Android) die App GeoPilot (Android) die App Mit der neuen Rademacher GeoPilot App machen Sie Ihr Android Smartphone zum Sensor und steuern beliebige Szenen über den HomePilot. Die App beinhaltet zwei Funktionen, zum einen

Mehr

Whitepaper. Produkt: combit address manager / combit Relationship Manager. Datenabgleich zwischen Notebook und Desktop-PC / Server

Whitepaper. Produkt: combit address manager / combit Relationship Manager. Datenabgleich zwischen Notebook und Desktop-PC / Server combit GmbH Untere Laube 30 78462 Konstanz Whitepaper Produkt: combit address manager / combit Relationship Manager Datenabgleich zwischen Notebook und Desktop-PC / Server Datenabgleich zwischen Notebook

Mehr

Step by Step Webserver unter Windows Server 2003. von Christian Bartl

Step by Step Webserver unter Windows Server 2003. von Christian Bartl Step by Step Webserver unter Windows Server 2003 von Webserver unter Windows Server 2003 Um den WWW-Server-Dienst IIS (Internet Information Service) zu nutzen muss dieser zunächst installiert werden (wird

Mehr

Outlook 2000 Thema - Archivierung

Outlook 2000 Thema - Archivierung interne Schulungsunterlagen Outlook 2000 Thema - Inhaltsverzeichnis 1. Allgemein... 3 2. Grundeinstellungen für die Auto in Outlook... 3 3. Auto für die Postfach-Ordner einstellen... 4 4. Manuelles Archivieren

Mehr

Drei-Schichten-Architektur. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 16: 3-Schichten-Architektur 1 Fachkonzept - GUI

Drei-Schichten-Architektur. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 16: 3-Schichten-Architektur 1 Fachkonzept - GUI Universität Osnabrück Drei-Schichten-Architektur 3 - Objektorientierte Programmierung in Java Vorlesung 6: 3-Schichten-Architektur Fachkonzept - GUI SS 2005 Prof. Dr. F.M. Thiesing, FH Dortmund Ein großer

Mehr

ARAkoll 2013 Dokumentation. Datum: 21.11.2012

ARAkoll 2013 Dokumentation. Datum: 21.11.2012 ARAkoll 2013 Dokumentation Datum: 21.11.2012 INHALT Allgemeines... 3 Funktionsübersicht... 3 Allgemeine Funktionen... 3 ARAmatic Symbolleiste... 3 Monatsprotokoll erzeugen... 4 Jahresprotokoll erzeugen

Mehr

Live Update (Auto Update)

Live Update (Auto Update) Live Update (Auto Update) Mit der Version 44.20.00 wurde moveit@iss+ um die Funktion des Live Updates (in anderen Programmen auch als Auto Update bekannt) für Programm Updates erweitert. Damit Sie auch

Mehr

Einrichten des IIS für VDF WebApp. Einrichten des IIS (Internet Information Server) zur Verwendung von Visual DataFlex Web Applications

Einrichten des IIS für VDF WebApp. Einrichten des IIS (Internet Information Server) zur Verwendung von Visual DataFlex Web Applications Einrichten des IIS (Internet Information Server) zur Verwendung von Visual DataFlex Web Applications Windows 8 Systemsteuerung > Programme > Windows Features aktivieren / deaktivieren > Im Verzeichnisbaum

Mehr

MO1 <logo otra empresa> MO1Sync Installationshandbuch MO1. MO1Sync Installationshandbuch -1-

MO1 <logo otra empresa> MO1Sync Installationshandbuch MO1. MO1Sync Installationshandbuch -1- MO1-1- Inhaltsverzeichnis: 1. Einleitung... 3 2. Unbedingte Anforderungen... 3 3. Driver-Installation Schritt für Schritt... 3 3.1 Driver Installation: Schritt 1... 3 3.2 Driver Installation: Schritt 2...

Mehr

Arbeiten mit dem Outlook Add-In

Arbeiten mit dem Outlook Add-In Arbeiten mit dem Outlook Add-In Das Outlook Add-In ermöglicht Ihnen das Speichern von Emails im Aktenlebenslauf einer Akte. Außerdem können Sie Namen direkt aus BS in Ihre Outlook-Kontakte übernehmen sowie

Mehr

Installation von NetBeans inkl. Glassfish Anwendungs-Server

Installation von NetBeans inkl. Glassfish Anwendungs-Server Installation von NetBeans inkl. Glassfish Anwendungs-Server Diese Anleitung führt Sie Schritt für Schritt durch die Einrichtung der Entwicklungsumgebung NetBeans, angefangen beim Download der benötigten

Mehr

Der einfache Weg zum CFX-Demokonto

Der einfache Weg zum CFX-Demokonto Der einfache Weg zum CFX-Demokonto Diese Anleitung hilft Ihnen bei der Eröffnung eines Demokontos beim CFX Broker. Jeder Schritt bis zur vollständigen Eröffnung wird Ihnen im Folgenden erklärt. Zur besseren

Mehr

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

Einführung in die objektorientierte Programmierung mit Java. Klausur am 19. Oktober 2005 Einführung in die objektorientierte Programmierung mit Java Klausur am 19. Oktober 2005 Matrikelnummer: Nachname: Vorname: Semesteranzahl: Die Klausur besteht aus drei Frageblöcken zu den Inhalten der

Mehr

Handbuch B4000+ Preset Manager

Handbuch B4000+ Preset Manager Handbuch B4000+ Preset Manager B4000+ authentic organ modeller Version 0.6 FERROFISH advanced audio applications Einleitung Mit der Software B4000+ Preset Manager können Sie Ihre in der B4000+ erstellten

Mehr

Installation des Authorware Webplayers für den Internet Explorer unter Windows Vista

Installation des Authorware Webplayers für den Internet Explorer unter Windows Vista Installation des Authorware Webplayers für den Internet Explorer unter Windows Vista Allgemeines: Bitte lesen Sie sich diese Anleitung zuerst einmal komplett durch. Am Besten, Sie drucken sich diese Anleitung

Mehr

Einkaufslisten verwalten. Tipps & Tricks

Einkaufslisten verwalten. Tipps & Tricks Tipps & Tricks INHALT SEITE 1.1 Grundlegende Informationen 3 1.2 Einkaufslisten erstellen 4 1.3 Artikel zu einer bestehenden Einkaufsliste hinzufügen 9 1.4 Mit einer Einkaufslisten einkaufen 12 1.4.1 Alle

Mehr

Handbuch. timecard Connector 1.0.0. Version: 1.0.0. REINER SCT Kartengeräte GmbH & Co. KG Goethestr. 14 78120 Furtwangen

Handbuch. timecard Connector 1.0.0. Version: 1.0.0. REINER SCT Kartengeräte GmbH & Co. KG Goethestr. 14 78120 Furtwangen Handbuch timecard Connector 1.0.0 Version: 1.0.0 REINER SCT Kartengeräte GmbH & Co. KG Goethestr. 14 78120 Furtwangen Furtwangen, den 18.11.2011 Inhaltsverzeichnis Seite 1 Einführung... 3 2 Systemvoraussetzungen...

Mehr

Anleitung zum Upgrade auf SFirm 3.1 + Datenübernahme

Anleitung zum Upgrade auf SFirm 3.1 + Datenübernahme I. Vorbereitungen 1. Laden Sie zunächst die Installationsdateien zu SFirm 3.1, wie in der Upgrade-Checkliste (Schritt 1.) beschrieben, herunter (www.sparkasse-forchheim.de/sfirm) 2. Starten Sie nochmals

Mehr

Anleitung zur Installation von Windows XP Professional und dem Multilanguage Interface

Anleitung zur Installation von Windows XP Professional und dem Multilanguage Interface Anleitung zur Installation von Windows XP Professional und dem Multilanguage Interface Installation Windows XP Professional Den Computer / Laptop einschalten und Windows XP Professional Installations CD

Mehr

Anleitung zum Upgrade auf SFirm 3.0 + Datenübernahme

Anleitung zum Upgrade auf SFirm 3.0 + Datenübernahme I. Vorbereitungen 1. Laden Sie zunächst die Installationsdateien zu SFirm 3.0, wie in der Upgrade-Checkliste (Schritt 1.) beschrieben, herunter (www.sparkasse-fuerth.de/sfirm30download). 2. Starten Sie

Mehr

INSTALLATION VON INSTANTRAILS 1.7

INSTALLATION VON INSTANTRAILS 1.7 INSTALLATION VON INSTANTRAILS 1.7 InstantRails 1.7 ist ein Paket, das Ruby, Rails, Apache, MySQL und andere Tools, z.b. phpmyadmin in vorkonfigurierter Form enthält. Das Paket muss in einem Verzeichnis

Mehr

Meldung Lokale Anwendung inkompatibel oder Microsoft Silverlight ist nicht aktuell bei Anmeldung an lokal gespeicherter RWE SmartHome Anwendung

Meldung Lokale Anwendung inkompatibel oder Microsoft Silverlight ist nicht aktuell bei Anmeldung an lokal gespeicherter RWE SmartHome Anwendung Meldung Lokale Anwendung inkompatibel oder Microsoft Silverlight ist nicht aktuell bei Anmeldung an lokal gespeicherter RWE SmartHome Anwendung Nach dem Update auf die Version 1.70 bekommen Sie eine Fehlermeldung,

Mehr

FastViewer Remote Edition 2.X

FastViewer Remote Edition 2.X FastViewer Remote Edition 2.X Mit der FastViewer Remote Edition ist es möglich beliebige Rechner, unabhängig vom Standort, fernzusteuern. Die Eingabe einer Sessionnummer entfällt. Dazu muß auf dem zu steuernden

Mehr

Zeiterfassung-Konnektor Handbuch

Zeiterfassung-Konnektor Handbuch Zeiterfassung-Konnektor Handbuch Inhalt In diesem Handbuch werden Sie den Konnektor kennen sowie verstehen lernen. Es wird beschrieben wie Sie den Konnektor einstellen und wie das System funktioniert,

Mehr

ANLEITUNG ONECLICK WEBMEETING BASIC MIT NUR EINEM KLICK IN DIE WEBKONFERENZ.

ANLEITUNG ONECLICK WEBMEETING BASIC MIT NUR EINEM KLICK IN DIE WEBKONFERENZ. ANLEITUNG ONECLICK WEBMEETING BASIC MIT NUR EINEM KLICK IN DIE WEBKONFERENZ. INHALT 2 3 1 EINFÜHRUNG 3 1.1 SYSTEMVORAUSSETZUNGEN 3 1.2 MICROSOFT OFFICE 3 2 DOWNLOAD UND INSTALLATION 4 3 EINSTELLUNGEN 4

Mehr

1. fe.logon. 1.1 Konfigurationsprogramm SetLogonParams

1. fe.logon. 1.1 Konfigurationsprogramm SetLogonParams fe.logon 01 / 2011 2 1. fe.logon fe.logon ist eine von F.EE entwickelte DLL (Dynamic Link Library), die die GINA (Graphical Identification and Authentication)-Schnittstelle von Microsoft Windows implementiert.

Mehr

Starten der Software unter Windows 7

Starten der Software unter Windows 7 Starten der Software unter Windows 7 Im Folgenden wird Ihnen Schritt für Schritt erklärt, wie Sie Ihr persönliches CONTOUR NEXT USB auf dem Betriebssystem Ihrer Wahl starten und benutzen. Schritt 1. Stecken

Mehr

1 Konto für HBCI/FinTS mit Chipkarte einrichten

1 Konto für HBCI/FinTS mit Chipkarte einrichten 1 Konto für HBCI/FinTS mit Chipkarte einrichten Um das Verfahren HBCI/FinTS mit Chipkarte einzusetzen, benötigen Sie einen Chipkartenleser und eine Chipkarte. Die Chipkarte erhalten Sie von Ihrem Kreditinstitut.

Mehr

Bedienung von BlueJ. Klassenanzeige

Bedienung von BlueJ. Klassenanzeige Im Folgenden werden wichtige Funktionen für den Einsatz von BlueJ im Unterricht beschrieben. Hierbei wird auf den Umgang mit Projekten, Klassen und Objekten eingegangen. Abgeschlossen wird dieses Dokument

Mehr

Nutzung von GiS BasePac 8 im Netzwerk

Nutzung von GiS BasePac 8 im Netzwerk Allgemeines Grundsätzlich kann das GiS BasePac Programm in allen Netzwerken eingesetzt werden, die Verbindungen als Laufwerk zu lassen (alle WINDOWS Versionen). Die GiS Software unterstützt nur den Zugriff

Mehr

Web-Kürzel. Krishna Tateneni Yves Arrouye Deutsche Übersetzung: Stefan Winter

Web-Kürzel. Krishna Tateneni Yves Arrouye Deutsche Übersetzung: Stefan Winter Krishna Tateneni Yves Arrouye Deutsche Übersetzung: Stefan Winter 2 Inhaltsverzeichnis 1 Web-Kürzel 4 1.1 Einführung.......................................... 4 1.2 Web-Kürzel.........................................

Mehr

VB.net Programmierung und Beispielprogramm für GSV

VB.net Programmierung und Beispielprogramm für GSV VB.net Programmierung und Beispielprogramm für GSV Dokumentation Stand vom 26.05.2011 Tel +49 (0)3302 78620 60, Fax +49 (0)3302 78620 69, info@me-systeme.de, www.me-systeme.de 1 Inhaltsverzeichnis Vorwort...2

Mehr

Outlook Erstellen einer E-Mail aus einer HTML - Vorlage INHALT

Outlook Erstellen einer E-Mail aus einer HTML - Vorlage INHALT Outlook Erstellen einer E-Mail aus einer HTML - Vorlage INHALT LADEN DER VORLAGE 2 Öffnen Sie Outlook 2 Klicken Sie auf EXTRAS >> OPTIONEN 2 Im Optionenfeld von Outlook folgend Sie den Schritten 2 Fenster

Mehr

OS Anwendungsbeschreibung

OS Anwendungsbeschreibung Inhalt Einleitung... 2 Start des Programms... 2 Scannen einer neuen Zeitungsseite... 4 Presse-Clipping... 8 Artikel ausschneiden und bearbeiten... 11 Übernahme aus der Zwischenablage... 19 Ausdruck in

Mehr

Excel Pivot-Tabellen 2010 effektiv

Excel Pivot-Tabellen 2010 effektiv 7.2 Berechnete Felder Falls in der Datenquelle die Zahlen nicht in der Form vorliegen wie Sie diese benötigen, können Sie die gewünschten Ergebnisse mit Formeln berechnen. Dazu erzeugen Sie ein berechnetes

Mehr

HTW-Aalen. OpenVPN - Anleitung. Eine Installations- und Nutzungsanleitung zu OpenVPN

HTW-Aalen. OpenVPN - Anleitung. Eine Installations- und Nutzungsanleitung zu OpenVPN HTW-Aalen OpenVPN - Anleitung Eine Installations- und Nutzungsanleitung zu OpenVPN Sabine Gold Oktober 2013 Inhaltsverzeichnis 1 Download und Installation des OpenVPN-Clients... 2 1.1. Betriebssystem Windows...

Mehr

MSDE 2000 mit Service Pack 3a

MSDE 2000 mit Service Pack 3a MSDE 2000 mit Service Pack 3a Neues MSDE im WINLine-Setup: Seit der WINLine 8.2 Build 972 wird auf der WINLine-CD ein neues Setup der Microsoft MSDE mit ausgeliefert. Mit dieser neuen Version MSDE 2000

Mehr

SEP 114. Design by Contract

SEP 114. Design by Contract Design by Contract SEP 114 Design by Contract Teile das zu entwickelnde Programm in kleine Einheiten (Klassen, Methoden), die unabhängig voneinander entwickelt und überprüft werden können. Einheiten mit

Mehr

TeamViewer App für Outlook Dokumentation

TeamViewer App für Outlook Dokumentation TeamViewer App für Outlook Dokumentation Version 1.0.0 TeamViewer GmbH Jahnstr. 30 D-73037 Göppingen www.teamviewer.com Inhaltsverzeichnis 1 Installation... 3 1.1 Option 1 Ein Benutzer installiert die

Mehr

Für Windows 7 Stand: 21.01.2013

Für Windows 7 Stand: 21.01.2013 Für Windows 7 Stand: 21.01.2013 1 Überblick Alle F.A.S.T. Messgeräte verfügen über dieselbe USB-Seriell Hardware, welche einen Com- Port zur Kommunikation im System zur Verfügung stellt. Daher kann bei

Mehr

Version 1.0.0. NotarNet Bürokommunikation. Bedienungsanleitung für den ZCS-Import-Assistenten für Outlook

Version 1.0.0. NotarNet Bürokommunikation. Bedienungsanleitung für den ZCS-Import-Assistenten für Outlook Version 1.0.0 NotarNet Bürokommunikation Bedienungsanleitung für den ZCS-Import-Assistenten für Outlook Seite 1 Vorgehensweise bei der Einrichtung... 2 2 Vorbereitung... 2 3 Ablauf des Imports... 3 4 Allgemeine

Mehr

Programmieren in Java

Programmieren in Java Programmieren in Java objektorientierte Programmierung 2 2 Zusammenhang Klasse-Datei In jeder *.java Datei kann es genau eine public-klasse geben wobei Klassen- und Dateiname übereinstimmen. Es können

Mehr

lññáåé=iáåé===pìééçêíáåñçêã~íáçå=

lññáåé=iáåé===pìééçêíáåñçêã~íáçå= lññáåé=iáåé===pìééçêíáåñçêã~íáçå= Wie kann das LiveUpdate durchgeführt werden? Um das LiveUpdate durchzuführen, müssen alle Anwender die Office Line verlassen. Nur so ist gewährleistet, dass die Office

Mehr

Kurzeinweisung. WinFoto Plus

Kurzeinweisung. WinFoto Plus Kurzeinweisung WinFoto Plus Codex GmbH Stand 2012 Inhaltsverzeichnis Einleitung... 3 Allgemeines... 4 Vorbereitungen... 4 Drucken des Baustellenblatts im Projekt... 4 Drucken des Barcodes auf dem Arbeitsauftrag

Mehr

Kurzanleitung. MEYTON Aufbau einer Internetverbindung. 1 Von 11

Kurzanleitung. MEYTON Aufbau einer Internetverbindung. 1 Von 11 Kurzanleitung MEYTON Aufbau einer Internetverbindung 1 Von 11 Inhaltsverzeichnis Installation eines Internetzugangs...3 Ist mein Router bereits im MEYTON Netzwerk?...3 Start des YAST Programms...4 Auswahl

Mehr

Signierte e-mails mit Mozilla Thunderbird

Signierte e-mails mit Mozilla Thunderbird Signierte e-mails mit Mozilla Thunderbird Hinweis: Diese Anleitung bezieht sich auf Windows XP (Service Pack 2) mit der Mozilla Suite Version 1.7.7. Bitte beachten Sie, dass andere Betriebssystem- und

Mehr

Profi cash 10. Electronic Banking. Installation und erste Schritte. Ihre Spezialisten für den elektronischen Zahlungsverkehr und moderne Bezahlsysteme

Profi cash 10. Electronic Banking. Installation und erste Schritte. Ihre Spezialisten für den elektronischen Zahlungsverkehr und moderne Bezahlsysteme Electronic Banking Ihre Spezialisten für den elektronischen Zahlungsverkehr und moderne Bezahlsysteme Profi cash 10 Installation und erste Schritte Legen Sie bitte die CD ein. Sollte die CD nicht von alleine

Mehr