programmiert April-Juni 2003 von Knut Riechmann

Slides:



Advertisements
Ähnliche Präsentationen
Strategie (Strategy / Policy) Ein objektbasiertes Verhaltensmuster Stephan Munkelt, Stefan Salzmann - 03IN.
Advertisements

Ein Beispiel in Java.
Beim Start eines Prozesses in Windows NT, 2000 wird a der Programmtext aus der exe-Datei ab der dort angegebenen Adresse gespeichert.
Kapselung , toString , equals , Java API
Seminar Internetdienste Web 2.0 und Rich Internet Applications (RIA) JavaFX Rainer Scholz.
Programmierkurs Java WS 98/99 Vorlesung 15 Dietrich Boles 17/02/99Seite 1 Programmierkurs Java Vorlesung im WS 1998/1999 am FB Informatik der Universität.
Prof. Dr.-Ing. habil. B. Steinbach - Informatik / Softwaretechnologie und Programmierungstechnik - Institut für Informatik Verteilte Software - Java -
Tomcat Web-Server installieren
Internetzugriff mit Strings und Streams
Praktikum Systementwicklung
Java News & Music Der Chat
Java News and Music GAME 18 & 3 SS03 / C. Kreienbrinck.
Java: Programmierung grafischer Oberflächen
Threads Richard Göbel.
Java: Programmierung grafischer Oberflächen
Java: Dynamische Datentypen
Indirekte Adressierung
FH-Hof Sockets in Java Richard Göbel. FH-Hof Kommunikation über das Internet - Grundlagen Ein Rechner wird im Internet über die so genannte IP- Adresse.
Einfache Komponenten in SWING
Java: Grundlagen der Sprache
MVC.
Wie überwacht man Objekte im "Alltag" ?. Indem man "Wanzen" an diese anbringt.
Ein Beispiel in Java.
Benötigte Applets Startseite: in HTML-Format Applet auf der Startseite Das Applet, das auf der Startseite geladen wird, wird die vier Buttons und die eine.
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 6 Model-View-Controler als Grundlage für Nutzerschnittstellen Sommersemester 2003 Lars Bernard.
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 7 User Interfaces in Java Sommersemester 2003 Lars Bernard.
AWT – Detailbetrachtung Java 3D – Seminar im Wintersemester 2002/2003 Christian Schneider.
Institut für Kartographie und Geoinformation Prof.-Dr. Lutz Plümer, Dr. Gerhard Gröger, Dipl.-Ing. Dirk Dörschlag Einführung in die Programmierung mit.
Programmieren mit JAVA
PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher im Kurs erarbeitete Konzepte(1): Umgang mit einfachen Datentypen Umgang mit Feldern Umgang mit Referenzen.
Projektplan: Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University.
1DVG3 - anonyme Klassen Anonyme Klassen. DVG3 - anonyme Klassen 2 Syntax new BasisKlasse(Parameterliste) { Modifikationen und Erweiterungen der Basisklasse.
EDV Parallelprogrammierung1 Parallelprogrammierung mit JAVA.
Das Roboterprojekt Einführung Der erste Entwurf Das Thread-Konzept Hindernisse Website.
© 2005 Pohlig - Taulien Datenströme GK Informatik 1 Datenströme.
© 2004 Pohlig - Taulien Swing Ereignissteuerung. © 2004 Pohlig - Taulien GK Informatik mit Java 2 Auf Button-Klick reagieren.
Sommersemester 2004 Jan Drewnak Entwicklung und Einsatz von Geosoftware I Praktikum Sitzung 6 Sitzung 6: Model-View-Controller als Grundlage.
Sommersemester 2004 Jan Drewnak Entwicklung und Einsatz von Geosoftware I Praktikum Sitzung 7 Sitzung 7: User Interfaces in Java.
Objektorientierte Modellierung
PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen,
Universität zu Lübeck Institut für Informationssysteme Die Präsentationsschicht - mit Swing.
Erste Schritte mit Eclipse Neues Projekt erstellen (1)
Delphi II - OOP IFB Fortbildung
AWT und JFC Abstract Windowing Toolkit
University of Applied Sciences Übung Objektorientierte Programmierung II Dipl.-Inf. (FH) Markus Vogler.
Learning By Doing TCP/IP Netzwerke mit TCP/IP Das Internet verwendet weitgehend das rund 30-jährige TCP/IP-Protokoll (TCP: Transmission Control Protocol,
Socket-Programmierung
Java: Programmierung grafischer Oberflächen
Netzwerkprogrammierung
CuP - Java Eingabe über Tastatur, AudioClips, überschreiben, Quiz Montag, 18. November 2002.
Variablenkonzept Klassisch, in Java Basistyp
Optimale Ursprungsgerade
Java-AG Benutzeroberflächen Juni 2001 Michael Haas.
CuP - Java Achzehnte (und LETZTE. ) Vorlesung : 1
Starten der Entwicklungsumgebung (IDE)
Learning By Doing Parallelverarbeitung Multithreading (Nebenläufigkeit) Alte Idee der Parallelverarbeitung statt rein sequentieller Prozesse Parallelverarbeitung.
Lind 02/2005 Einführung in JAVA. Lind 02/2005 Beispiel: Mittelwert Es soll ein Programm erstellt werden, das den Mittelwert zweier reeller Zahlen berechnet.
Javelin Internet-based parallel computing using Java.
Hauptseminar 2001 „Parallele Programmierung in Java“ - JPVM- Java Parallel Virtual Machine Referent: Sebastian Steininger.
CuP - Java Achte Vorlesung Entspricht ungefähr Kapitel 4.1 des Skriptums Montag, 28. Oktober 2002.
3. Beschreibung von Abläufen durch Algorithmen 3.4 Zufall
Informatik I : Software höhere Programmiersprachen Java Klassen: hat Methoden (Funktionen) und Daten (Variablen) es kann mehrere Klassen geben nur eine.
Alois Schütte Advanced System Programming 2 Interprozeßkommunikation  2.1 JVM Ablaufumgebung  2.2 Java Native Interface (JNI)  Verwendung von.
Robuste Programme durch Ausnahmebehandlung
Web und Mobile Apps Programmieren Marco Jakob Kurzvortrag OSS an Schulen
Java-Kurs Übung Benutzeroberflächen und Graphik Frames (Fenster)
Java-Applets und URLs APP Philip Graf, Andreas Bößl.
Institut für Kartographie und Geoinformation Prof. Dr. L. Plümer, Dipl.-Ing. D. Dörschlag, Dr. G. Gröger Einführung in die Programmierung mit Java 13.
GUI Programmierung in Java Branimir Djordjevic. GUI - Wichtige Begriffe -  Die Swing-Bibliothek in Java stellt zum Beispiel die folgenden Windows zur.
Das Entwurfsmuster Model-View-Controller
 Präsentation transkript:

18&3 GSG V- 1.17 GameServer + GUI programmiert April-Juni 2003 von Knut Riechmann als Teil des Software-Projektes „JAVA NEWS & MUSIC“ SS03 Fachhochschule Lippe und Höxter

INHALT: 1 Die Idee 1.1 Ein erstes Layout vom 12.04.2003 1.2 Die Aufgabenverteilung Die Server Applikation: 18&3-GSG 2.1 Charakterisierung 2.2 Die grafische Benutzeroberfläche 1 Die grafische Benutzeroberfläche 2 Die grafische Benutzeroberfläche 3 Die grafische Benutzeroberfläche 4 2.3 Aufbau der Klassen a) GameServerGUI.class b) GameServer.class c) GameVerbindung.class d) GameUser.class Die Umsetzung in JAVA 3.1 UML-Klassendiagramm: Vererbung UML-Klassendiagramm: Assoziationen 3.2 a) Auszug aus der Klasse GameserverGUI b) Auszug aus der Klasse GameServer c) Auszug aus der Klasse GameVerbindung Die Methode verbinden(int port) d) Auszug aus der Klasse GameUser e) Teile des Client-Moduls 1 Teile des Client-Moduls 2 Ein paar Anmerkungen...

