Sie sind auf Seite 1von 59

Einfhrung in die Programmierung

(JAVA)
In Kooperation zwischen
TU Darmstadt - Fachgebiet Wirtschaftsinformatik II und FILS Deutsche
Abteilung
Veranstaltungskonzept: Thomas Miklitz (TU Darmstadt)
Dozenten in Bukarest: Prof. Dr. Ing. Dorin Irimescu / Dr. Ing. Cristian
Mustata
Wintersemester 2004/2005

Organisatorisches (1)
Ablauf

Einfhrung in die Programmierung

6 x Hrsaalbung mittwoch 8-12 oder 12-16 Saal R420


12 x bung
Fahrplan zur Veranstaltung in Darmstadt
1. Vw

20.10 - 26.10

Vorlesung (24.10)

2. Vw

27.10 - 2.11

Vorlesung (31.10)

3. Vw

3.11 - 9.11

4. Vw
6. Vw

10.11 - 16.11 2. bung


17.11 - 23.11 3. bung
24.11 - 30.11 4. bung

7. Vw

1.12 - 7.12

8. Vw

8.12 - 14.12

5. Vw

9. Vw

1. bung

Vorlesung (7.11)

5. bung

6. bung
15.12 - 21.12 7. bung
22.12 - 28.12
Weihnachtsferien
29.12 - 4.1
Weihnachtsferien

10. Vw 5.1 - 11.1


11. Vw 12.1 - 18.1

Vorlesung (9.1)
8. bung

Vorlesung (16.1)

12. Vw 19.1 - 25.1


13. Vw 26.1 - 1.2
14. Vw 2.2 - 8.2

9. bung

Vorlesung (23.1)

15. Vw 9.2 - 15.2


16.2 - 22.2

12. bung

Thomas Miklitz (TU Darmstadt)

10. bung
11. bung
Klausur

FILS Prof. Dr. Dorin Irimescu/Dr. Cristian Mustata WS 2004/2005 - Folie


2

Organisatorisches (2)
bung in Kleingruppen

Einfhrung in die Programmierung

Termine:

Mittwoch
Mittwoch

08:00-09:40
12:00-13:40

10:00-11:40
14:00-15:40

Informationen zur Veranstaltung im Internet

Allgemeine Informationen auf der Fachgebiets-Homepage unter Lehre

bungsbltter, Musterlsungen, Downloads im Online-Sekretariat


Benutzername:
Passwort:

bwl5
winf

Newsgroup fr Diskussionen zur Veranstaltung:


tud.fb01.bwl.kommunikationssysteme
(auf dem Newsserver: news.tu-darmstadt.de)

Thomas Miklitz (TU Darmstadt)

FILS Prof. Dr. Dorin Irimescu/Dr. Cristian Mustata WS 2004/2005 - Folie


3

Organisatorisches (3)
Literatur

Einfhrung in die Programmierung

Ratz, Scheffler, Seese: Grundkurs Programmieren in Java, Band 1. Hanser,


2001.
Mssenbck: Sprechen Sie Java. dpunkt, 2003.
Campione, Walrath, Huml: The Java Tutorial. Addison-Wesley, 2000.

Online verfgbar: http://java.sun.com/docs/books/tutorial/

Software

erforderlich: Java 2 SE 1.4.2 SDK


dringend empfohlen: Netbeans IDE 3.5.1 with Java 2 SE 1.4.2 COBUNDLE
erhltlich im Internet: http://java.sun.com/j2se/1.4.2/download.html

Thomas Miklitz (TU Darmstadt)

FILS Prof. Dr. Dorin Irimescu/Dr. Cristian Mustata WS 2004/2005 - Folie


4

Generationen von Programmiersprachen


1. Generation: Maschinensprachen

Interne Sprache eines bestimmten Prozessors,


Maschinenbefehle sind als Zahlen (Bitmuster) codiert

Einfhrung in die Programmierung

2. Generation: maschinenorientierte Sprachen

Assembler, bilden Maschinenbefehle in eine fr


den Menschen lesbare Form ab (Mnemonics)

3. Generation: hhere Programmiersprachen

B81000
BB0500
F6E3

MOV AX,10H
MOV BX,5
MUL BX

16 * 5;

Prozedurale Sprachen, abstrahieren von dem


verwendeten Prozessor, Problem/Algorithmus
stehen im Vordergrund. Bsp.: Cobol, Pascal, C.

4. Generation: nicht-prozedurale Sprachen

Beschreiben was zu tun ist, nicht wie es zu tun ist.


Bsp.: SQL

Objektorientierte Sprachen

Anderes Programmierprinzip als 1.-3.


Bsp. C++, Smalltalk, Java

Thomas Miklitz (TU Darmstadt)

FILS Prof. Dr. Dorin Irimescu/Dr. Cristian Mustata WS 2004/2005 - Folie


5

bersetzungsprogramme
Assembler

bersetzt maschinenorientierte Sprache in Maschinensprache


1:1 bersetzung

Einfhrung in die Programmierung

Compiler

bersetzung aus hherer Sprache in Maschinensprache


berprfung syntaktischer Fehler, Optimierung
1:n bersetzung

Assembler und Compiler bersetzen das Quellprogramm als Ganzes


Interpreter

Jede Anweisung des Quellprogramms wird einzeln auf Korrektheit geprft


und ausgefhrt.
Es wird kein Maschinencode erzeugt.

langsamere Programmausfhrung
Thomas Miklitz (TU Darmstadt)

FILS Prof. Dr. Dorin Irimescu/Dr. Cristian Mustata WS 2004/2005 - Folie


6

Java Was ist das?

Einfhrung in die Programmierung

Definition von Sun Microsystems:

A simple, object-oriented, distributed, interpreted, robust, secure, architecture


neutral, portable, high-performance, multi-threaded, and dynamic language.

einfach (im Vergleich zu anderen Programmiersprachen)


