1 / 62

Multiagententheorie und -technologie WS 2002/03

Multiagententheorie und -technologie WS 2002/03. Ablaufplan. 17.10.2002 Einführung in Java: Variablen, logische und arithmetische Operatoren, Bedingungen und Schleifen, Arrays 24.10.2002 Einführung in Java: Installation des JDK, Klassenkonzept und Vererbung, Beispiele

allyson
Download Presentation

Multiagententheorie und -technologie WS 2002/03

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Multiagententheorie und -technologie WS 2002/03 Grundlagen der Java-Programmierung

  2. Ablaufplan • 17.10.2002 Einführung in Java: Variablen, logische und arithmetische Operatoren, Bedingungen und Schleifen, Arrays • 24.10.2002 Einführung in Java: Installation des JDK, Klassenkonzept und Vererbung, Beispiele • 31.10.2002 Einführung in Java: Pakete, Input/Output-Operationen, Beispiele • 7.11.2002 Einführung in Java: Exceptions, weitere Programmbeispiele • 14.11.2002 Theorie: Intelligente Agenten Grundlagen der Java-Programmierung

  3. Ablaufplan • 21.11.2002 Theorie: Multiagentensysteme und Gemeinschaften von Agenten • 28.11.2002 Zulieferketten: Supply Chain Game • 5.12.2002 Einführung in JADE: Übersicht, Klassen und Methoden • 12.12.2002 Einführung in JADE: Messages senden und empfangen • 19.12.2002 Einführung in JADE: Vertiefung anhand von Beispielen Grundlagen der Java-Programmierung

  4. Ablaufplan • 19.12.2002 Einführung in JADE: Tutorial zu Sourcen der Aufgabenstellung • 16.01.2003 Softwareagenten: Verteiltes Planen und Lösen von Problemen • 30.01.2003 Softwareagenten: Industrielle Anwendungen von Multi- Agenten-Systemen • 6.02.2002 Abgabe des praktischen Teils, Fragestunde zur Klausur Grundlagen der Java-Programmierung

  5. Die Programmiersprache JAVA • Literaturhinweise zu Java: • Guido Krüger: Handbuch der Java-Programmierung, 3. Auflage Addison-Wesley, 2002http://www.javabuch.de • David Flanagan: Java in a Nutshell, O‘Reilly, 3. Auflage, 2000 • David Flanagan: Java Examples in a Nutshell, O‘Reilly, 3. Auflage, 2000 WWW-Adresse: http://www.javasoft.com Grundlagen der Java-Programmierung

  6. Java Einführung Tim Stockheim Grundlagen der Java-Programmierung

  7. Die Programmiersprache JAVA • Entwickelt von SUN Microsystems mit dem Ziel einer Programmiersprache für PDAs • Sprachkonzept erwies sich als ideal für die Anforderungen des WWW • Erste Version 1995 vorgestellt • Syntax ähnelt der von C bzw. C++, inhaltlich bestehen aber deutliche Unterschiede Grundlagen der Java-Programmierung

  8. JAVA ist objektorientiert • In einem objektorientierten System besteht eine Klasse aus einer Reihe von Daten, sowie aus Methoden, die mit diesen Daten arbeiten. • Zusammengenommen beschreiben Daten und Methoden den Zustand und das Verhalten eines Objekts. Grundlagen der Java-Programmierung

  9. JAVA ist objektorientiert • Klassen werden in einer Hierarchie angeordnet, so dass Unterklassen das Verhalten von übergeordneten Klassen (Superklassen) erben können. • Eine Klassenhierarchie besitzt immer eine Stammklasse. Diese Klasse besitzt ein sehr allgemeines Verhalten. Grundlagen der Java-Programmierung

  10. JAVA ist objektorientiert • Java wird mit einem sehr umfangreichen Satz von Klassen ausgeliefert. Diese sind in Paketen angeordnet, die in den Programmen verwendet werden können. • Beispielsweise stellt Java Klassen zur Verfügung, mit denen Komponenten grafischer Benutzerschnittstellen erzeugt werden können (das java.awt-Paket). Grundlagen der Java-Programmierung

  11. JAVA ist objektorientiert • Java stellt Klassen zur Verfügung, mit denen die Ein- und Ausgabe behandelt wird (das java.io-Paket), sowie Klassen, die die Netzwerkfunktionalität unterstützen (das java.net-Paket). • Die Objects-Klasse (im java.lang-Paket) bildet dabei den "Stamm" der Java-Klassenhierarchie. Grundlagen der Java-Programmierung

  12. JAVA ist interpretiert • Java ist eine interpretierte Sprache: Der Java-Compiler erzeugt einen Byte-Code für die Java Virtual Machine (JVM) und keinen direkten Maschinencode. • Um ein Java-Programm auszuführen, wird der Java-Interpreter benutzt, der den kompilierten Byte-Code ausführt. Grundlagen der Java-Programmierung

  13. JAVA ist plattformunabhängig • Weil sich Java-Programme in ein plattformunabhängiges Byte-Codeformat übersetzen lassen, kann eine Java-Anwendung auf jedem System ausgeführt werden, solange auf diesem System die Java Virtual Machine implementiert ist. Grundlagen der Java-Programmierung

  14. JAVA ist plattformunabhängig • Das ist insbesondere für Anwendungen wichtig, die über das Internet oder andere heterogene Netzwerke verteilt werden. • Ein architekturunabhängiger Ansatz ist aber auch über den Rahmen netzwerkbasierter Anwendungen hinaus interessant. Grundlagen der Java-Programmierung

  15. Begriffe • Eigenständige Applikation ("normales, ausführbares Programm") • Applet: • innerhalb eines Web-Browser oder eines Applet-Viewer ausführbar. • Container bildet zweites Betriebssystem • teilt Einschränkungen des Web-Browsers: • kein Lese-Zugriff auf Dateisystem des Clientrechner (außer: Benutzer erlaubt es) • nur Verbindung zum Host, von dem es geladen wurde • keine Möglichkeit des Starts von auf dem Clientrechner vorhandenen Programmen Diese Modell wird auch als Sandbox bezeichnet. Grundlagen der Java-Programmierung

  16. Java Development Kit (JDK) • Plattformen: • Windows, Macintosh, Linux, Sun Solaris, ... • Befehlszeilenorientiertes Tool • JDK - Zusammensetzung aus mehreren Tools: • Compiler: javac • Interpreter: java • Disassembler: javap • Appletviewer: appletviewer • ... Grundlagen der Java-Programmierung

  17. JAVA Tutorial Grundlagen der Java-Programmierung

  18. JAVA: Die Syntax • Jede Anweisung muß mit einem Semikolon (;) abgeschlossen werden. • JAVA unterscheidet Groß-/Kleinschreibung, d.h. z.B. "anzahl" ungleich "Anzahl". • Beliebiges Einfügen von Leerzeichen / Leerzeilen zwischen Anweisungen zulässig. • Kommentare innerhalb eines JAVA-Programms werden mit "/*" eingeleitet und mit "*/" beendet, z.B. /* Dies ist ein Kommentar */ • Kommentare, die nur bis zum Zeilenende gehen, werden mit "//" eingeleitet, z.B. // Kommentar Grundlagen der Java-Programmierung

  19. Beispiel 1 class HelloWorld { public static void main( String[] args) { System.out.println(“Hello World!“); } } • Dieses Programm besteht, wie jedes Java-Programm, aus einer Klassendefinition vom Typ public. Grundlagen der Java-Programmierung

  20. Beispiel 1 • Die Klasse enthält eine Methode namens main(), die den Einstiegspunkt für alle Java-Anwendungen darstellt, d.h. an diesem Punkt beginnt der Java-Interpreter mit der Ausführung des Programms. • main()selbst besteht nur aus einer einzigen Zeile, die unsere Nachricht ausgibt: Hello World! Grundlagen der Java-Programmierung

  21. Beispiel 1 • Das Programm muß in einer Datei gesichert werden, die den gleichen Namen besitzt, wie die public-Klasse, wobei noch die Erweiterung .java anzuhängen ist. • Um das Programm zu kompilieren, verwendet man javac C:\>javac HelloWorld.java • Dieser Befehl erzeugt die Datei HelloWorld.class im aktuellen Verzeichnis. Grundlagen der Java-Programmierung

  22. Beispiel 1 • Um das Programm auszuführen, wird der Java-Interpreterjava verwendet: C:\>java HelloWorld • Beachten Sie beim Aufruf des Interpreters, daß der Dateiname ohne das anhängende .class angegeben wird. Grundlagen der Java-Programmierung

  23. JAVA: Variablen • Variablen repräsentieren Speicherplätze zur Aufnahme veränderlicher Werte in einem Programm. • erlaubte Zeichen für Variablennamen: • Buchstaben des engl. Alphabets (ohne Umlaute), • 10 Ziffern, • Unterstrich "_". • Die erste Stelle darf keine Ziffer sein! • Programmierer dürfen keine reservierten Wörter für eigene Namen verwenden (z.B. main, int,...) Grundlagen der Java-Programmierung

  24. JAVA: Variablen • Alle Variablen müssen deklariert werden, bevor sie benutzt werden können. • Notation für Variablendeklaration: Datentyp variable1,...,variablen; • Bedeutung: Variable1,...,Variablen sind vom angegebenen Datentyp. • Beispiel: int v1, v2, v3; char v4; float v5; Grundlagen der Java-Programmierung

  25. JAVA: Datentypen • Datentypen definieren Struktur und Wertebereiche der von einem Programm zu verarbeitenden Daten. • elementare Datentypen in JAVA (Call by value): boolean - Wahrheitswert byte, short, int, long - ganze Zahlen Beispiel: int a; // erzeugt eine Variable vom Typ int. boolean b = true; /* erzeugt einen Wahrheitswert und setzt diesen auf true */ Grundlagen der Java-Programmierung

  26. JAVA: Datentypen • weitere elementare Datentypen in Java float Gleitkommazahl double Gleitkommazahl char einzelnes Zeichen Grundlagen der Java-Programmierung

  27. Gleitkommazahlen (Fließkommazahlen, Floating Point Numbers) • zur näherungsweisen Darstellung reeller Zahlen auf Rechnern. • Zahlen werden dargestellt in der Form m . be • b, e ganze Zahlen • m = Mantisse, gibt Zahlenwert an • e = Exponent, charakterisiert die Größenordnung der Zahl • b = Basis (z.B. 10) • z.B. 12.25: 0.1225 . 102 122.5: 0.1225 . 103 Grundlagen der Java-Programmierung

  28. JAVA: Arrays • Felder zur Erfassung mehrerer Variablen vom selben Typ • Arrays müssen initialisiert werden. • Auslesen bzw. beschreiben darf nur im initialisierten Bereich erfolgen. Beispiel: int[] b = new int[10]; /* erzeugt ein Feld vom Typ int mit 10 Speicherplätzen */ Grundlagen der Java-Programmierung

  29. JAVA: Arithmetik Operatoren werden nur auf elementare Datentypen (und Strings [+]) angewendet. + Addition - Subtraktion; Vorzeichen * Multiplikation / Division (int-Typen: ganzzahliger Anteil: 17/3 = 5) % Divisionsrest (nur bei int-Typen: 17%3 = 2) Grundlagen der Java-Programmierung

  30. Java Einführung - Ende erster Teil - Grundlagen der Java-Programmierung

  31. JAVA: Methoden • Eine Methode besteht aus der Deklaration und einem Methodenkörper, wobei dieser in geschweiften Klammern steht. Bsp.:public boolean funct ( int a) { return true; } • public gibt hier die Zugriffsberechtigungen an (jeder) • boolean bedeutet, dass die Methode einen boolean-Wert zurückgeben muss • int a beschreibt, den Typ und Namen des übergebenen Wertes, wobei a dem Namen innerhalb der Methode entspricht Grundlagen der Java-Programmierung

  32. JAVA: Methoden • "void" weist darauf hin, daß eine Funktion keinen Funktionswert erzeugt. Bsp.:void funct( int a) erzeugt keinen Funktionswert. • Falls kein Eingabeparameter benötigt wird, verwendet man ein leeres Klammerpaar: Bsp.:int funct() benötigt keine Eingabeparameter Grundlagen der Java-Programmierung

  33. Einlesen zahl1 Einlesen zahl2 Ergebnis = zahl1 * zahl2; Ausgabe Ergebnis Ablaufstruktur: Sequenz class Produkt { public static void main(String[] args) { int zahl1, zahl2, ergebnis; zahl1 = Integer.parseInt(args[0]); zahl2 = Integer.parseInt(args[1]); ergebnis = zahl1*zahl2; System.out.println( "Das Produkt ist: " + ergebnis); } } Grundlagen der Java-Programmierung

  34. ausdruck nein ja anweisung1 anweisung2 Ablaufstruktur: Alternative if (ausdruck) anweisung1; else anweisung2; Grundlagen der Java-Programmierung

  35. Ausdruck Fall 1 ... others Anw. 1 Fall N Ausnahme- Anw. Anw. N Ablaufstruktur: Alternative • Switch-Bedingung Grundlagen der Java-Programmierung

  36. Ablaufstruktur: Alternative Switch-Bedingung class unterscheidung { public static void main(String[] args) { int zahl; zahl = Integer.parseInt(args[0]); switch(zahl) { case 1: System.out.println("sehr gut"); break; case 2: System.out.println("gut"); break; case 3: System.out.println("befriedigend"); break; case 4: System.out.println("ausreichend"); break; case 5: System.out.println("mangelhaft"); break; default: System.out.println("Falsche Eingabe!"); } } } Grundlagen der Java-Programmierung

  37. While bedingung anweisung Ablaufstruktur: Wiederholung • abweisende Schleife while ( bedingung) anweisung; • Bedeutung: • Solange bedingung "wahr" (true) ist, wird anweisung ausgeführt. • Abbruchtest vor jedem Schleifendurchlauf. Grundlagen der Java-Programmierung

  38. Ablaufstruktur: Wiederholung Abweisende Schleife: while class Produkt2 { public static void main(String[] args) { int produkt = 1; int i = 0; while ( Integer.parseInt(args[i]) != 0) { produkt *= Integer.parseInt(args[i]); i++; // gleichbedeutend mit i=i+1; } System.out.println("Ergebnis: "+produkt); } } Grundlagen der Java-Programmierung

  39. anweisung do while bedingung Ablaufstruktur: Wiederholung • Wiederholung: annehmende Schleife do anweisung; while (bedingung) • Bedeutung: • anweisung wird ausgeführt, solange bedingung „wahr“ ist. • Abbruchtest nach dem Schleifendurchlauf. • anweisung wird also mindestens einmal ausgeführt. Grundlagen der Java-Programmierung

  40. Ablaufstruktur: Wiederholung Annehmende Schleife: do ... while class Produkt3 { public static void main(String[] args){ int produkt = 1; int i = 0; do { produkt *= Integer.parseInt(args[i]); i++; } while ( Integer.parseInt(args[i]) != 0); System.out.println( "Ergebnis: "+produkt); } } Grundlagen der Java-Programmierung

  41. Exkurs: Wiederholungfor-Schleife Schleife: for( Initialisierung; Bedingung; Änderung) { … } class Produkt3 { public static void main(String[] args){ int produkt = 1; for( int i=0; i<args.length; i++) { produkt *= Integer.parseInt(args[i]); } System.out.println( "Ergebnis: "+produkt); } } Grundlagen der Java-Programmierung

  42. Kommandozeilenargumente • Das einzige Argument an main()ist ein Array von Strings, der üblicherweise args genannt wird. • Die Länge dieses Arrays ist über args.length verfügbar. • Die Elemente dieses Arrays sind die Argumente, die in der Kommandozeile nach dem Klassennamen angegeben wurden. • Beispiel 2 zeigt ein Programm, das einfach seine Argumente ausgibt: Grundlagen der Java-Programmierung

  43. Beispiel 2 class echo { public static void main(String[] args) { for( int i=0; i < args.length; i++) System.out.print(args[i] + “ “); System.out.print(“\n“); System.exit(0); } } • Zu beachten: main()muß so deklariert sein, daß es void zurückgibt. • Aus einem Java-Programm kann also kein Wert zurückgegeben werden, indem eine return-Anweisung in main() verwendet wird. Grundlagen der Java-Programmierung

  44. Beispiel 2 • Wenn ein Wert zurückgeliefert werden soll, wird System.exit() mit dem gewünschten Integer-Wert aufgerufen(vgl. Beispiel 2). • Zu beachten: die Verarbeitung und Interpretation dieses Exit-Wertes hängt vom Betriebssystem ab. Grundlagen der Java-Programmierung

  45. Einführung in Klassen und Objekte • Eine Klasse ist eine Sammlung von Daten sowie von Methoden, die mit diesen Daten arbeiten. • Die Daten und Methoden dienen zusammengenommen üblicherweise dazu, den Inhalt und die Fähigkeit irgendeiner Art von Objekt zu definieren. Grundlagen der Java-Programmierung

  46. Einführung in Klassen und Objekte • Zum Beispiel kann ein Kreis durch die X/Y-Position seines Mittelpunktes und durch seinen Radius beschrieben werden. • Auf Kreisen können verschiedene Operationen ausgeführt werden: ihren Umfang berechnen; ihre Flächen berechnen; prüfen, ob bestimmte Punkte innerhalb des Kreises liegen usw. Grundlagen der Java-Programmierung

  47. Einführung in Klassen und Objekte • Jeder konkrete Kreis besitzt individuelle Werte (d.h. einen konkreten Mittelpunkt und Radius), aber als Klasse betrachtet besitzen Kreise bestimmte gemeinsame Eigenschaften, die in einer Definition zusammengefaßt werden können. • Zu beachten: die Klassendefinition im folgenden Beispiel 3 enthält Daten und Methoden. Grundlagen der Java-Programmierung

  48. Beispiel 3 public class Circle { public double x, y; // Die Koordinaten des // Mittelpunktes. public double r; // Der Radius. /* Methoden zur Ermittlung des Umfangs und der Fläche des Kreises */ public double circumfence() { return 2 * 3.14159 * r; } public double area() { return 3.14159 * r*r; } } Grundlagen der Java-Programmierung

  49. Objekte sind Instanzen einer Klasse • Um die Circle-Klasse "anwenden" zu können, wird ein konkreter Kreis benötigt. • Mit anderen Worten: es wird eine Instanz der Klasse Circle benötigt, ein konkretes Circle-Objekt. Grundlagen der Java-Programmierung

  50. Objekte sind Instanzen einer Klasse • Durch Definition der Circle-Klasse in Java wurde ein neuer Datentyp erzeugt. Nun können Variablen dieses Typs deklariert werden: Circle c; • Diese Variable c ist aber nur ein Name, der auf ein Kreisobjekt verweist, er ist nicht das Objekt selbst. • Bei Java müssen alle Objekte dynamisch erzeugt werden, dies geschieht meist mit dem Schlüsselwort new: Circle c; c = new Circle(); Grundlagen der Java-Programmierung

More Related