Page 1 1 Ursula Oesing â Informatik II â SS2007 Kapitel 1 / 3 - 1 ...
Page 1 1 Ursula Oesing â Informatik II â SS2007 Kapitel 1 / 3 - 1 ...
Page 1 1 Ursula Oesing â Informatik II â SS2007 Kapitel 1 / 3 - 1 ...
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
Vorlesung "<strong>Informatik</strong> <strong>II</strong>“<br />
Vertr. Prof. Dr. <strong>Ursula</strong> <strong>Oesing</strong><br />
<strong>Ursula</strong> <strong>Oesing</strong> – <strong>Informatik</strong> <strong>II</strong> – <strong>SS2007</strong> <strong>Kapitel</strong> 1 / 3 - 1<br />
<strong>Informatik</strong> <strong>II</strong> / Grundlagen 1<br />
‣ Das erste Java-Programm<br />
‣ Aufbau einer Klasse<br />
‣ Wieso Java? (Ergänzung)<br />
‣ Historie zur Java-Programmierung (Ergänzung)<br />
‣ Entwicklungsumgebung<br />
‣ Grunddatentypen<br />
‣ Weitere “einfache“ Datentypen<br />
‣ Typkonvertierungen<br />
‣ Operatoren<br />
‣ Kontrollstrukturen<br />
<br />
<br />
<strong>Ursula</strong> <strong>Oesing</strong> – <strong>Informatik</strong> <strong>II</strong> – <strong>SS2007</strong> <strong>Kapitel</strong> 1 / 3 - 2<br />
1
Aufbau einer Klasse<br />
Eine Klasse besteht aus<br />
Attributen,<br />
public class Haus {<br />
// Attribute<br />
Datentyp nameAttribut1;<br />
...<br />
Konstruktoren<br />
und weiteren<br />
Methoden,<br />
sonst nichts!<br />
// Konstruktoren<br />
public Haus( ) { }<br />
public Haus(Datentyp name1, Datentyp name2, ...)<br />
{<br />
...<br />
}<br />
...<br />
// weitere Methoden<br />
void initialisiere(Datentyp na1, Datentyp na2,...)<br />
{<br />
...<br />
}<br />
public static void main(String[ ] args)<br />
{<br />
...<br />
}<br />
...<br />
}<br />
<strong>Ursula</strong> <strong>Oesing</strong> – <strong>Informatik</strong> <strong>II</strong> – <strong>SS2007</strong> <strong>Kapitel</strong> 1 / 3 - 3<br />
Wdh.: Die 8 Grunddatentypen in Java<br />
siehe auch Konen Inform_1, SS 2004, Folien 32 ff<br />
- -<br />
‣ double 1D-3 // ist der Wert -2 ; double 1D+3 // ist der Wert 4<br />
double 1E+3 // ist der Wert 1000; double 1E-3 // ist der Wert 0.001<br />
<strong>Ursula</strong> <strong>Oesing</strong> – <strong>Informatik</strong> <strong>II</strong> – <strong>SS2007</strong> <strong>Kapitel</strong> 1 / 3 - 4<br />
2
<strong>Informatik</strong> <strong>II</strong>: Inhaltsangabe<br />
Operatoren<br />
Grundlagen 1<br />
Weitere "einfache"<br />
Datentypen<br />
Grunddatentypen<br />
<strong>Ursula</strong> <strong>Oesing</strong> – <strong>Informatik</strong> <strong>II</strong> – <strong>SS2007</strong> <strong>Kapitel</strong> 1 / 3 - 5<br />
Beispiele zu den Grunddatentypen<br />
Als Beispiele dienen weitere Attribute der Klasse<br />
Haus:<br />
‣ boolean boolean hatFlachdach = false;<br />
‣ char char haustyp = 'R';<br />
‣ byte byte anzHaustueren = 2;<br />
‣ short short anzWohnungen = 4;<br />
‣ int int anzFenster = 10;<br />
‣ long long anzDachpfannen = 45000L;<br />
‣ float float preis = 449999.99F;<br />
‣ double double qmFenster = 123.99;<br />
<strong>Ursula</strong> <strong>Oesing</strong> – <strong>Informatik</strong> <strong>II</strong> – <strong>SS2007</strong> <strong>Kapitel</strong> 1 / 3 - 6<br />
3
Implizite Typkonvertierung (1)<br />
Typkonvertierung erfolgt<br />
‣ weil man z.B. statt des gegebenen int-Wertes einen double-Wert<br />
braucht.<br />
‣ nur in Pfeilrichtung möglich!<br />
‣ gegen Pfeilrichtung: Kompilierfehler!<br />
<strong>Ursula</strong> <strong>Oesing</strong> – <strong>Informatik</strong> <strong>II</strong> – <strong>SS2007</strong> <strong>Kapitel</strong> 1 / 3 - 7<br />
Implizite Typkonvertierung (2)<br />
zur impliziten Typkonvertierung<br />
‣ double x;<br />
x = 10;<br />
‣ int i;<br />
i = 99.999;<br />
‣ char c = 'a';<br />
int n = c;<br />
‣ int m = 3;<br />
char d = m;<br />
<strong>Ursula</strong> <strong>Oesing</strong> – <strong>Informatik</strong> <strong>II</strong> – <strong>SS2007</strong> <strong>Kapitel</strong> 1 / 3 - 8<br />
4
Übung zu den Grunddatentypen<br />
Welche Zeilen sind kompilierbar, welche nicht?<br />
‣ boolean hatFlachdach = "false";<br />
‣ char haustyp<br />
= 'Re';<br />
‣ byte anzHaustueren = -2;<br />
‣ short anzWohnungen = 4 * 10;<br />
‣ int anzFenster = 10L;<br />
‣ long anzDachpfannen = 18765;<br />
‣ float preis<br />
= 449999.99F;<br />
‣ double qmFenster = 123.99F;<br />
<strong>Ursula</strong> <strong>Oesing</strong> – <strong>Informatik</strong> <strong>II</strong> – <strong>SS2007</strong> <strong>Kapitel</strong> 1 / 3 - 9<br />
Explizite Typkonvertierung: Casting<br />
Wieso ist folgender Ausdruck nicht compilierbar, und wie läßt<br />
sich das abändern?<br />
‣ float preis = 45.55;<br />
<strong>Ursula</strong> <strong>Oesing</strong> – <strong>Informatik</strong> <strong>II</strong> – <strong>SS2007</strong> <strong>Kapitel</strong> 1 / 3 - 10<br />
5
<strong>Informatik</strong> <strong>II</strong>: Inhaltsangabe<br />
Operatoren<br />
Grundlagen 1<br />
Weitere "einfache"<br />
Datentypen<br />
Grunddatentypen<br />
<strong>Ursula</strong> <strong>Oesing</strong> – <strong>Informatik</strong> <strong>II</strong> – <strong>SS2007</strong> <strong>Kapitel</strong> 1 / 3 - 11<br />
Weitere einfache Datentypen<br />
Weitere Datentypen sind die Klassen, Beispiele:<br />
‣ String, Haus, Anwendung<br />
Eigenschaften der Klasse String (Skript, Seite 76ff)<br />
‣ werden durch Hochkommata gekennzeichnet:<br />
String str = "Hallo";<br />
‣ ist eine Klasse, daher Kreieren eines String-Objekts mittels<br />
Konstuktor ebenfalls möglich: String str = new String();<br />
‣ besteht aus einzelnen Zeichen vom Typ char, die mit der Methode<br />
public char charAt(int index) der Klasse String ansprechbar sind:<br />
'H', 'a', 'l', 'l', 'o'<br />
char str1 = str.charAt(1); Wert von str1 ist jetzt 'a'.<br />
<strong>Ursula</strong> <strong>Oesing</strong> – <strong>Informatik</strong> <strong>II</strong> – <strong>SS2007</strong> <strong>Kapitel</strong> 1 / 3 - 12<br />
6
String<br />
Eigenschaften der Klasse String<br />
‣ Strings können addiert werden:<br />
"Hallo " + "Frau <strong>Oesing</strong>" ergibt "Hallo Frau <strong>Oesing</strong>"<br />
‣ implizite Typkonvertierungen:<br />
"Die Anzahl der Fenster des Hauses ist: " + 10<br />
‣ Mit der Methode public int compareTo(String anotherString) der<br />
Klasse String können Strings lexikografisch verglichen werden.<br />
Ergebnis ist 0, falls die Strings gleich sind.<br />
int erg = str2.compareTo(str1);<br />
<strong>Ursula</strong> <strong>Oesing</strong> – <strong>Informatik</strong> <strong>II</strong> – <strong>SS2007</strong> <strong>Kapitel</strong> 1 / 3 - 13<br />
Wrapperklassen<br />
Es gibt Situationen, in welchen man statt Grunddatentypen Objekte<br />
braucht. Dazu benötigt man<br />
Wrapperklassen (Skript, S. 133 ff):<br />
‣ Wrapperklassen umhüllen<br />
boolean Boolean<br />
die Variable von dem entsprechenden<br />
Grunddaten-<br />
char Character<br />
byte<br />
Byte<br />
typ<br />
short<br />
Short<br />
‣ Wrapperklasse zu boolean<br />
int<br />
Integer<br />
ist Boolean...<br />
long<br />
Long<br />
‣ Sie stellen zusätzlich einige<br />
float<br />
Float<br />
nützliche Methoden zur<br />
double Double<br />
Verfügung.<br />
<strong>Ursula</strong> <strong>Oesing</strong> – <strong>Informatik</strong> <strong>II</strong> – <strong>SS2007</strong> <strong>Kapitel</strong> 1 / 3 - 14<br />
7
Typkonvertierung mittels Wrapperklassen (1)<br />
Von String zum Grunddatentyp<br />
‣ Gegeben: String anzFenStr = "3";<br />
Wie kann int anzFen den Wert<br />
von anzFenStr übernehmen?<br />
public class Haus {<br />
int anzFen;<br />
....<br />
}<br />
‣ anzFen = anzFenStr;<br />
=> Compilierfehler!<br />
1. Variante der Typkonvertierung (von String nach int)<br />
‣ Integer anzFenI = new Integer(anzFenStr);<br />
anzFen = anzFenI.intValue();<br />
// funktioniert<br />
‣ Die Klasse Integer hat Konstruktor mit Stringparameter und Methode:<br />
public int intValue().<br />
‣ anzFen = new Integer(anzFenStr).intValue(); // funktioniert<br />
<strong>Ursula</strong> <strong>Oesing</strong> – <strong>Informatik</strong> <strong>II</strong> – <strong>SS2007</strong> <strong>Kapitel</strong> 1 / 3 - 15<br />
Typkonvertierung mittels Wrapperklassen (2)<br />
2. Variante der Typkonvertierung (von String nach int)<br />
‣ Integer anzFenI = Integer.valueOf(anzFenStr);<br />
anzFen = anzFenI.intValue();<br />
Zur 1. und 2. Variante: Kreieren eines neues Objekts vom Typ Integer,<br />
gibt int-Wert heraus.<br />
Bemerkung<br />
‣ Die Klasse Integer hat eine Methode:<br />
public static Integer valueOf(String s)<br />
‣ static: Die Methode kann mit dem Klassennamen / ohne Objekt<br />
aufgerufen werden.<br />
‣ genauso für long bzw. Long, double bzw. Double...<br />
‣ Von int zum String: "" + anzFen<br />
<strong>Ursula</strong> <strong>Oesing</strong> – <strong>Informatik</strong> <strong>II</strong> – <strong>SS2007</strong> <strong>Kapitel</strong> 1 / 3 - 16<br />
8
Übung zur Typkonvertierung<br />
Welche Zeilen sind kompilierbar, welche nicht?<br />
‣ long anzDachpfannen1 = 45000;<br />
‣ int preis1<br />
= 123.99F;<br />
‣ int preis2<br />
= (int)123.99F;<br />
‣ boolean b<br />
= (boolean)12.5;<br />
‣ String farbe = "Farbe Nummer " + 15;<br />
‣ double anzDachpfannen2 = Double.parseDouble("45000");<br />
Wie erhält man aus dem String str = "10.5" den<br />
int-Wert 10?<br />
<strong>Ursula</strong> <strong>Oesing</strong> – <strong>Informatik</strong> <strong>II</strong> – <strong>SS2007</strong> <strong>Kapitel</strong> 1 / 3 - 17<br />
<strong>Informatik</strong> <strong>II</strong>: Inhaltsangabe<br />
Operatoren<br />
Grundlagen 1<br />
Weitere "einfache"<br />
Datentypen<br />
Grunddatentypen<br />
<strong>Ursula</strong> <strong>Oesing</strong> – <strong>Informatik</strong> <strong>II</strong> – <strong>SS2007</strong> <strong>Kapitel</strong> 1 / 3 - 18<br />
9
Operatoren<br />
siehe auch S. 54 ff oder Skript S. 107<br />
Java kennt die "üblichen" Operatoren, wie sie auch in<br />
C auftreten, dazu gehören:<br />
‣ arithmetische Operatoren<br />
‣ Zuweisungsoperatoren<br />
‣ Vergleichsoperatoren (relationale Operatoren)<br />
‣ logische Operatoren<br />
‣ Konditionaloperator (behandeln wir nicht)<br />
Weitere Operatoren sind Bitoperatoren, Cast-<br />
Operatoren und Stringverkettung<br />
‣ Cast-Operatoren und Stringverkettung haben wir<br />
kennengelernt, Bitoperatoren behandeln wir nicht.<br />
<strong>Ursula</strong> <strong>Oesing</strong> – <strong>Informatik</strong> <strong>II</strong> – <strong>SS2007</strong> <strong>Kapitel</strong> 1 / 3 - 19<br />
arithmetische Operatoren<br />
<strong>Ursula</strong> <strong>Oesing</strong> – <strong>Informatik</strong> <strong>II</strong> – <strong>SS2007</strong> <strong>Kapitel</strong> 1 / 3 - 20<br />
10
Vorlesung “<strong>Informatik</strong> <strong>II</strong>“<br />
Vielen Dank für Ihr Interesse!<br />
<strong>Ursula</strong> <strong>Oesing</strong> – <strong>Informatik</strong> <strong>II</strong> – <strong>SS2007</strong> <strong>Kapitel</strong> 1 / 3 - 21<br />
11