objekt-orientiert
verteilt (netzwerkfhig)
interpretiert
robust (gegenber Programmierfehlern)
sicher
plattformunabhngig, portabel
performant (darber lsst sich diskutieren)
multithread-fhig (parallele Ausfhrung mehrerer Ablufe)
dynamisch (Es werden nur bentigte Programmteile geladen.)

Thomas Miklitz (TU Darmstadt)

FILS Prof. Dr. Dorin Irimescu/Dr. Cristian Mustata WS 2004/2005 - Folie


7

Warum lernen/lehren wir Java?

Einfhrung in die Programmierung

Java

ist relativ einfach zu lernen (z.B. im Vergleich zu C/C++).

bietet umfangreiche Bibliotheken.

ist in der Praxis weit verbreitet.

ist fr viele Betriebssysteme verfgbar.

kann kostenlos verwendet werden.

Thomas Miklitz (TU Darmstadt)

FILS Prof. Dr. Dorin Irimescu/Dr. Cristian Mustata WS 2004/2005 - Folie


8

Einfhrung in die Programmierung

Java Virtual Machine

Java kombiniert den Einsatz von Compiler und Interpreter.

Das Quellprogramm wird in einen maschinenunabhngigen Bytecode


kompiliert.

Der Bytecode besteht aus Befehlen der Maschinensprache eines


virtuellen Prozessors.

Der Bytecode wird auf dem Zielsystem


von einem Interpreter (Java Virtual
Machine, JVM) ausgefhrt.

Editor/IDE

Quellcode
Test.java

Vorteile gegenber Interpreter:

Bytecode ist bereits optimiert


Bytecode ist syntaktisch korrekt
Quellcode wird nicht offen gelegt

Compiler

Bytecode
Test.class

JVM
Thomas Miklitz (TU Darmstadt)

FILS Prof. Dr. Dorin Irimescu/Dr. Cristian Mustata WS 2004/2005 - Folie


9

Ein erstes Programm: HelloWorld


Grundgerst fr ein einfaches Java-Programm:
mehrzeiliger Kommentar

Name der Klasse

jede Anweisung muss mit


einem Semikolon
abgeschlossen werden

/*

Einfhrung in die Programmierung

Unser erstes Programm


*/
public class HelloWorld {
public static void main(String [] args) {
System.out.println("Hello World");
}

// sage Hallo

}
Befehl fr Bildschirmausgabe

einzeiliger Kommentar

Methode main muss immer so deklariert werden

Die Methode main wird beim Ausfhren der Klasse von der JVM gestartet.

Thomas Miklitz (TU Darmstadt)

FILS Prof. Dr. Dorin Irimescu/Dr. Cristian Mustata WS 2004/2005 - Folie


10

Einfhrung in die Programmierung

Elementare Datentypen in Java

Typ

Inhalt

Wertebereich

boolean

Wahrheitswert

{true, false}

char

Unicode-Zeichen

[\u0000; \uFFFF]

byte

ganze Zahl

[-128;127]

short

ganze Zahl

[-32.768;32.767]

16 bit

int

ganze Zahl

[-2.147.483.648; 2.147.483.647]

32 bit

long

ganze Zahl

[-263; 263-1]

64 bit

float

Gleitkommazahl*

[-3,40281038; 3,40281038]

32 bit

double

Gleitkommazahl*

[-1,797610308; 1,797610308]

64 bit

Speicherbedarf
1 bit
16 bit
8 bit

) Gleitkommazahlen entsprechend IEEE 754

Thomas Miklitz (TU Darmstadt)

FILS Prof. Dr. Dorin Irimescu/Dr. Cristian Mustata WS 2004/2005 - Folie


11

Variablen

Einfhrung in die Programmierung

Variablen sind Speicherstellen, in denen (zur Laufzeit eines


Programms) Werte gespeichert werden knnen.
Jede Variable hat einen Namen, einen Typ und einen Wert.
Variablen mssen stets deklariert werden, d.h. es wird der Datentyp
festgelegt, bevor sie verwendet werden kann.
Eine Variable eines bestimmten Typs kann nur Werte des
entsprechenden Typs enthalten.
Beispiele:
int i;
double d;
boolean b;

Variablen knnen beim Deklarieren auch initialisiert werden.


Falls keine explizite Initialisierung erfolgt, wird die Variable implizit mit
0 initialisiert.
Beispiele:
int j=5;
float pi = 3.14159265;

Thomas Miklitz (TU Darmstadt)

FILS Prof. Dr. Dorin Irimescu/Dr. Cristian Mustata WS 2004/2005 - Folie


12

Einfhrung in die Programmierung

Literale

Literale sind (fest im Programm eingetragene) Konstanten. Im


Gegensatz zu Variablen haben sie also einen festen Wert und werden
nicht durch einen Namen, sondern durch den Wert selbst
angesprochen

Auch Literale haben einen Datentyp, den der Compiler aber


automatisch zuordnet

Beispiele:
Datentyp

Literal-Beispiel

int

1, 31, -1234, 0x14

long

1L, 31L, -1234L, 0x14L

double

1.0, 3.14, 3D, 3E20D, 3.0E20D

float

1.0F, 3.14F, 3F, 3E20F, 3.0E20F

boolean

true, false

char

'a', 'A', ' ', '\n', '\'', '\\', '\"'

Thomas Miklitz (TU Darmstadt)

FILS Prof. Dr. Dorin Irimescu/Dr. Cristian Mustata WS 2004/2005 - Folie


13

Operatoren (1)

Einfhrung in die Programmierung

Arithmetische Operatoren
+
*
/
%

Addition
Subtraktion
Multiplikation
Division
Modulo (Rest bei Ganzzahldivision)

++
Inkrementierung
als Prfix- oder Postfix-Operator
-Dekrementierung
Beispiel:
x = ++y;
x = y++;

Thomas Miklitz (TU Darmstadt)

y = y + 1;x = y;
x = y;
y = y + 1;

FILS Prof. Dr. Dorin Irimescu/Dr. Cristian Mustata WS 2004/2005 - Folie


14

Operatoren (2)

Zuweisungsoperatoren

Einfhrung in die Programmierung

=
+=, -=, *=, /=, %=

