Sie sind auf Seite 1von 34

Java Schulung – Imperative P.

24. – 28. September 2007 (Montag)


Überblick über die Woche

Montag Dienstag Mittwoch Donnerstag Freitag

Imperative P. Objektorientierte P. GUI-P. Refactoring Entwurfsmuster


Geschichte Uml, Interfaces, Klassen, Frame, Container, Testen (Junit)
Funktionsweise Vererbung Layouts, CVS
Eclipse Listener… Debugger

Übungsteil: Übungsteil: Übungsteil: Übungsteil: Übungsteil:


Aufgabe „Office Aufgaben zuerst mit Office-Planning mit GUI Interaktive Planung/ Entwurfsmuster in altem
Planning“ und vorgegebenen zur Stammdaten- Umplanung, Beispielen
„Firemen Squad“ Signaturen, dann eingabe Client-Server anwenden.
ohne Klassen ohne.
Imperative P. mit Java - Überblick
 Kurze Einführung in Geschichte der Java-
Entwicklung
 Grundlegende Konzepte / Funktionsweise
 Garbage Collection, JVM, Plattformen
 Java-File class-Files jar-Files
 Entwicklungsumgebung – Eclipse (erste Schritte)
 Projekt / Programm anlagen
 Starten
 Imperatives Programmieren:
 Typen, Operatoren Ausdrücke, Anweisungen
 Funktionen (static) und Parameter ( Rekursion)
 Arrays (Verweis auf Interface List (OOP ein Tag später))
 Stack/Heap..Referenzen, Zuweisungpoint 1
Kurzer Überblick über die Geschichte von Java
1991: Erste Wurzeln: Sun-Projekt Green (Software für Konsumermarkt),
OO-Programmiersprache „Oak“ später „Star Seven“

ab 1993: Beginn des WWW-Booms, heutiger Name, Lizensierung durch Netscape

1996: JDK 1.0 (AWT), Firma JavaSoft, Einführung JavaBeans


1997: JDK 1.1 (JavaOS, JavaStation, PicoJava), Visual Age
1998: JDK 1.2 / Java 2 Plattform Standard Edition1.2
2000: J2SE 1.3 (Swing)
2001: Eclipse als Nachvolger von Visual Age von IBM freigegeben
2002: J2SE 1.4
2004: J2SE 5.0 (Templates)

Resümee:
 Vergleichsweise jung aber starke Verbreitung
 Symbiose mit effektiven Entwicklungswerkzeugen
Grundlegendes zu Java
 Objektorientierte Programmiersprache, imperative
Elemente ähnlich zu C

 Plattformunabhängig (Bytecode und Interpreter)

 Garbage-Collection (keine Pointer, Referenzen,


automatische Bereinigung)

 Multithreaded (parallele Threads, gemeinsamer


Zugriff auf Objekte auf dem Heap)
Java Virtual Machine

Quellcode
„.java“

Compiler javac.exe

Bytecode
„.class“ „.jar“

Interpreter java.exe

Bytecode
„.class“ „.jar“

JVM (Linux) JVM (Win) JSM (Mac)

 Begriffe: JVM, JDK, JRE, „Classpath“


 Manuelle Aufrufe von javac/java in Eclipse nicht notwendig
Eclipse – Ein erstes Java Programm
 Einrichtung nach SSI-Anleitung
 TWiki – Tools&Simulation – Eclipse
 Projekt und Paket anlegen
 Fasst Quellen eines Projektes zusammen
 Anlegen des Projektes „Schulung“
 Darunter Hierarchische Gliederung über „Pakete“
 Beispiele
 „com.ssn.acx.core“
 „com.ssn.acx.gui“
 „com.ssn.teach.hello“

 Klasse „HelloWorld“ anlegen


 Klasse = Beschreibung eines Objektes
 main-Methode: Prozeduraler Code, der beim Start
ausgeführt wird
Geschichte von Java

 point 1
 subpoint 1.
 subpoint 2.

 point 2
 subpoint 1.
Nachbetrachtung: Was ist passiert ?
 Automatische Generierung der Quellcodes
 Zugehörigkeit zum Paket am Start
 Klassengerüst / „Signatur“ der main-Methode
 Inkrementelle Compilierung im Hintergrund
 Syntax-Fehler werden unmittelbar rot unterringelt!
 Überflüssiges wird gelb unterringelt.
 Aufruf der Virtual Machine
 Start nach Klick auf „Run“
 Consolenausgaben
