22.01.2014 Aufrufe

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 ...

MEHR ANZEIGEN
WENIGER ANZEIGEN

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!