Vergleichsoperatoren
==
!=
<,<=
>,>=

einfache Wertzuweisung
reflexive Wertzuweisung,
z.B. x += 3; x = x + 3;

gleich
ungleich
grer (oder gleich)
kleiner (oder gleich)

Logische Operatoren
!
&&
||

Thomas Miklitz (TU Darmstadt)

Negation
logisches UND
logisches ODER

FILS Prof. Dr. Dorin Irimescu/Dr. Cristian Mustata WS 2004/2005 - Folie


15

Einfhrung in die Programmierung

Logische Operatoren

Operator

JAVA Syntax

a = true
b = true

a = true
b = false

a = false
b = false

NICHT

( !a )

false

false

true

UND

( a && b )

true

false

false

ODER

( a || b )

true

true

false

a und b sind logische Ausdrcke

Beispiele:
( x > 3) && ( y <= 5 )
( ( x < 7 ) || ( y < 7) ) && !b
( x < 7 ) || ( y < 7)
Thomas Miklitz (TU Darmstadt)

&& !b

FILS Prof. Dr. Dorin Irimescu/Dr. Cristian Mustata WS 2004/2005 - Folie


16

Ausdrcke & Wertzuweisungen

Ein Ausdruck reprsentiert immer einen Wert eines bestimmten


Datentyps.
z.B. Zahl, Attribut, Variable, Methode mit Rckgabewert, Rechenoperation

Einfhrung in die Programmierung

Mit einer Wertzuweisung wird einem Attribut oder einer Variablen ein
bestimmter Wert zugewiesen.
Format: Variable = Ausdruck;

Beispiel:
int i;
int j;
j = 5;
i = j;
j = 6 * i;

Wertzuweisung

Ausdrcke

Thomas Miklitz (TU Darmstadt)

FILS Prof. Dr. Dorin Irimescu/Dr. Cristian Mustata WS 2004/2005 - Folie


17

Typumwandlungen

Implizite Umwandlungen

Einfhrung in die Programmierung

bei der Auswertung arithmetischer Operationen mit Operanden


unterschiedlichen Typs
bei Zuweisungen, wenn der Typ des zugewiesenen Ausdrucks nicht dem der
Variablen entspricht
niedrigerer Typ wird in hheren Typ umgewandelt:
byte short int long float double
char

z.B.

int i = 5;
double d = i;

Explizite Umwandlungen (type casting)

auch ein hherer Typ kann in einen niedrigeren umgewandelt werden


evtl. Genauigkeitsverlust bzw. Fehler wegen anderem Wertebereich
z.B.

double d = 3.1415;
int i = (int)d;

Thomas Miklitz (TU Darmstadt)

FILS Prof. Dr. Dorin Irimescu/Dr. Cristian Mustata WS 2004/2005 - Folie


18

Anweisungen
Anweisungen in Java

Einfhrung in die Programmierung

Zuweisungen und Methodenaufrufe ( spter)


Blockanweisungen
bedingte Anweisungen
repetitive Anweisungen
Anweisungen zur Ausnahmebehandlung ( spter)

Blockanweisungen

fassen mehrere Anweisungen zu einer Anweisung zusammen


werden v.a. zusammen mit bedingten und repetitiven Anweisungen
eingesetzt

Beispiel:

int i=1;
int j=1;
{
j*=i;
i++;
}
Thomas Miklitz (TU Darmstadt)

FILS Prof. Dr. Dorin Irimescu/Dr. Cristian Mustata WS 2004/2005 - Folie


19

Bedingte Anweisungen (1)


if-Anweisung

Einfhrung in die Programmierung

fhrt eine Anweisung nur aus, wenn eine Bedingung erfllt ist
Kann auch eine Blockanweisung sein

Syntax:

if (Bedingung) Anweisung;
if (Bedingung) Anweisung else Anweisung;
boolean
wird ausgefhrt, wenn die
Bedingung nicht erfllt ist

Beispiele:
if (a != 0) b /= a;

if (i > 0) {
r = 1;
} else if (i < 0) {
r = -1;
} else {
r = 0;
}
Thomas Miklitz (TU Darmstadt)

FILS Prof. Dr. Dorin Irimescu/Dr. Cristian Mustata WS 2004/2005 - Folie


20

Bedingte Anweisungen (2)


switch-Anweisung

Einfhrung in die Programmierung

ermglicht fr Integer-Vergleiche eine kompaktere Schreibweise als die if-Anweisung


Syntax:

integer

switch (Ausdruck) {
case Wert : Anweisung;
break;
default : Anweisung;
}

Optional, bricht die Switch


Anweisung ab

Optional, wird ausgefhrt, falls


keine Aussage zutrifft

der Wert von Ausdruck wird berechnet


das Programm springt zu der Marke, die mit dem berechneten Wert bereinstimmt
Stimmt keine Marke mit dem Wert berein, springt das Programm zur default-Marke
Beispiel:
switch (x) {
case 1 : System.out.println("Eins"); break;
case 2 :
case 3 : System.out.println("Zwei oder Drei"); break;
default : System.out.println("Unbekannt");
}

Thomas Miklitz (TU Darmstadt)

FILS Prof. Dr. Dorin Irimescu/Dr. Cristian Mustata WS 2004/2005 - Folie


21

Repetitive Anweisungen (1)


while-Anweisung

wiederholte Ausfhrung einer Anweisung

Syntax:

Einfhrung in die Programmierung

while (Bedingung) Anweisung;

solange Bedingung wahr ist, wird Anweisung ausgefhrt


unter Umstnden wird Anweisung nie ausgefhrt (ablehnende Schleife)
Beispiel:
while (a >= b) a -= b;
int i = 0;
while (a > 1) {
a /= 2;
i++;
}

Thomas Miklitz (TU Darmstadt)

FILS Prof. Dr. Dorin Irimescu/Dr. Cristian Mustata WS 2004/2005 - Folie


22

Repetitive Anweisungen (2)


do-while Anweisung

wiederholte Ausfhrung einer Anweisung

Syntax:

Einfhrung in die Programmierung

do Anweisung while (Bedingung);

fhrt Anweisung solange aus bis Bedingung falsch ist


Anweisung wird mindestens einmal ausgefhrt! (annehmende Schleife)
Beispiel:
int i = 0;
do {
a /= 2;
i++;
}
while (a > 1);

Thomas Miklitz (TU Darmstadt)

FILS Prof. Dr. Dorin Irimescu/Dr. Cristian Mustata WS 2004/2005 - Folie


23

Repetitive Anweisungen (3)


for Anweisung

wiederholte Ausfhrung einer Anweisung

Syntax:

Einfhrung in die Programmierung

for (Initialisierung; Bedingung; Aktualisierung) Anweisung;

Fhre Initialisierung aus


Solange Bedingung wahr ist, fhre Anweisung aus
Nach jeder Ausfhrung von Anweisung fhre Aktualisierung aus
Anweisung wird unter Umstnden nie ausgefhrt (ablehnende Schleife)
Beispiel:
for (int i=1; i<=10; i++) a *= 2.0;
a = 17;
for (int i=1; a>=1; i++) a /= 2.0;

Thomas Miklitz (TU Darmstadt)

FILS Prof. Dr. Dorin Irimescu/Dr. Cristian Mustata WS 2004/2005 - Folie


24

Repetitive Anweisungen (4)


for vs. while Schleife

jede for Schleife kann in eine while Schleife transformiert werden

Einfhrung in die Programmierung

for (Initialisierung; Bedingung; Aktualisierung) Anweisung;


ist quivalent zu
Initialisierung;
while (Bedingung){
Anweisung;
Aktualisierung;
}

Thomas Miklitz (TU Darmstadt)

FILS Prof. Dr. Dorin Irimescu/Dr. Cristian Mustata WS 2004/2005 - Folie


25

Einfhrung in die Programmierung

Wiederholung

Programmiersprachen, bersetzungsprogramme

berblick Java

Datentypen, Variablen

Operatoren, Zuweisungen

Anweisungen

bedingte Anweisungen (if, switch)


repetitive Anweisungen (for, while, do...while)

Thomas Miklitz (TU Darmstadt)

FILS Prof. Dr. Dorin Irimescu/Dr. Cristian Mustata WS 2004/2005 - Folie


26

Einfhrung in die Programmierung

Methodenaufrufe (1)

Methoden sind Unterprogramme, die vom Hauptprogramm aufgerufen


werden knnen und Hilfsfunktionen ausben.

Wird eine Methode aufgerufen, so unterbricht der Anweisungsblock, in


dem der Aufruf stattfindet, seine Abarbeitung bis alle Anweisungen
der aufgerufenen Methode abgearbeitet sind.

Methoden mssen (fast) immer mit Bezug zu der Klasse oder einem
Objekt der Klasse, in der sie definiert sind, aufgerufen werden.

Ausnahme: Aufruf aus (einem Objekt) der Klasse, in der die Methode
definiert wird

Beispiel:
System.out.println(....);
Objekt

Math.sin(...);
Klasse
Thomas Miklitz (TU Darmstadt)

FILS Prof. Dr. Dorin Irimescu/Dr. Cristian Mustata WS 2004/2005 - Folie


27

Methodenaufrufe (2)

Bei einem Methodenaufruf mssen Parameter von den Typen, die in


der Signatur der Methoden definiert sind, bergeben werden. Diese
Parameter sind Ausdrcke der entsprechenden Typen.

Einfhrung in die Programmierung

Beispiel:

Rckgabetyp

Signatur:
int max(int a, int b)

Methodenaufruf:
int i;
Math.max(i, 2*4);

Parameter

Methoden mit einem Rckgabetyp sind Ausdrcke, knnen also nur


dort eingesetzt werden, wo ein Wert des entsprechenden Typs
verlangt wird.

Beispiel:
int i = Math.max(5,8);

Thomas Miklitz (TU Darmstadt)

FILS Prof. Dr. Dorin Irimescu/Dr. Cristian Mustata WS 2004/2005 - Folie


28

Einfache Ausgaben in Java

Einfhrung in die Programmierung

Ein- und Ausgaben erfolgen in Java ber sog. Streams (Datenflsse).


Standard-Objekt fr Bildschirmausgabe ist System.out
Es stellt insbesondere die Methoden print() und println() zur
Verfgung.
Syntax:

beliebige Datentypen

// einfache Ausgabe:
System.out.print(Argument1 [+ Argutment2 + ...]);
// mit Zeilenumbruch
System.out.println(Argument1 [+ Argutment2 + ...]);

Beispiele:
System.out.println("Heute ist der "+ tag +". Tag im Monat");
System.out.println("Morgen ist der "+ (tag+1) +". Tag im Monat ");
Ausdrcke mssen in Klammern gesetzt werden, damit
sie vor der Ausgabe ausgewertet werden knnen

Thomas Miklitz (TU Darmstadt)

FILS Prof. Dr. Dorin Irimescu/Dr. Cristian Mustata WS 2004/2005 - Folie


29

Mathematische Methoden in Java

Einfhrung in die Programmierung

Die Java-Klassenbibliothek enthlt eine Klasse Math, welche die


gebruchlichen mathematischen Funktionen enthlt:
double ceil(double x)

ganzzahliges Aufrunden der Zahl x

double floor(double x)

ganzzahliges Abrunden der Zahl x

int max(int x,int y)

Maximum von x und y

int min(int x,int y)

Minimum von x und y

double pow(double x,double y)

Potenzfunktion xy

double sqrt(double x)

Wurzel von x

double sin(double x)

Sinus von x

double exp(double x)

Exponentialfunktion ex

double log(double x)

natrlicher Logarithmus ln x

int abs(int x)

Absolutbetrag

long/int round(double/float x)

rundet double nach long bzw. float nach int

Beispiel:

* jeweils fr die Datentypen


double, float, long, int verfgbar

y = Math.sqrt(x);
Thomas Miklitz (TU Darmstadt)