Beispiel für +/- Aufzählungen

Erster Punkt
Zweiter Punkt
Usw.......

Erster Punkt
Zweiter Punkt
Usw.......
Nachbetrachtung: Was ist passiert ?
 Variablendeklaration / Zuweisung
 <Typ> <Variablenname> = <Wert>;
 Gültigkeitsbereich der Variablen innerhalb { }
 Schleife
 For mit Iterationsvariablen.
 Syntax analog zu C.

 Shortcuts
 CTRL+SPACE vervollständigt nach bestem Wissen der
Entwicklungsumgebung (Beispiele Variablen oder sysout)
 CTRL+1 bessert einen Fehler aus nach bestem Wissen
(Beispiele: Ergänzen von Variablendekarationen,
Überzählige Imports entfernen)
Überblick: Sprachelemente auf den folgenden Folien

 Datentypen, Literale
 Operatoren, Ausdrücke
 Strings
 Anweisungen
Einfache Datentypen

Datentyp Beispielliteral

boolean entweder true false


char 16-Bit-Unicode ‚\u000‘‚a‘
byte 8-Bit-Integer -128
short 16-Bit-Integer -32768
int 32-Bit-Integer [-231 ... 231-1] 2147483647
long 64-Bit-Integer 50L
float 32-Bit-Gleitkommazahl 18.0f
double 64-Bit-Gleitkommazahl 18. 1.8e1
Chars und Zeichenketten

 Char
 Dargestellt als Zeichen zwischen zwei Apostrophen ´a´
 Darstellung als Unicode ´\u0041´ = ´A´
 Sonderzeichen in Escape-Sequenz ´\n´ ´t´
 String - Kette von Zeichen
 Dargestellt als Text zwischen „“
 Escape-Sequenzen können auch verwendet werden
 „Erste Zeile\nZweite Zeile“
Operatoren - Übersicht

 Integer-Arithmetik: +, -, *, /,
%
 Gleitkomma-Arithmetik: +, -, *, /,
%
 Boolesche Arithmetik: &&, ||, !
 Vergleichsoperatoren: ==, !=, <, >, <=, >=
 Zuweisungsoperatoren: =, +=, -=, *=, /=,
%=
 Inkrement-Operator: ++
 Dekrement-Operator: --
 Bit-Operatoren: <<, >>, &, |, ~, ^

 Spezielle Operatoren: ?:, (type)


Integer-Operatoren (für int, short, long)

+ positives Vorzeichen +9876

- negatives Vorzeichen -2345

+ Addition 12 + 98 (= 110)

- Subtraktion 12 - 98 (= -86)

* Multiplikation 6 * 5 (= 30)

/ Ganzzahl-Division 7 / 3 (= 2)

% Restbildung (modulo) 7 % 3 (= 1)

Zusammengesetzte Ausdrücke
 Ausdrücken bestehen aus Literale + Operatoren
 Reihenfolge durch Klammerung (Präzedenzregeln, immer klammern wenn Präzendenz unklar)
 Bsp: (6+5) * 5
Gleitkomma-Operatoren (double, float)

+ positives Vorzeichen +45.67e3

- negatives Vorzeichen -3.4e-5

+ Addition 1.2 + 9.8 (= 11.0)

- Subtraktion 1.2 - 9.8 (= -8.6)

* Multiplikation 6.1 * 5.0 (= 30.5)

/ Gleitkomma-Division 9.0 / 2.0 (= 4.5)

% Gleitkomma-Restbildung 4.0 % 2.2 (= 1.8)


Boolsche Operatoren und Fragezeichen - Beispiel
 Und &&
 Oder ||
 Nicht !
 Wenn ?
Operatoren – Zuweisung
 Operanden vom Typ der Variable
 Syntax:
<Variablenname> = <Ausdruck>;
 Beispiel:

int wert; // Deklaration


int zahl = 0; // Initialisierung
wert = 45; // Zuweisung
zahl = wert+3;

float pi = 3.1415f;
pi = 3.1415631;
Vergleichsoperatoren
 Arbeiten auf allen Zahlen-Typen
 ==, !=, <, >, <=, >=

 Beispiel:
Typumwandlungen

 Implizite Typumwandlungen (automatisch)


 short zu int zu long
 float zu double
 char zu int
 Explizite Typumwandlungen (cast)
 Expliziter „Cast“ wegen Informationsverlust
erforderlich.
 Beispiel:
