Algorithmen und Datenstrukturen

Ähnliche Dokumente
Praktikum 1: Einführung, BMI Rechner

Einführung in das Programmieren

Arbeitsblatt 5 EAD II NetBeans

Eclipse Tutorial.doc

Praktikum 4: Grafiken und Ereignisse

Einführung: Verteilte Systeme - Remote Method Invocation -

Graphische Benutzungsoberflächen mit Java. Einführung in NetBeans

Im Mathe-Pool startet man Eclipse am besten aus einer Shell heraus, und zwar indem man im Home- Verzeichnis den Befehl

Einrichten einer Debug- Umgebung in Eclipse

JUnit 4 Tutorial. Wolfgang Stöttinger

Javakurs für Anfänger

Inhalt. Dokument Beschreibung. Bentley Technical Support ProStructures.Net - Zusatzprogrammierung Visual Basic Express PST_Bearbeitung_Dialog

KR-mega32-16 rev. 2.3 Thomas Krause, Krause Robotik

Institut für Programmierung und Reaktive Systeme. Java 1. Markus Reschke

Wiederholung. Klassenhierarchie:

Übungsklausur Programmieren / Algorithmen und Datenstrukturen 1

Programmierkurs Java

Vorkurs Informatik WiSe 17/18

Multimedia im Netz Wintersemester 2012/13

Programmieren I. Dokumentation mit javadoc Heusch 10.4 Ratz Institut für Angewandte Informatik

Mobile und Verteilte Datenbanken

Eine Kommando-Oberfläche für.net

Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter

Installationsanleitung

Programmierung Nachklausurtutorium

Grafische Benutzeroberflächen

Vorkurs Informatik WiSe 16/17

Projektarbeit Java. 4-Gewinnt. Berner Fachhochschule. 2004, Labor für Technische Informatik

Mobile und Verteilte Datenbanken

Programmieren in Java

Virtueller Campus. Virtueller Campus Horw mit interaktiver Steuerung. HowTo: Scripting-Komponente in Betrieb nehmen

Installation von LeJOS für NXT und Einrichtung von Eclipse

Informatik I Eprog HS12

Dokumentations-Richtlinien

Leitende Aufgabe Flight Management System Abgabedokumentation Softwareengineering

Graphische Benutzungsoberflächen

Polymorphie/Späte Bindung Abstrakte Klassen Interfaces. Polymorphie/Späte Bindung Abstrakte Klassen Interfaces

Nutzung von NetBeans

SET-ACL. Dokumentation

Nachklausur Programmieren / Algorithmen und Datenstrukturen 1

Einrichten des IIS für DataFlex WebApp Server. Einrichten des IIS (Internet Information Server) für DataFlex WebApp Server

Klausur: Java (Liste P)

Das Build Tool Ant. Sebastian Mancke,

Rückgabewerte von Methoden

NetMan Desktop Manager Quickstart-Guide

Kurzanleitung Eclipse

Etiketten-Druck mit Quick Report Design

Remote Method Invocation

IBM Software Demos Rational Systems Developer Introduction

Einführung in die Programmierung für NF. Übung

Dabei sollen die Nutzern nach einer Authentifizierung entsprechend ihren Rechten Begriffe ändern, anlegen und kommentieren können.

Praktikum Information Retrieval Wochen 12: Suchmaschine

C# - Einführung in die Programmiersprache Methoden. Leibniz Universität IT Services