FILS Prof. Dr. Dorin Irimescu/Dr. Cristian Mustata WS 2004/2005 - Folie


30

Zeichenketten (1)

Einfhrung in die Programmierung

Zeichenketten (Strings) sind in Java nicht als primitiver Datentyp,


sondern als Klasse realisiert.
Diese beinhalten eine groe Anzahl an Methoden zum Umgang mit
Zeichenketten.
Syntax
String stringName;

Beispiel
String stringName;
stringName = "Hans Mustermann";

Thomas Miklitz (TU Darmstadt)

FILS Prof. Dr. Dorin Irimescu/Dr. Cristian Mustata WS 2004/2005 - Folie


31

Zeichenketten (2)

Einfhrung in die Programmierung

Wichtige Methoden der String-Klasse


int stringName.length()

liefert die Lnge des Strings

char stringName.charAt(int index)

liefert das Zeichen an der entsrpechenden


Position des Strings

boolean stringName.equals(String anotherString)

vergleicht zwei Strings

boolean stringName.equalsIgnoreCase(String anotherString)

vergleicht zwei Strings unabhngig von der


Gro- und Kleinschreibung

String stringName.concat(String anotherString)

verkettet zwei Strings (wie "+")

int stringName.indexof(String zeichen)

liefert die erste Position des zeichen innerhalb


des Strings

int stringName.indexOf(String zeichen, int anfang)

liefert die erste Position des zeichen innerhalb


des Strings ab der Stelle anfang

String stringName.toUpperCase()

wandelt alle Zeichen in Grobuchstaben

String stringName.toLowerCase()

wandelt alle Zeichen in Kleinbuchstaben

String stringName.replace(char zeichen1, char zeichen2)

erstezt alle zeichen1 durch zeichen2

String stringName.trim()

entfernt alle Leerzeichen am Beginn und am


Ende des Strings

String stringName.substring(int position)

liefert den Stringinhalt ab der Stelle position

String stringName.substring(int position, int ende)

liefert den Stringinhalt ab der Stelle position bis


zur Stelle ende

Thomas Miklitz (TU Darmstadt)

FILS Prof. Dr. Dorin Irimescu/Dr. Cristian Mustata WS 2004/2005 - Folie


32

Typumwandlungen mit Strings

Zu jedem primitiven Datentyp existiert eine Klasse gleichen Namens.


Sie beginnen im Unterschied dazu jedoch mit einem Grobuchstaben,
z.B. Double

Einfhrung in die Programmierung

Ausnahme: Datentyp int, zugehrige Klasse heit Integer

In diesen Klassen befinden sich die Methoden, die zur Umwandlung


der numerischen Datentypen in Strings und umgekehrt bentigt
werden
Konvertierung:
von

nach

Methodenaufruf

String

int

IntegerVariable = Integer.parseInt(StringVariable)

String

double

DoubleVariable = Double.parseDouble(StringVariable)

int

String

StringVariable = Integer.toString(IntegerVariable)

double

String

StringVariable = Double.toString(DoubleVariable)

Thomas Miklitz (TU Darmstadt)

FILS Prof. Dr. Dorin Irimescu/Dr. Cristian Mustata WS 2004/2005 - Folie


33

Objektorientierte Programmierung
Objektorientierte Programmiersprachen sehen [...] ein Programm als
eine Sammlung von Objekten, die miteinander in Verbindung stehen und
zum Zwecke der Problemlsung Nachrichten austauschen
(K n i g e t a l., G r u n d z g e d e r W i r t s c h a f

Einfhrung in die Programmierung

t s i n f o r m a t i k, 2 0 0 4)

Ein Objekt
hat einen Zustand, der durch seine Attribute (Variablen)
reprsentiert wird
verfgt ber ein Verhalten, welches durch seine Methoden
(Operationen) bestimmt wird
besitzt eine Identitt, durch die es von allen anderen Objekten
unterschieden werden kann

Thomas Miklitz (TU Darmstadt)

FILS Prof. Dr. Dorin Irimescu/Dr. Cristian Mustata WS 2004/2005 - Folie


34

Objektorientierte Programmierung (2)


Eine Klasse ist ein Bauplan fr eine Gruppe gleichartiger Objekte. Sie
definiert die Attribute und Methoden fr diese Objekte.
Objekte vs. Klassen
Einfhrung in die Programmierung

Klassen werden vom Programmierer definiert Objekte werden zur Laufzeit


erzeugt
jedes Objekt ist Instanz genau einer Klasse, aber eine Klasse kann beliebig
viele Instanzen besitzen
alle Objekte einer Klasse besitzen die gleichen Methoden und haben daher
das gleiche Verhalten
alle Objekte einer Klasse haben die gleichen Attribute, allerdings mit
unterschiedlichen Werten (Zustand)
Ei n A u t o : A u t o

Klasse

Auto
Hersteller
Modell

Thomas Miklitz (TU Darmstadt)

H e r s t e l l e r = "V
W"
M o d e l l = "G o l f"

Objekte

AnderesAuto:
Auto

H e r s t e l l e r = O
p e l"
FILS Prof. Dr. Dorin Irimescu/Dr. Cristian Mustata WS 2004/2005 - Folie
M o d e l l = "A s t r
35
a"

Klassen in Java

Einfhrung in die Programmierung

Um Objekte erzeugen zu knnen, muss eine passende Klasse


vorhanden sein.
Jede Klassendefinition wird mit dem Schlsselwort class eingeleitet;
dahinter steht der Name der Klasse.
Eine Klasse besteht aus Variablen und Methoden.
Beginn der Klasse

Syntax:
[Modifier] class Klassenname {
Typ attributName1;
Typ attributName2;
[Modifier] Typ Methodenname(Typ param1, Typ param2, ...){
}
}
Ende der Klasse

Thomas Miklitz (TU Darmstadt)

FILS Prof. Dr. Dorin Irimescu/Dr. Cristian Mustata WS 2004/2005 - Folie


36

Einfhrung in die Programmierung

Methoden (1)

Methoden definieren die Funktionalitt, die ein Objekt ausfhren kann

