SEW-23 Benutzung von Klassen aus Bibliotheken Package: Menge thematisch zusammengehöriger Klassen- (und Interface-) Deklarationen Bibliothek oder Teil davon Gültigkeitsgrenze für Klassennamen, falls nicht als public public class Date { ... } // auch außerhalb des Package gültig class Intern {...} // nur innerhalb des Package gültig © 1999 bei Prof. Dr. Uwe Kastens Einige Packages, die zu jeder Java-Implementierung gehören: lang grundlegende Klassen zur Sprache Java util nützliche Datenstrukturen mit ihren Operationen io Ein- und Ausgabe text spezielle Formatierung awt Graphik und graphische Benutzungsoberflächen (GUI) awt.event Ereignisbehandlung applet Java programme im WWW net Operationen in Netzwerken Benutzung von Klassen aus Packages: import java.util.Date; // nur die Klasse Date import java.util.*; // beliebige Klassen aus java.util Vorlesung Software-Entwicklung / Folie 23 Ziele: Standardbibliotheken nutzen in der Vorlesung: Erläuterungen dazu nachlesen: Judy Bishop: Java lernen, 3.Aufl., Abschnitt 2.3 Übungsaufgaben: Suchen Sie ein Verzeichnis der Standardbibliotheken und ihrer Klassen (siehe Internet Ressourcen im Vorlesungsmaterial). SWE-24 Datentypen Ein Datentyp bestimmt eine Wertemenge und Operationen darauf. Datentypen in Java: numerische Werte: logische Werte: Zeichen: Objektreferenzen: byte, short, int, long, float, double boolean char Name einer Klasse (oder eines Interface) Eine Variable hat einen Typ, d. h. sie kann Werte aus der Wertemenge aufnehmen. Ein Ausdruck hat einen Typ, d. h. seine Auswertung liefert einen Wert aus der Wertemenge. © 1999 bei Prof. Dr. Uwe Kastens Literale: Notation für Werte im Programmtext, z. B. 127 '?' null Operatoren verknüpfen Werte bestimmter Typen, z. B. Operator Signaturen Typen der Operanden -> Ergebnistyp + int × int -> int long × long -> long float × float -> float double × double -> double String × String -> String Der Operator + ist hier mit fünf Bedeutungen überladen; sie werden an den Operandentypen unterschieden. Vorlesung Software-Entwicklung / Folie 24 Ziele: Typbegriff für Java kennenlernen in der Vorlesung: Übersicht zu den Typen in Java nachlesen: Judy Bishop: Java lernen, 3.Aufl., Abschnitt 3.1 Übungsaufgaben: Verständnisfragen: • Gibt es verschiedene Literale für denselben Wert? • Gibt es Literale für Objektreferenzen? SWE-25 Logische Werte Typname: Werte: boolean true false Vergleichsoperatoren liefern Werte vom Typ boolean: == != > < >= <= logische Operatoren verknüpfen Werte vom Typ boolean: und oder ausschließendes oder nicht & | ^ ! Beispiele: © 1999 bei Prof. Dr. Uwe Kastens boolean istRentner, istJugendlich, hatArbeit, freierEintritt; int alter; ... istRentner = alter >= 65; freierEintritt = (istRentner | istJugendlich) & !hatArbeit; Operatoren und, oder mit Kurzauswertung, d. h. wenn der linke Operand das Ergebnis bestimmt, wird der rechte nicht mehr ausgewertet: && || Beispiel: anzahl != 0 && summe / anzahl > 10 Ausgabe logischer Werte: System.out.println ("It is " + hatArbeit + " that he is employed"); It is true that he is employed Vorlesung Software-Entwicklung / Folie 25 Ziele: Umgang mit logischen Werten in der Vorlesung: Erläuterungen und weitere Beispiele nachlesen: Judy Bishop: Java lernen, 3.Aufl., Abschnitt 3.6 Übungsaufgaben: Verständnisfragen: • Warum ist der korrekte Ausdruck a == true unsinnig? • Was bedeutet Kurzauswertung? • In welchen Fällen ist Kurzauswertung nützlich? SWE-26 Zeichen Typname: Wertemenge: Literale: char einzelne Zeichen aus einem Zeichensatz (Unicode) 'a' '?' Der Zeichensatz enthält Buchstaben, Ziffern, Sonderzeichen, z. B. 'B' nicht druckbare Zeichen mit spezieller Bedeutung, z. B. '\b' und viele Zeichen aus nicht-lateinischen Schriften, z. B. Der Zeichensatz ist geordnet, z. B. '⊗' '\t' 'a' < 'b' © 1999 bei Prof. Dr. Uwe Kastens Vorlesung Software-Entwicklung / Folie 26 Zeichen als Datentyp in der Vorlesung: Erläuterungen dazu nachlesen: Judy Bishop: Java lernen, 3.Aufl., Abschnitt 5.4 Übungsaufgaben: Verständnisfragen: '#' '\n' '\u2297' für ⊗ Werte vom Typ char nicht verwechseln mit Zeichenreihen! Das sind Objekte der Klasse String. Es gibt Literale für String-Objekte, z. B. "Welcome" "#" Ziele: '6' ' ' SWE-27 Numerische Typen Typname byte short int long float double Literale: Speicher (Bits) 8 16 32 64 32 64 kleinster Wert -128 -32768 -2147483648 < - 1018 < -1038 < -10308 int: 123 077 0xff float: 3.14f 6.022e+23f größter Wert 127 32767 2147483647 > 1018 > 1038 > 10308 long: 21L double: 3.14 1e137 1e-9d numerische Operatoren: + - * / % (modulo) - (unär) Signaturen: int × int -> int float × float -> float long × long -> long double × double -> double © 1999 bei Prof. Dr. Uwe Kastens Konversion (allgemein, nicht nur numerisch): Wandlung eines Wertes eines Typs in einen entsprechenden Wert eines anderen Typs. implizite Konversion, wenn nötig: byte -> short -> int -> long -> float -> double explizite Konversion durch Type Cast: float kilograms; double estimate = 45; kilograms = (float) (estimate * 1.2); Vorlesung Software-Entwicklung / Folie 27 Ziele: Numerische Typen und Konversion kennenlernen in der Vorlesung: Erläuterungen und Beispiele dazu nachlesen: Judy Bishop: Java lernen, 3.Aufl., Abschnitt 3.1 Übungsaufgaben: Verständnisfragen: • Welche Konversionen sind unzulässig? • Welche Konversionen können bewirken, daß der Wert ungenauer dargestellt wird? SWE-28 Zahldarstellungen ganze Zahlen dargestellt im Zweierkomplement, z. B. mit N=4 Bits: -8 1000 -2N-1 -7 1001 ... ... -1 1111 0 0000 1 0001 ... ... 7 0111 2N-1-1 Eine Zahl bnbn-1...b1b0 hat den Wert bn*(-2n) + bn-1*2n-1 + ... + b1*2 + b0 Addition im Zweierkomplement wie Addition von Binärzahlen Negation im Zweierkomplement: bitweises Komplement + 1 Subtraktion durch Addition des negierten Wertes Gleitpunktzahlen dargestellt durch Vorzeichen v, Exponent e, Mantisse m © 1999 bei Prof. Dr. Uwe Kastens Der Wert ist v*m*2e float: 8 Bits für e, 23 Bits für m; double: 11 Bits für e 52 Bits für m Vorlesung Software-Entwicklung / Folie 28 Ziele: Zahldardstellungen kennenlernen in der Vorlesung: Rechenbeispiele Übungsaufgaben: Verständnisfragen: Wieviele verschiedene float-Werte sind darstellbar? SWE-29 Iteration mit for-Schleifen for-Schleifen dienen zur Formulierung iterativer Berechnungen. Sie haben die Form: for ( Initialisierung; Bedingung; Fortschaltung) { Schleifenrumpf } Ausführung: Initialisierung: Deklaration(en) oder Zuweisung(en) für Schleifenvariable; Deklarationen sind in der ganzen Schleife gültig. Initialisierung Bedingung: logischer Ausdruck, Vorbedingung für die (erneute) Ausführung des Schleifenrumpfes Schleifenrumpf Fortschaltung: Anweisungen, die die Werte der Schleifenvariable(n) ändern Fortschaltung © 1999 bei Prof. Dr. Uwe Kastens Beispiel: for (int zaehler = 0; zaehler < 5; zaehler++) { System.out.println ("******"); } Eine Schleife terminiert, wenn es einen Wert gibt, der in jeder Iteration monoton wächst (fällt) und nach oben (unten) begrenzt ist. Vorlesung Software-Entwicklung / Folie 29 Ziele: Anweisungsform Iteration kennenlernen in der Vorlesung: Beispiele dazu nachlesen: Judy Bishop: Java lernen, 3.Aufl., Abschnitt 3.2 Übungsaufgaben: Verständnisfragen: Bedingung