SWE-15 Werkzeuge zur Programmentwicklung integrierte Entwicklungsumgebung Editor Quellmodul (Source) Bibliothek Modulschnittstellen Übersetzer (Compiler) vorübersetzte Module Testhilfe (Debugger) Zielmodul (Code) Binder (Linker) Eingabe © 1999 bei Prof. Dr. Uwe Kastens ausführbares Programm Rechner mit Systemsoftware Eingabe Ausgabe Vorlesung Software-Entwicklung / Folie 15 Ziele: Vom Programm zur Ausführung in der Vorlesung: Aufgaben der Werkzeuge erläutern nachlesen: Judy Bishop: Java lernen, 3.Aufl., Abschnitt 1.2 nachlesen: GdP-11 Übungsaufgaben: Verständnisfragen: Warum ist separate Übersetzung sinnvoll? Ausgabe SWE-16 Ausführung von Java-Programmen Editor Quellmodul m1.java JavaÜbersetzer m2.class m1.class m3.class Java Modulbibliotheken auf Rechnern am Internet Zielmodule in Java-Bytecode Internet Browser © 1999 bei Prof. Dr. Uwe Kastens Eingabe Java-Bytecode Interpretierer Ausgabe Java-Bytecode ist maschinenunabhängig und wird von einem Interpretierer-Programm ausgeführt Vorlesung Software-Entwicklung / Folie 16 Ziele: Maschinenunabhängigkeit durch Interpretation in der Vorlesung: Java Bytecode, abstrakte Maschine, Rolle des Internet erläutern nachlesen: Judy Bishop: Java lernen, 3.Aufl., Abschnitt 1.1, 1.2 Übungsaufgaben: Verständnisfragen: Welche NEUEN Werkzeuge braucht man, damit Java auf einem neuen Rechnertyp läuft? Vergleichen Sie mit dem Szenario auf SWE-15 z. B. für C++. SWE-17 Variable und Zuweisung Eine Variable ist ein Name im Programm für eine Stelle im Speicher, die einen Wert enthält. Eine Zuweisung bestimmt oder ändert den Wert einer Variablen. Eine Deklaration bindet Namen an neue Variable. Sie können nur Werte des angegebenen Typs aufnehmen. Die Bindung gilt nur in einem bestimmten Bereich des Programms (Gültigkeitsbereich). Die Variablen existieren im Speicher nur für eine bestimmte Zeit (Lebensdauer). Formen von Variablendeklarationen: Typ Name; Typ Name1, Name2, ...; int year; double cDegree, fDegree; © 1999 bei Prof. Dr. Uwe Kastens Zuweisungen: Variable = cDegree = fDegree = cDegree = Typ int Name = Initialwert; msgNo = 1; Ausdruck; 10.0; cDegree * 9 / 5 + 32; cDegree + 10; Variable und Zuweisungen sind das Grundprinzip imperativer Sprachen: Der Programmzustand wird bestimmt durch eine Menge von Variablen mit ihren Werten. Zuweisungen im Programmablauf verändern den Zustand. Vorlesung Software-Entwicklung / Folie 17 Ziele: Variable und Zuweisungen als imperatives Grundprinzip in der Vorlesung: • Variable und Deklarationen erläutern • Rollen von Variablen in Zuweisungen nachlesen: Judy Bishop: Java lernen, 3.Aufl., Abschnitt 2.5 nachlesen: GdP-34 Übungsaufgaben: Verständnisfragen: • Geben Sie eine Folge von Zuweisungen an, aus der man eine Zuweisung streichen kann, ohne die Gesamtwirkung zu ändern. Welche Bedingung muß dafür gelten? • Welche Rolle haben initialisierte Variable, an die nicht zugewiesen werden darf? SWE-18 Klassen und Objekte Eine Klasse definiert gleichartige Objekte mit ihren Datenelementen (Variable) und Operationen (Methoden) in einer geschlossenen Programmstruktur. Beispiel: Klassenname Variable Methoden Konstruktormethode Circles x y radius getX () getY () getRadius () move (int,int) grow (double) Circles (int,int,double) © 2001 bei Prof. Dr. Uwe Kastens 3 Objekte der Klasse Circles: :Circles x = 0 y = 0 radius = 1.0 :Circles x = 1 y = 1 radius = 0.5 Vorlesung Software-Entwicklung / Folie 18 Ziele: Grundbegriffe zu Klassen verstehen in der Vorlesung: Erläuterung der Begriffe nachlesen: Judy Bishop: Java lernen, 3.Aufl., Abschnitt 2.3 Übungsaufgaben: Verständnisfragen: Was haben die drei Objekte gemeinsam und worin unterscheiden sie sich? :Circles x = 10 y = 20 radius = 100.0 SWE-19 Objekte einer Klasse bilden Objekte werden durch die new-Operation zu einer Klasse gebildet: new Circles (0, 0, 1.0) new-Operation führt zum Aufruf der Konstruktormethode. Die Parameter legen initiale Eigenschaften des Objektes fest. Das Ergebnis ist eine Objektreferenz (Identität des Objektes). Sie kann z. B. an eine Variable passenden Typs zugewiesen werden: Circles unit = new Circles (0, 0, 1.0); Circles small = new Circles (1, 1, 0.5); Circles big = new Circles (10, 20, 100.0); Alle Objekte sind verschieden, d. h. sie haben verschiedene Objektreferenzen. Das gilt auch, falls die Werte ihrer Objektvariablen gleich sind. © 1999 bei Prof. Dr. Uwe Kastens Ein Klassenname wird auch als Typangabe (z. B. Variablendeklarationen) verwendet, er steht dann für den Typ der Referenzen von Objekten der Klasse. Objektmethoden werden für ein bestimmtes Objekt aufgerufen. Sie benutzen dessen Objektvariablen und können sie auch verändern: big.getRadius() liefert den radius-Wert des Objektes in der Variablen big small.move(1,2); ändert dieKoordinaten des Objektes in der Variablen small Vorlesung Software-Entwicklung / Folie 19 Ziele: Den grundlegenden Objektbegriff verstehen in der Vorlesung: Erläuterungen zur Konstruktion und zur Identität von Objekten nachlesen: Judy Bishop: Java lernen, 3.Aufl., Abschnitt 2.3 Verständnisfragen: Können 2 Objekte durch Zustandsänderungen gleich werden? SWE-20 Klassenvariable, Klassenmethoden Klassenvariable und Klassenmethoden gehören inhaltlich zur Klasse insgesamt. Sie beziehen sich nicht auf ein spezielles Objekt. Sie werden über den Klassennamen zugegriffen: Circles.noOfObjects Eine Klassenvariable existiert nur einmal pro Klasse - nicht für jedes Objekt. Eine Klassenmethode greift nicht auf Objektvariable zu! Klassenvariable und -methoden werden durch static gekennzeichnet. Beispiel: Anzahl der zur Klasse Circles erzeugten Objekte zählen: © 1999 bei Prof. Dr. Uwe Kastens class Circles { ... Circles (int ix, int iy, double ir) { noOfCircles = noOfCircles + 1; ... } static int getCounter () { return noOfCircles; } private static int noOfCircles = 0; private int x, y; double radius; } Vorlesung Software-Entwicklung / Folie 20 Ziele: Unterscheiden Methoden und Variablen zu Objekten und zur Klasse in der Vorlesung: Erläuterungen am Beispiel der Klasse Circles nachlesen: Judy Bishop: Java lernen, 3.Aufl., Abschnitt 2.3 Übungsaufgaben: Verständnisfragen: Geben Sie weitere Beispiele für Klassen- und Objektvariablen bzw. -methoden an. Konstruktor Klassenmethode Klassenvariable Objektvariable SWE-21 Begriffe zur Struktur objektorientierter Programme Programm besteht aus Klassen besteht aus Elemente members sind Datenelemente (Variable) fields Methoden Konstruktor sind sind Klassenvariable Objektvariable Objektmethoden haben © 1999 bei Prof. Dr. Uwe Kastens Klassenmethoden ohne Ergebnis sind mit besteht aus Typ Parameter (Variable) lokale Variable Vorlesung Software-Entwicklung / Folie 21 Ziele: Begriffe einprägen und präzise verwenden in der Vorlesung: Erläuterungen dazu nachlesen: Judy Bishop: Java lernen, 3.Aufl., Abschnitt 2.2 Anweisungen statements SWE-22 Einfache Ausgabe Klassen in vordefinierten Standardbibliotheken machen einfache Ausgabefunktionen verfügbar: class System { ... static PrintStream out; static InputStream in; ... } class PrintStream { ... void print (String s) {...} void println (String s) {...} void println () {...} ... } Einfache Aufrufe von Ausgabefunktionen mit String-Objekten als Parameter: © 1999 bei Prof. Dr. Uwe Kastens System.out.println System.out.println System.out.println System.out.println ("Welcome to Java"); ("Welcome " + "to " + "Java"); ("Die Gesamtnote ist " + gesamtNote); (); String ist eine vordefinierte Klasse für Zeichenreihen als Datentyp mit Operationen darauf. String-Literale: z. B. "Welcome to Java" Der Operator + konkateniert zwei String-Objekte. Operanden von Grundtypen (z. B. int) werden dazu in String-Objekte konvertiert. Vorlesung Software-Entwicklung / Folie 22 Ziele: Einfache Ausgabefunktionen kennenlernen in der Vorlesung: Erläuterungen dazu nachlesen: Judy Bishop: Java lernen, 3.Aufl., Abschnitt 2.4 Übungsaufgaben: Tabellen drucken