die Methoden eines Objektes operieren auf den Attributen eines


Objektes

Methoden bestehen aus einer Signatur und einem Anweisungsblock

die Signatur definiert die Sichtbarkeit, den Rckgabetyp, den Namen


und die Parameter einer Methode

der Anweisungsblock enthlt die Anweisungen, die bei dem Aufruf der
Methode ausgefhrt werden

Thomas Miklitz (TU Darmstadt)

FILS Prof. Dr. Dorin Irimescu/Dr. Cristian Mustata WS 2004/2005 - Folie


37

Methoden (2)

Parameter

Einfhrung in die Programmierung

enthlt eine Signatur eine Liste mit einem oder mehreren Parametern, so
mssen der Methode beim Aufruf Werte von denselben Typen bergeben
werden
die Parameter knnen im Anweisungsblock wie Variablen verwendet
werden
verlangt eine Methode keine Parameter, so sind die beiden runden
Klammern der Signatur leer

Rckgabetyp

eine Methode muss bei der Beendigung einen Wert von ihrem Rckgabetyp
an den Aufrufer bergeben
Syntax fr Rckgabe an den Aufrufer: return rueckgabewert;
der Aufrufer kann diesen Wert als Ergebnis des Methodenaufrufs weiter
benutzen
gibt eine Methode keinen Wert zurck, so wird anstelle des Rckgabetyps
void angegeben

Thomas Miklitz (TU Darmstadt)

FILS Prof. Dr. Dorin Irimescu/Dr. Cristian Mustata WS 2004/2005 - Folie


38

Methoden (3)

Syntax:

Einfhrung in die Programmierung

[Modifier] Typ Methodenname(Typ param1, Typ param2, ...){


Anweisungsblock;
}

Beispiel:
public double quadriere (double x) {
double y = x * x;
return y;
}

Thomas Miklitz (TU Darmstadt)

FILS Prof. Dr. Dorin Irimescu/Dr. Cristian Mustata WS 2004/2005 - Folie


39

berladene Methoden

Eine Methode heit berladen, wenn in der selben Klasse


gleichnamige Methoden mit unterschiedlicher Signatur existieren
(Overloading)

Einfhrung in die Programmierung

unterschiedliche Implementierung
Auswahl gem Art und Zahl der aktuellen Parameter

Anwendung:

Methoden, die gleiches oder sehr hnliches Verhalten haben, aber


unterschiedliche Parameter erfordern:
z.B. java.io.PrintStream.println( ... );

Konstruktoren

Thomas Miklitz (TU Darmstadt)

FILS Prof. Dr. Dorin Irimescu/Dr. Cristian Mustata WS 2004/2005 - Folie


40

Attribute

Einfhrung in die Programmierung

Attribute sind Variablen, die zu einem Objekt bzw. zu einer Klasse


gehren
In den Attributen sind die Daten gespeichert, die ein Objekt verwalten
kann
Syntax:
Modifier Attributtyp attributName;

Thomas Miklitz (TU Darmstadt)

FILS Prof. Dr. Dorin Irimescu/Dr. Cristian Mustata WS 2004/2005 - Folie


41

Kapselung vs. Information Hiding

Kapselung:

Einfhrung in die Programmierung

Objekte enthalten alle bentigten Variablen, sowie die darauf arbeitenden


Funktionen ("Methoden")
Ziel: Wissen ber die Implementierung einer Klasse fr andere Klassen
nicht ntig

Information Hiding (Geheimnisprinzip):

Implementierung einer Klasse wird vor anderen Klassen verborgen


Zugriff auf private Variablen oder Methoden wird verboten
Modifikation eines Objektes nur ber ffentliche Methoden (und Variablen)
mglich
Ziel: Implementierung einer Klasse fr andere Klassen nicht sichtbar

Thomas Miklitz (TU Darmstadt)

FILS Prof. Dr. Dorin Irimescu/Dr. Cristian Mustata WS 2004/2005 - Folie


42

ffentliche und private


Methoden/Variablen

Einfhrung in die Programmierung

Java erlaubt verschiedene Einschrnkungen bzgl. des Zugriffs auf die


Variablen und Methoden eines Objekts. Dies wird ber die Modifier
gesteuert
public: auf ffentliche Variablen/Methoden darf von allen Klassen aus
zugegriffen werden
private: auf private Variablen/Methoden darf nur innerhalb der eigenen
Klasse zugegriffen werden
protected: auf geschtzte Variablen/Methoden darf nur von Unterklassen aus
zugegriffen werden (siehe Vererbung)

Beispiel:

Fr Klassen verwenden wir immer den Modifier public

public class Buffer {


private int item;
public void insert (int i) { ... ]
public int remove() { ... }
}
Thomas Miklitz (TU Darmstadt)

Implementierung des Pufferspeichers


ist nach auen nicht sichtbar
Der Puffer kann nur ber diese
beiden Methoden manipuliert
werden

FILS Prof. Dr. Dorin Irimescu/Dr. Cristian Mustata WS 2004/2005 - Folie


43

Einfhrung in die Programmierung

Klassenmethoden und -attribute

eine Klassenmethode (-attribut) ist eine Methode (Attribut), die nicht


einem Objekt, sondern einer Klasse zugeordnet ist

Klassenmethoden (-attribute) werden ber den Modifier static


definiert

Klassenmethoden knnen nur auf Klassenvariablen, nicht auf


Objektvariablen zugreifen
Aufruf ber Klassenname: Klasse.methode() bzw. Klasse.attribut

Beispiel:
public static void main (String[] args) {
}

Thomas Miklitz (TU Darmstadt)

FILS Prof. Dr. Dorin Irimescu/Dr. Cristian Mustata WS 2004/2005 - Folie


44

Einfhrung in die Programmierung

Objekte als Variablen

Jede Java-Klasse definiert einen Objekttyp, von dem Variablen


angelegt werden knnen

Im Unterschied zu den elementaren Datentypen speichern diese


Variablen nicht den Wert eines Objektes, sondern einen Verweis auf
das Objekt