/** Main-Methode erzeugt einen neuen Editor zum Testen */ public static void main(string[] args) { new Editor();

Lehrstuhl für betriebswirtschaftliche Informationssysteme Prof. Dr. Joachim Fischer. Installationsanleitung SAPGUI

Software Design basierend auf dem Plug-In Konzept

Implementieren von Klassen

Klausur Software-Entwicklung März 01

Systemprogrammierung. Projekt: Java RMI. Wintersemester 2006 / 2007

Probeklausur Informatik 2 Sommersemester 2013

Erstellen eines RS-Flip-Flops mit Hilfe eines Blockdiagramms

Python 3.6. Erste Schritte auf dem Mac. Syshack. 22. Juni 2017 Version 2.0. Python Erste Schritte auf dem Mac Syshack, 22.

Handbuch für die Erweiterbarkeit

MAILCHIMPCONNECTOR FÜR DAYLITE

Mit PuTTY und WinSCP an der Pi

Aufgabe11. Methode test1. import java.util.hashmap; import java.util.arraylist; public class Aufgabe11 {

Grafische Benutzeroberflächen

HowTo SoftEther Site-2-Site (Client-Bridge)

Grafische Benutzeroberflächen

Zahlenraten: Ein Spiel in Java.

Anleitung. Ein einfaches RMI-Beispiel. (ab Java 5.0) c Y. Pfeifer. (Juni 2014)

BIF/SWE - Übungsbeispiel

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 15/16. Kapitel 7. Grafische Benutzeroberflächen 1

Aufgabenblatt 1: - Präsenzübung für die Übungen Do Mi Ausgabe Mi

EPROG 2.Teilprüfung. Aufgabe 1:

Programmieren II. Java im Vergleich zu anderen Sprachen. Einführung: GUI. Einführung: Grafische Benutzeroberflächen. Dr.

Tutoraufgabe 1 (Code-Analyse):

SatChannelListEditor und TitanNit

Programmieren I. Entwicklungsumgebungen Eclipse, NetBeans und IntelliJ IDEA. Institut für Angewandte Informatik

Remote Method Invocation

Transkript:

Algorithmen und Datenstrukturen Der Experimentierkasten In diesem Semester werden wir eine Reihe von Algorithmen kennenlernen und mit diesen Experimente durchführen. Dafür benötigen wir einen geeigneten "Experimentierkasten". Dieser soll in einem sogenannten Client-Server-Arrangement realisiert werden. Der Client stellt dabei die Benützerschnittstelle zur Verfügung, der Server enthält die Experimente, die Implementierung der Lösung der Aufgaben. Der Client soll so entworfen werden, dass beliebige Server auch nachträglich hinzugefügt werden können (wir werden in den folgenden Aufgaben immer wieder neue Server schreiben). Dabei muss der Client lediglich wissen, wie der Server aufgerufen werden kann, er muss also die Schnittstelle kennen. Die Schnittstelle wird in Java als Interface (Bsp. CommandExecutor) realisiert, welches vom Server (Bsp. AnyServer) implementiert wird. Zusätzlich müssen wir Server nachladen, bzw. Klassen instanzieren können, von denen wir lediglich den Namen (als String) kennen. Für diesen Zweck implementieren wir eine Klasse ServerFactory, mit der Objekte beliebiger Klassen die den CommandExecutor implementieren instanziert werden können. ExBox CommandInterpreter command; TextArea ta; TextField tf; actionperformed CommandExecutor <<interface>> String execute (String args); AnyServer command.execute (...); String execute (String args) ServerFactory CommandExecutor createserver (String cls) 1

Vorbereiten von NetBeans Für diese Praktika empfiehlt Ihnen der Dozent NetBeans. Sie können auch jede andere Ihnen gewohnte IDE/Editor verwenden (IntelliJ, Eclipse, Notepad, vi, emacs aber NICHT BlueJ). Sie müssen dann die nachfolgend beschriebenen Einstellungen ebenfalls analog vornehmen. - Erstellen Sie in ein neues Java Projekt - Nennen Sie dieses ExBox - Die Main Klasse soll NICHT erstellt werden 2

- Navigieren Sie mittels des Explorers zu dem neu erstellten Verzeichnis - Im src Folder erstellen Sie die geschachtelten Verzeichnisse ch, zhaw, ads. - Kopieren Sie die bereitgestellten Java Quellen (ausser AnyServer.java) in dieses Verzeichnis - Im Projekt sollten die Quellen jetzt auftauchen und sie sollten die ExBox starten können. - Erstellen Sie ein Java Projekt für AnyServer und kopieren Sie AnyServer analog oben in das src Verzeichnis - Rechsklick auf das Project Properties Libraries - Fügen Sie das Project ExBox.jar zum AnyServer hinzu 3

- Setzen Sie die Main Klasse im AnyServer Projekt zu ch.zhaw.ads.exbox - Das Working Directory wie unten beschrieben setzen - Sie sollten nun AnyServer ebenfalls starten können und es sollte die ExBox erscheinen. - Im Menu der ExBox sollte unter Server Connect der AnyServer auftauchen 4

Beschreibung der Funktionalität Die unten spezifizierten Funktionen werden implementiert. AnyServer stellt einen Beispiel-Server dar, welcher das Interface CommandExecutor implementiert. Letzteres ist das Interface, das von allen Servern implementiert werden muss. In jedem Praktikum werden Sie einen oder mehrere dieser Server implementieren. public interface CommandExecutor { public String executor(string command); } public class AnyServer implements CommandExecutor { public String executor(string command) { // Experiement } Beschreibung der Funktion Das Hauptfenster des GUI-Client enthält zwei Bereiche: 1) eine Textzeile für die Eingabe der Befehle und Argumente und 2) ein Textfenster, das die Resultate der ausgeführten Befehle anzeigt. Ferner enthält der Menubalken mehreren Menugruppen: 1. In der Menugruppe "File" ermöglicht "Exit" das Fenster zu schliessen (wird automatisch generiert) 2. In der Menugruppe "Server" ermöglicht "Connect" die Verbindungsaufnahme zu einem Server, der das Interface CommandExecutor implementiert. Hinweis: verwenden Sie die FileDialog Klasse um den Klasse(File)namen zu finden: FileDialog fd = new FileDialog(this,"Connect"); fd.setfile("*server.class"); fd.setdirectory(".\\build\\classes\\ch\\zhaw\\ads"); fd.setvisible(true); String name = fd.getfile(); ServerFactory sf = new ServerFactory(); command = sf.createserver(name); 5

settitle("exbox connected to "+ name); 3. In der Klasse ServerFactory wird ein Objekt der Klasse deren Namen im Argument der Methode createserver übergeben wird instanziert: Class.forName(<className> 1 ).newinstance(); 4. Sobald der Enter-Knopf gedrückt wird oder "Enter" eingegeben wird, ruft der Client die Methode String execute (String command) des Servers auf. Die von dieser Methode zurückgegebenen Daten übernimmt der Client und stellt sie im Textfenster dar. 5. Die TextArea muss in eine ScrollPane eingebettet werden, damit die Scrollbalken erscheinen. 6. File Open öffnet ein File und übergibt den Inhalt der excecute Methode Einhaltung der "Cleancode" Richtlinien Um sicherzustellen, dass der Code den Konventionen "sauberer" Programmierung entspricht, verwenden wir PMD. PMD kann in NetBeans via plugins pmd installiert werden. Als pragmatischer Regelsatz hat sich MyRules.xml bewährt. Sie können diesen über tools options miscellaneous pmd in NetBeans setzen. Die voreingestellten Regeln sollten deaktiviert werden. Sämtliche abgegebenen Quellen sollten keine Warnungen bei der Abgabe mehr generieren. 1 Namen der Klasse (.class muss vom Dateinamen entfernt werden) 6