Programmübersetzung: Binden und Laden Binder und Lader

Werbung
Programmübersetzung: Binden und Laden
Programmausführung: Interpreter
Binder und Lader:
• Zusammenfassen verschiedener Maschinencode-Fragmente (mit
relativen Adressen) zu einem ausführbaren Programm (z.B. Code aus
Bibliotheken und eigener Code)
• Umwandeln relativer in absolute Adressen und Laden des Programms
an eine geeignete Stelle im Hauptspeicher
• Ein Interpreter analysiert wie ein Compiler den Quelltext,
führt aber keine vollständige Übersetzung in
Maschinensprache durch, sondern führt das Programm aus
– Programmtext wird entweder unmittelbar ausgeführt oder
– in einen Zwischencode übersetzt, der den Programmtext
interpretiert.
• Beispiele
– Perl, Basic, Skriptsprachen
Wolfgang Goerigk: Objektorientierte Programmierung in Java (SS 2009)
46
Programmausführung von Java-Programmen:
– plattformunabhängiges
Code-Format
– kann auch über das Netz
transportiert werden
übersetzt
prog.java
Java-Compiler
Java-Bytecode
prog.class
• JVM interpretiert Bytecode
– auf verschiedenen
Plattformen (Windows,
Linux, PDA, Handy, …)
47
Grundbegriffe objektorientierter Programmierung
Java-Programm
• Compiler erzeugt Bytecode
Wolfgang Goerigk: Objektorientierte Programmierung in Java (SS 2009)
•
•
•
•
Objektorientierte Programmierung
Erste Java-Programme
Java als Programmiersprache
Imperativ, objektorientiert
JVM1
JVM2
interpretiert
JVM3
% java prog arg1 arg2 …
Wolfgang Goerigk: Objektorientierte Programmierung in Java (SS 2009)
48
Wolfgang Goerigk: Objektorientierte Programmierung in Java (SS 2009)
49
Objektorientierte Programmierung (OOP)
Ein erstes Java-Programm und seine Bestandteile
• Ziele
– Verkürzung der Entwicklungszeit
– Senkung der Fehlerrate (Verbesserung der Qualität)
– verbesserte Erweiterbarkeit und Anpassungsfähigkeit
public class HelloWorld {
public static void main(String[] args) {
Speaker sprecher;
sprecher = new Speaker();
sprecher.say("Hello, " + args[0]);
}
}
• Hauptmerkmale
– Kapselung
• genau definierte Schnittstellen
• Verbergen von Implementierungsdetails
– Vererbung
• einfache Modifikation und Erweiterung von bereits vorhandenen Komponenten
– Polymorphie
class Speaker {
public void say(String what) {
System.out.println(what);
}
}
• gleichartige Funktionalität für verschiedene Datentypen
• Datentypabhängige Bedeutung von Operatoren und Funktionen
Wolfgang Goerigk: Objektorientierte Programmierung in Java (SS 2009)
50
Ein erstes Java-Programm und seine Bestandteile
•
class
– Definieren einer Klasse
•
new
– Anlegen eines Objektes
(Instanzierung einer Klasse)
•
public
– bestimmt die Sichtbarkeit
•
51
Ein erstes Java-Programm und seine Bestandteile
public class HelloWorld {
public static void main(String[] args) {
Speaker sprecher;
sprecher = new Speaker();
sprecher.say("Hello, " + args[0]);
}
}
Wir beschreiben die Programmbestandteile, indem wir angeben,
class Speaker {
public void say(String what) {
System.out.println(what);
}
}
• welche Wörter (Bestandteile) zum Schreiben
von Java-Programmen existieren,
• wie sie zusammengesetzt werden können,
main
– sog. Klassenmethode (auch: statische Methode, static)
– benötigt keine Instanzierung der Klasse, um ausführbar zu sein
•
Wolfgang Goerigk: Objektorientierte Programmierung in Java (SS 2009)
Zugriff auf Methoden (und Attribute) fremder Objekte:
Syntax
• welche Bedeutung diese haben, und
Semantik
• wie und wozu sie sinnvoll eingesetzt werden
Pragmatik
– <Objekt>.<Methodenname> (<arg1>, …, <argn>)
– <Objekt>.<Attributname>
– Beispiele: sprecher.say("Hello, " + args[0]) oder System.out
Dateiname = Name der Hauptklasse: HelloWorld.java
Wolfgang Goerigk: Objektorientierte Programmierung in Java (SS 2009)
52
Wolfgang Goerigk: Objektorientierte Programmierung in Java (SS 2009)
53
Java-Programmbestandteile: eine kleine Übersicht
Die Programmiersprache Java: Der imperative Kern
• Der imperative Kern
• Ausdrücke, Anweisungen, Kontrollstrukturen
Wolfgang Goerigk: Objektorientierte Programmierung in Java (SS 2009)
54
Wolfgang Goerigk: Objektorientierte Programmierung in Java (SS 2009)
55
Einfache Datentypen und Operatoren
Grundlegende Sprachelemente
Zeichensatz Quellcode
– 16-Bit-Zeichensatz: Unicode
• Orientiert an C, einfache Variante von C++, imperativer Kern
Bezeichner
• Einfache Datentypen
– Groß- und Kleinschreibung ist signifikant
– Erstes Zeichen muss Buchstabe, $ oder _ sein
byte, short, int, long, boolean, char, float,
double
Schlüsselwörter
– sind reservierte Wörter und dürfen nicht für eigene Bezeichner verwendet werden
Operatoren
– Zusammengesetzte Ausdrücke sind durch Operatoren verbunden.
Literale (Konstanten)
– 12, -123.45, true, "string", ‘c‘
Kommentare
• Operatoren
==, !=, <, <=, >, >=,
+, -, *, /
% (Modulo)
++, -- (Autoinkrement, -Dekrement)
&, | (bitweise UND, ODER auf Ganzzahlen)
!, &&, ||, ^ (logisch auf boolschen Operanden)
– vom Compiler ignoriert, /* <comment> */ oder Zeilen, die mit // beginnen
Wolfgang Goerigk: Objektorientierte Programmierung in Java (SS 2009)
56
Wolfgang Goerigk: Objektorientierte Programmierung in Java (SS 2009)
57
Einfache Datentypen und Standardwerte (default values)
Einfache Datentypen und initiale Werte
• Einfache Datentypen
• Einfache Datentypen
byte, short, int, long, boolean, char, float, double
byte, short, int, long, boolean, char, float, double
• Implizite Typumwandlung
Auswertung eines Ausdrucks liefert Typ B, aber Typ A wird erwartet
(implizite) Typanpassung wird versucht (entlang der Pfeile)
double
float
long
int
short
byte
char
float g = 2 / 5;
float h = 2 / 5.0;
float j = 2F / 5;
Wolfgang Goerigk: Objektorientierte Programmierung in Java (SS 2009)
58
Operatoren und ihre Präzedenzen
Beschreibung
Bezeichnung
(Ausdruck) Literale Methodenaufrufe
Arrayzugriffe new this
Pre/Postfix
++ -- + - (unär)
Unär
~ ! cast-Ausdrücke (Typ)
Multiplikativ
* / %
Additiv
+ - (binär)
Shift
<< >> >>>
Relational
< > <= >= instanceof
(Un)Gleichheit
== !=
Und
&
Exklusiv-Oder
^
Oder
|
Logisches Und
&&
Logisches Oder
||
Conditional
? :
Assignment
=
Assignment-Op.
*= /= %= += -= <<= >>= >>>= &= ^= |=
Wolfgang Goerigk: Objektorientierte Programmierung in Java (SS 2009)
Wolfgang Goerigk: Objektorientierte Programmierung in Java (SS 2009)
59
Literatur (Internet, Java)
Prio.
1 Primary
1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
// g = 0.0, d.h. zuerst die Division
// h = 0.4
// j = 0.4
Dokumentationen und Spezifikationen
– Java Development Kit (JDK) Documentation
– Java API Specification
– Java-Tutorial
– Christian Ullenboom: Java ist auch eine Insel
https://rz-static.uni-hohenheim.de/anw/programme/prg/java/tutorials/javainsel4/
Java ist auch eine Insel
60
Wolfgang Goerigk: Objektorientierte Programmierung in Java (SS 2009)
61
Herunterladen