Beispiele:
String eingabe;
Buffer b;

Diese Deklarationen erzeugen noch kein Objekt der entsprechenden


Klasse!
Objekte mssen explizit vom Programmierer erzeugt werden

Wird einer Variablen wie in den Beispielen bei der Definition kein
Objekt zu gewiesen, dann wird die Variable mit dem Wert null
initalisiert

Thomas Miklitz (TU Darmstadt)

FILS Prof. Dr. Dorin Irimescu/Dr. Cristian Mustata WS 2004/2005 - Folie


45

Einfhrung in die Programmierung

Objekte erzeugen und vernichten

Objekte werden mit dem Befehl new erzeugt

Beispiele:
String leer = new String();
Double pi = new Double(3.14159265);

Die Parameter richten sich nach den definierten Konstruktoren

Wie werden Objekte wieder gelscht?

vom Programmierer gar nicht


nicht mehr bentigte (zugreifbare) Objekte werden von Java automatisch
gelscht (Garbage Collection)

Thomas Miklitz (TU Darmstadt)

FILS Prof. Dr. Dorin Irimescu/Dr. Cristian Mustata WS 2004/2005 - Folie


46

Konstruktoren (1)

Konstruktoren sind Methoden die beim Anlegen von Objekten (mittels


new) aufgerufen werden:

Einfhrung in die Programmierung

sie haben keinen Rckgabewert und heien wie ihre Klasse


sie initialisieren Attribute
sie legen dabei ggf. Unterobjekte oder Felder an

Beispiel:
public class Point {
private double xCoord;
private double yCoord;
public Point(double x, double y) {
xCoord = x;
yCoord = y;
}
}
Point p = new Point(1, 3);

Thomas Miklitz (TU Darmstadt)

FILS Prof. Dr. Dorin Irimescu/Dr. Cristian Mustata WS 2004/2005 - Folie


47

Einfhrung in die Programmierung

Konstruktoren (2)

Eine Klasse kann ber mehrere Konstruktoren verfgen, die sich in


ihrer Signatur unterscheiden (berladene Konstruktoren)

Der Programmierer muss nicht fr jede Klasse einen Konstruktor


definieren

Fr Klassen ohne Konstruktor gilt:

Java erzeugt einen Default-Konstruktor


Der Default-Konstruktor hat keine Parameter

Thomas Miklitz (TU Darmstadt)

FILS Prof. Dr. Dorin Irimescu/Dr. Cristian Mustata WS 2004/2005 - Folie


48

Einfhrung in die Programmierung

Wiederholung

Methodenaufrufe

Bildschirmausgabe

Zeichenketten

Objektorientierte Programmierung

Eigene Klassen, Methoden, Attribute

Objekterzeugung, Konstruktoren

Thomas Miklitz (TU Darmstadt)

FILS Prof. Dr. Dorin Irimescu/Dr. Cristian Mustata WS 2004/2005 - Folie


50

Einfhrung in die Programmierung

Pakete (1)

Pakete (Packages) sind Bibliotheken von (inhaltlich zusammengehrenden) Klassen.

Auch die mit dem Java 2 SE SDK ausgelieferten Klassen sind in Pakete
aufgeteilt:

java.lang
enthlt grundlegende Sprach- und Systemklassen. Wird automatisch
geladen.

java.io
enthlt eine Vielzahl an Klassen zur Ein- und Ausgabe.

java.net
enthlt Klassen fr die Netzwerkfunktionalitten.

java.util
enthlt diverse Hilfsklassen.

Insgesamt umfasst das Java 2 SE SDK ber 130 Pakete mit mehr als 3800
Klassen.

Thomas Miklitz (TU Darmstadt)

FILS Prof. Dr. Dorin Irimescu/Dr. Cristian Mustata WS 2004/2005 - Folie


51

Pakete (2)

Eigene Klassen knnen ebenfalls in Pakete gruppiert werden.

Die Anweisung package paketname; am Anfang der Java-Datei legt


fest, zu welchem Paket eine Klasse gehrt.

Einfhrung in die Programmierung

Pakete knnen auch Unterpakete enthalten:


package paket.unterpaket;

Vor dieser Anweisung drfen keine weiteren Anweisungen stehen.


Die Dateien der Klassen des Pakets paketname werden im Unterverzeichnis
paketname gespeichert.

Die Dateien der Klassen des Pakets paket.unterpaket werden im


Unterverzeichnis paket\unterpaket gespeichert.

Beispiel:
package tud.bwl5.eiprog;
public class MyClass {
...
}

Thomas Miklitz (TU Darmstadt)

FILS Prof. Dr. Dorin Irimescu/Dr. Cristian Mustata WS 2004/2005 - Folie


52

Pakete (3)

Direkter Zugriff (ber den Klassennamen) nur auf Klassen aus dem
eigenen Paket oder aus java.lang

Zugriff auf Klassen aus anderen Paketen:

Einfhrung in die Programmierung

ber den vollqualifizierten Namen (bestehend aus Paketname und


Klassennamen):
java.io.File f = new java.io.File("C:\test.txt");
tud.bwl5.eiprog.MyClass c = new tud.bwl5.eiprog.MyClass();

durch Importieren der Klasse oder des Pakets

import java.io.File; nur die Klasse File wird importiert


import java.io.*; alle Klassen des Pakets java.io werden importiert

auf importierte Klassen kann ebenfalls direkt zugegriffen werden:


File f = new File("C:\test.txt");
MyClass c = new MyClass();

Die Import-Anweisung steht hinter der Package-Anweisung und vor dem


Klassenkopf.

Thomas Miklitz (TU Darmstadt)

FILS Prof. Dr. Dorin Irimescu/Dr. Cristian Mustata WS 2004/2005 - Folie


53

Einfhrung in die Programmierung

Dateneingabe in Java

Ein- und Ausgaben erfolgen in Java ber sog. Streams (Datenflsse).

Das Paket java.io stellt eine Vielzahl von Stream-Klassen zur Dateneinund -ausgabe auf unterschiedlichen Gerten zur Verfgung.