1) Die Idee Geboren wurde die Idee ein netzwerkfähiges Spiel zu programmieren bei der Erstellung eines ersten Layouts für die JAVA NEWS & MUSIC Seite. Als zu programmierendes Spiel wurde dann eine Variante des bekannten Kartenspiels „17 und 4“ ausgewählt.

1.1) Ein erstes Layout vom 12.04.2003

1.2) Die Aufgabenverteilung Aufgrund der Größe des Projektes haben wir die Aufgaben in zwei Bereiche gegliedert: Christian Kreienbrinck programmierte das eigentliche Spiel als JAVA-Applet. Der Netzwerkteil wurde von mir programmiert: a) Client Modul, das in das Applet integriert werden konnte b) Eigenständige JAVA-Server-Applikation mit grafischer Benutzeroberfläche

2) Die Server-Applikation: 18&3-GSG

2.1) Die Server-Applikation: 18&3 GSG Charakterisierung: besteht aus vier Klassen grafische Benutzeroberfläche voll konfigurierbar drei Spiele gleichzeitig möglich absturzsicher durch Selbst-Restart indirekte Geschwindigkeitssteuerung automatische Spielernamen-Bestimmung

2.2) Die Server-Applikation: 18&3 GSG Die grafische Benutzeroberfläche 1 Status-Zeile Menü-Leiste LOG Infos Aktuelle Konfiguration

2.2) Die Server-Applikation: 18&3 GSG Die grafische Benutzeroberfläche 2 Es gibt die Möglichkeit sämtliche Servermeldungen in einer LOG-Datei zu speichern. Das Dateiauswahlfenster wurde mit der SWING-Komponente JFileChooser realisiert.

2.2) Die Server-Applikation: 18&3 GSG Die grafische Benutzeroberfläche 3 Sehr viele Parameter der Server lassen sich konfigurieren. Mit TextField und JButton konnte das realisiert werden. Falsche Eingaben werden erkannt. Konfigurationsmodus