double varA = 9,7;
int varB = (int) varA; // varB==9
Umgang mit Strings
 String ist kein primitiver Datentyp, sondern ein Referenzdatentyp
(d.h. ein Objekt)
 Operator + zur Verknüpfung möglich
 Vorsicht bei Test auf Gleichheit!
 Zahlen konvertieren bei Stringverknüpfung automatisch

 Beispiel:
Anweisungen - Übersicht
 Anweisungen wurden bereits in bisherigen Programmen
verwendet.
 Anweisungen werden mit „;“ abgeschlossen oder haben
einen Body { }
 Grundgerüst beim imperativen Programmieren. Folge von
Anweisungen:

 Deklarationen
 Zuweisungen
 Prozeduraufrufe
 Anweisungssequenz
 Kontrollstrukturen
 bedingte Anweisungen (if, switch)
 Wiederholungsanweisungen, Schleifen (while, do, for)
 break, continue;
Vergleich for und while

 break; unterbricht die Abarbeitung der aktuellen Schleife


 continue; setzt den aktuellen Scheifendurchlauf einmal
aus
Switch
Methoden (Prozeduren/Funktionen)
 Begriffsbestimmung:
 Methode = Teil des Programms das eine bestimmte Aufgabe
erfüllt
 Signatur: Rückgabewert, Eingabeparameter
 Spezifikationsort
 Definition innerhalb einer Klasse
 Wird über- oder unterhalb der main-Methode
 Semantik
 Keine Auswirkungen auf Programmablauf durch
Methodenspezifikation
 Methode ist „bekannt“ und kann für Anweisungen verwendet
werden.
 Beispiel:
Weiterführendes zu Funktionsaufrufen

 Returnwert void -> Prozedur ohne Rückgabe


 In Java gibt es nur Call by Value
 Vor dem Funktionsaufruf werden alle
Funktionsparameter werden von links nach rechts
ausgewertet
 Methodendeklaration mit beliebig vielen
Parametern desselben Typs:
static int summe(int… zahlen)
 Rekursive Aufrufe möglich.
 Endlosrekursion -> Stack Overflow
 Dann evtl: Umwandlung der Rekursion zu Iteration
Informationsweitergabe / Globale Variablen
 Bisher
 Deklaration von lokalen Variablen – gelten immer genau in einem Block { }
 Weitergabe von Information über Methodenparameter
 Andere Möglichkeit – Globale Variablen
 Definiert auf Klassenebene
 Schlüsselwort „static“ bedeutet „gehört zur Klasse“
 Vorsichtige Anwendung (Seiteneffekte bei Nebenläufigkeit)
Konstanten
 Konstante Werte
 Deklaration mit Schlüsselwort „final“ (const bei c)
 Anwendbar auf Variablen oder Parameterdeklaration
 Konvention: Konstantennamen in Großbuchstaben „_“ als Trenner
Arrays

 Array = Liste / Matrix von Werten

 Deklaration:
int[ ] zahlenListe;
 Erzeugung:
zahlenListe = new int[10];
 Zuweisung:
zahlenListe[0]=100;

 Erwähnenswert:
 Mehrdimensionalität durch Mehrfache []
 Laufzeitfehler bei ungültigem Index
 Arrays sind ein Referenzdatentyp…
Wo wird der Inhalt der Arrays gespeichert ?

 Stack:
 Größe definierbar: z.B. 128 MB
 Speicher in dem alle Variablenwerte (primitive
Datentypen/Referenzen) abgelegt werden.
 Wird voll bei tiefen Rekursionen

 Heap:
 Üblicherweise größer, z.B. 512 MB
 Speicher, in dem alle zur Laufzeit angelegten
Instanzen der Referenztypen gespeichert sind (z.B.
Array und Inhalt, später Klassen)
Zusammenfassung
 Grundlegende Konzepte / Funktionsweise
 Garbage Collection, JVM, ..
 Java Sprachelememte:
 Typen, Operatoren Ausdrücke, Anweisungen
 Funktionen (static) und Parameter ( Rekursion)
 Arrays (Verweis auf Interface List (OOP ein Tag später))
 Stack/Heap..Referenzen
 Erste Schritte im Umgang mit Eclipse
 Projekt / Programm anlegen
 Starten..
Einstiegsaufgaben Aufgaben

 Schreiben Sie ein Programm, das einen


Betrag in der Eingabe erwartet und die
Mehrwertsteuer berechnet.
Danke für Ihr Interesse …

Das könnte Ihnen auch gefallen