Die Klasse Input aus dem Paket tud.bwl3.eiprog stellt Ihnen eine
Methode zur Verfgung, mit der eine Zeichenkette eingelesen werden
kann.

Signatur: public static String readln()

So verwenden Sie diese Methode:


import tud.bwl5.eiprog.*;
public class Test {
public static void main(String[] args) {
String s = Input.readln();
System.out.println(s);
}
}

Thomas Miklitz (TU Darmstadt)

FILS Prof. Dr. Dorin Irimescu/Dr. Cristian Mustata WS 2004/2005 - Folie


54

Einfhrung in die Programmierung

Geltungsbereich von Variablen (1)

Attribute sind in der gesamten Klasse gltig, in der sie definiert


werden.

Variablen, die innerhalb einer Methode oder einer Blockanweisung


deklariert werden heien lokale Variable.

Eine lokale Variable ist nur innerhalb des Blocks definiert, in dem sie
deklariert wurde (ebenso in allen "Unterblcken").

Eine lokale Variable berschattet eine gleichnamige Variable (ebenso


Parameter oder Attribut) eines ueren Block.

Auf ein Attribut, das berschattet wird, kann mittels this.attributName


zugegriffen werden.

Eine lokale Variable verliert ihre Gltigkeit sobald "ihr" Block beendet wird.

Thomas Miklitz (TU Darmstadt)

FILS Prof. Dr. Dorin Irimescu/Dr. Cristian Mustata WS 2004/2005 - Folie


55

Geltungsbereich von Variablen (2)

Beispiel (Vgl. Folie 47):

Einfhrung in die Programmierung

public class Point {


private double x;
private double y;
public Point(double x, double y) {
this.x = x;
Die Parameter x und y berschatten
this.y = y;
die gleichnamigen Attribute
}
}

Beispiele:
richtig:

falsch:
public static int max(int a, int b){
if (a > b) {
int result = a;
} else {
int result = b;
}
return result;
}

Die Variable result ist an dieser


Stelle
nicht
mehr
definiert.

Thomas
Miklitz
(TU Darmstadt)

public static int max(int a, int b){


int result;
if (a > b) {
result = a;
} else {
result = b;
}
return result;
}

FILS Prof. Dr. Dorin Irimescu/Dr. Cristian Mustata WS 2004/2005 - Folie


56

Einfhrung in die Programmierung

Feldvariablen (1)

ein Feld (Array) ist eine Zusammenfassung mehrerer Variablen


gleichen Datentyps unter einer Bezeichnung

der Zugriff auf ein Feldelement erfolgt ber einen Index (ganzzahlig).
Das erste Element hat immer den Index 0

Felder knnen von jedem Datentyp angelegt werden

Felder mssen als Variablen deklariert werden. Die eckigen Klammern


legen fest, dass eine Feldvariable angelegt werden soll
Typ[] name

Felder knnen bei der Deklaration statisch mit Werten initialisiert


werden
Typ[] name = {Wert1, Wert2, Wert3, ...};

Thomas Miklitz (TU Darmstadt)

FILS Prof. Dr. Dorin Irimescu/Dr. Cristian Mustata WS 2004/2005 - Folie


57

Feldvariable (2)

Felder knnen auch mit dem Befehl new zur Laufzeit dynamisch
angelegt werden. Die einzelnen Elemente werden dann mit dem
Standardwert des jeweiligen Datentyps (d.h. mit 0, false oder null)
initialisiert.

Einfhrung in die Programmierung

name = new Typ[feldgroesse];

die Feldgre (Anzahl der Elemente) kann ber das Attribut length
ermittelt werden:
name.length

Zugriff auf die Feldelemente:

allgemein:
n-tes Element:
erstes Element:
letztes Element:

Thomas Miklitz (TU Darmstadt)

name[index]
name[n-1]
name[0]
name[name.length 1]

FILS Prof. Dr. Dorin Irimescu/Dr. Cristian Mustata WS 2004/2005 - Folie


58

Feldvariable (3)

Einfhrung in die Programmierung

Das Feld wird initialisiert.

Beispiele:

public class FeldBeispiel1 {


public static void main (String args[]) {
int[] primes = {2,3,5,7,11,13,17,19,23,29,31};
for (int i=0; i<primes.length; i++) {
System.out.println( i + "-te Primzahl ist " + primes[i]);
}
}
i-tes Element des Feldes
}
public class FeldBeispiel2 {
public static void main (String args[]) {
Integer zahl = new Integer[3];
zahl[0] = new Integer(3);
zahl[1] = new Integer(7);
zahl[2] = new Integer(9);
for (int i=0; i<3; i++) {
System.out.println(zahl[i]);
}
}
}
Thomas Miklitz (TU Darmstadt)

Das Feld wird angelegt.

Objekte werden angelegt und


den Feldelementen zugewiesen.

FILS Prof. Dr. Dorin Irimescu/Dr. Cristian Mustata WS 2004/2005 - Folie


59

Einfhrung in die Programmierung

Mehrdimensionale Felder

analog zu eindimensionalen Feldern bietet Java auch die Mglichkeit


mehrdimensionaler Felder zu benutzen

mehrdimensionale Felder sind Felder von Feldern (von Feldern ...)

bei mehrdimensionalen Feldern werden bei der Deklaration, Instanziierung und


Benutzung entsprechend viele Paare von eckigen Klammern angegeben

Deklaration:

Deklaration mit Initialisierung

Typ[][] ... name;

Typ[][].. name = { { Wert1, Wert2, .. } , { Wert2, Wert2, .. }, .. }

Beispiel:
int [][] matrix = { {1,0,0}, {0,1,0}, {0,0,1} };
for (int i=0; i<matrix.length; i++) {
for (int j=0; j<matrix[i].length; j++) {
System.out.print(matrix[i][j] + "\t");
}
System.out.println();
}

Thomas Miklitz (TU Darmstadt)

FILS Prof. Dr. Dorin Irimescu/Dr. Cristian Mustata WS 2004/2005 - Folie


60