2.2) Die Server-Applikation: 18&3 GSG Die grafische Benutzeroberfläche 4 Einfache Info- und Hilfefunktionen wurden mit eigenen JFrame-Objekten realisiert.

2.3) Die Server-Applikation: 18&3 GSG Aufbau der Klassen: class GameServerGUI - stellt die grafische Benutzeroberfläche bereit - ist Erbe der SWING-Klasse JFrame - Realisierung mit SWING-Komponenten - Event-Handling mit Interface ActionListener - läuft als eigenständiger Thread - ruft eine Instanz der Klasse GameServer auf

2.3) Die Server-Applikation: 18&3 GSG Aufbau der Klassen: b) class GameServer - verwaltet den Start / das Sperren von Servern - ist Erbe der Klasse Thread - läuft als eigenständiger Thread - ruft Instanzen der Klasse GameVerbindung auf

2.3) Die Server-Applikation: 18&3 GSG Aufbau der Klassen: c) class GameVerbindung - stellt jeweils einen Server dar - ist Erbe der Klasse Thread - läuft als eigenständiger Thread - arbeitet mit Inputstream und Outputstream - ruft Methoden der Klasse GameUser auf

2.3) Die Server-Applikation: 18&3 GSG Aufbau der Klassen: d) class GameUser - kann anhand von IP-Adressen aus Dateinamen die Spielernamen herausfiltern - stellt einen Dienst für die Klasse GameVerbindung bereit

3) Die Umsetzung in JAVA Im Folgenden soll auf die Umsetzung der Programmierung in JAVA eingegangen werden. Da der gesamte Code der 4 Klassen aus genau 1036 Zeilen besteht, soll hier aus Zeitgründen nur auf elementare Stellen eingegangen werden.

3.1) Die Umsetzung in JAVA UML-Klassendiagramm 1: Vererbung

3.1) Die Umsetzung in JAVA UML-Klassendiagramm 2: Assoziationen

a) Auszug aus der Klasse GameServerGUI 3.2) Die Umsetzung in JAVA 1. Übergabe der Konfigurationsparameter 2. Neuer THREAD: GameServer a) Auszug aus der Klasse GameServerGUI

b) Auszug aus der Klasse GameServer 3.2) Die Umsetzung in JAVA Überwachung, ob neuer Server gestartet werden darf Start eines neuen Threads: GameVerbindung b) Auszug aus der Klasse GameServer

c) Auszug aus der Klasse GameVerbindung 3.2) Die Umsetzung in JAVA Versucht neue Verbindung aufzubauen Liegen Daten an, werden diese weitergeleitet. c) Auszug aus der Klasse GameVerbindung

Die Methode: verbinden(int port) 3.2) Die Umsetzung in JAVA c) Auszug aus der Klasse GameVerbindung

d) Auszug aus der Klasse GameUser 3.2) Die Umsetzung in JAVA Filterfunktion Dienstleistung d) Auszug aus der Klasse GameUser

e) Teile des Client-Moduls 1 3.2) Die Umsetzung in JAVA Java.io und java.net Socket + Ströme Eigener Thread Verbindung aufbauen Thread starten import java.io.*; import java.net.*; ---------------------------------------------------------------------------------------- Socket Verbindung; DataInputStream Eingangsstrom; PrintStream Ausgangsstrom; Thread lesethread; Verbindung = new Socket("192.168.0.1",6666); Eingangsstrom = new DataInputStream(Verbindung.getInputStream()); Ausgangsstrom = new PrintStream(Verbindung.getOutputStream()); lesethread = new Thread(this); lesethread.start(); e) Teile des Client-Moduls 1

e) Teile des Client-Moduls 2 3.2) Die Umsetzung in JAVA e) Teile des Client-Moduls 2 // In diesem Thread wird dauernd auf Daten gewartet public void run() { String Eingangsdaten; try while (true) Eingangsdaten = Eingangsstrom.readLine(); if(Eingangsdaten!=null) Empfang = new Button(); Empfang.setLabel("Eingegangene Daten: "+Eingangsdaten); Fenster.add(Empfang); Fenster.show(); ------------------------------------------------------------------------------------------------------------------- public void actionPerformed (ActionEvent Ereignis) ... if (Ereignis.getSource() == Abschicken) Nachricht = Eingabefenster.getText(); Ausgangsstrom.println(Nachricht); } run()-Methode readLine()-Methode Label + Button Interface ActionListener ActionEvent-Objekt println()-Methode

Hürden, die zu überwinden waren: 4) Ein paar Anmerkungen ... Hürden, die zu überwinden waren: Sicherheitsaspekte bei JAVA-Applets  Testphase ohne Java News & Music - Server Servergeschwindigkeit  Performance contra Benutzerfreundlichkeit Erfahrungen mit Excelsior JET Synchronisation Client/Server  Informationsaustausch

© 2003 by Knut Riechmann, Lemgo ENDE © 2003 by Knut Riechmann, Lemgo