620 likes | 786 Views
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
E N D
Multiagententheorie und -technologie WS 2002/03 Grundlagen der Java-Programmierung
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
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
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
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
Java Einführung Tim Stockheim Grundlagen der Java-Programmierung
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
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
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
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
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
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
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
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
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
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
JAVA Tutorial Grundlagen der Java-Programmierung
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
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
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
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
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
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
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
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
JAVA: Datentypen • weitere elementare Datentypen in Java float Gleitkommazahl double Gleitkommazahl char einzelnes Zeichen Grundlagen der Java-Programmierung
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
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
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
Java Einführung - Ende erster Teil - Grundlagen der Java-Programmierung
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
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
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
ausdruck nein ja anweisung1 anweisung2 Ablaufstruktur: Alternative if (ausdruck) anweisung1; else anweisung2; Grundlagen der Java-Programmierung
Ausdruck Fall 1 ... others Anw. 1 Fall N Ausnahme- Anw. Anw. N Ablaufstruktur: Alternative • Switch-Bedingung Grundlagen der Java-Programmierung
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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