Übersicht - Katholische Universität Eichstätt
Sommersemester 2011
Programmieren mit Java
Dipl.-Kfm. Christopher Freitag
Lehrstuhl für ABWL und
Wirtschaftsinformatik
Katholische Universität
Eichstätt-Ingolstadt
Übersicht
1
Grundlagen der Systementwicklung
2
Objektorientierte Softwareentwicklung
3
Grundlagen der Java-Technologie
4
Datentypen und Variablen in Java
5
Ausdrücke und Anweisungen in Java
6
Objektorientierte Programmierung
7
Übungsaufgaben
Literatur
Katholische Universität Eichstätt-Ingolstadt
Lehrstuhl für ABWL und Wirtschaftsinformatik
Prof. Dr. Klaus D. Wilde
Soweit nicht anders angegeben, basiert das Skript im wesentlichen auf folgender
Literatur:

Balzert, H.: Lehrbuch der Software-Technik, 2. Aufl., Spektrum, 2008.

Goll, J.; Weiß, C.; Müller, F.: Java als erste Programmiersprache, 3. Aufl.,
Teubner, 2001.

Krüger, G.: Handbuch der Java-Programmierung, 4. Aufl., Addison-Wesley,
2005.

Oestereich, B.: Analyse und Design mit UML 2, 7. Aufl., Oldenburg, 2005

http://www.javabuch.de

http://www.java.sun.com
3
1
Grundlagen der Systementwicklung
1.1 Software Engineering
1.2 Vorgehensmodelle
1.3 Aufgaben
Übersicht
2
Objektorientierte Softwareentwicklung
3
Grundlagen der Java-Technologie
4
Datentypen und Variablen in Java
5
Ausdrücke und Anweisungen in Java
6
Objektorientierte Programmierung
7
Übungsaufgaben
1
Grundlagen der Systementwicklung
1.1 Software Engineering
1.2 Vorgehensmodelle
1.3 Aufgaben
Übersicht
2
Objektorientierte Softwareentwicklung
3
Grundlagen der Java-Technologie
4
Datentypen und Variablen in Java
5
Ausdrücke und Anweisungen in Java
6
Objektorientierte Programmierung
7
Übungsaufgaben
Katholische Universität Eichstätt-Ingolstadt
Lehrstuhl für ABWL und Wirtschaftsinformatik
Prof. Dr. Klaus D. Wilde
Grundlagen der Systementwicklung
Software Engineering
6
Grundlagen der Systementwicklung
7
Software Engineering

Definition
Katholische Universität Eichstätt-Ingolstadt
Lehrstuhl für ABWL und Wirtschaftsinformatik
Prof. Dr. Klaus D. Wilde
Software Engineering ist die Anwendung systematischer und
quantifizierbarer Ansätze (Konzepte, Methoden, Techniken, Werkzeuge), um
Anforderungsbeschreibung, Entwurf, Implementierung, Test, Betrieb und
Wartung qualitativ hochwertiger Software-Anwendungen kosteneffektiv
durchführen zu können.

Eigenschaften
 Klar definierte Ziele und Anforderungen
 Systematische Entwicklung einer Software-Anwendung im Rahmen des
Entwicklungsprozesses
 Kontinuierliche Überwachung des gesamten Entwicklungsprozesses
Balzert (2001), S. 35 - 40
Grundlagen der Systementwicklung
8
Software Engineering
Softwarequalität:

50% der Ausfälle im industriellen Sektor werden durch Software-Fehler
verursacht!
20,0%
Katholische Universität Eichstätt-Ingolstadt
Lehrstuhl für ABWL und Wirtschaftsinformatik
Prof. Dr. Klaus D. Wilde
0,1%-Fehlerniveau bedeutet:
0,0%
1977
Balzert (2001), S. 30 - 31
2007

pro Jahr 20000 fehlerhafte Medikamente

pro Woche 500 Fehler bei Operationen

pro Tag 18 Flugzeugabstürze

pro Stunde 22000 falsch gebuchte Schecks
Grundlagen der Systementwicklung
9
Software Engineering
Softwarequalität:

Qualitätsanforderungen an Software können aus verschiedenen Perspektiven
betrachtet werden.

Die ISO 9126 definiert sechs Qualitätsmerkmale für SW-Produkte.
Katholische Universität Eichstätt-Ingolstadt
Lehrstuhl für ABWL und Wirtschaftsinformatik
Prof. Dr. Klaus D. Wilde
Software-Qualität ist die Gesamtheit der Merkmale und Merkmalswerte eines SoftwareProdukts:


Funktionalität (Korrektheit, Sicherheit,...)

Zuverlässigkeit (Fehlertoleranz, Wiederherstellbarkeit, ...)

Benutzbarkeit (Bedienbarkeit, Erlernbarkeit, ...)

Effizienz (Wirtschaftlichkeit, Zeitverhalten, ...)

Wartungsfreundlichkeit (Analysierbarkeit, Änderbarkeit, ...)

Übertragbarkeit (Anpassbarkeit, Installierbarkeit, ...)
Vorgehensmodelle unterstützen den Programmierer, bei der Entwicklung qualitativ
hochwertiger Software.
Balzert (1998), S. 257 - 269
1
Grundlagen der Systementwicklung
1.1 Software Engineering
1.2 Vorgehensmodelle
1.2.1 Anforderungsdefinition
1.2.2 Entwurf
Übersicht
1.2.3 Implementierung
1.2.4 Test
1.3 Aufgaben
2
Objektorientierte Softwareentwicklung
3
Grundlagen der Java-Technologie
4
Datentypen und Variablen in Java
5
Ausdrücke und Anweisungen in Java
6
Objektorientierte Programmierung
7
Übungsaufgaben
Grundlagen der Systementwicklung
11
Vorgehensmodelle

Definition:
In einem Vorgehensmodell wird festgelegt, welche Aktivitäten in welcher
Reihenfolge von welchen Personen erledigt werden und welche Ergebnisse
dabei entstehen und wie diese in der Qualitätssicherung überprüft werden.
Katholische Universität Eichstätt-Ingolstadt
Lehrstuhl für ABWL und Wirtschaftsinformatik
Prof. Dr. Klaus D. Wilde

Eigenschaften:
 Festlegung der Reihenfolge der Arbeitsschritte
 Festlegung der Personen
 Definition der Teilprodukte
 Definition von Testfällen zur Qualitätssicherung

Ziele:
 Entwicklung einer qualitativ hochwertigen Software
 Beherrschung der Kosten und der Entwicklungszeit
Quelle: Balzert 2000, S. 54
Grundlagen der Systementwicklung
12
Vorgehensmodelle

Allgemeines Vorgehensmodell:
Projektbegründung/
Zielfindung
Vorphase
Istanalyse
Analyse
Katholische Universität Eichstätt-Ingolstadt
Lehrstuhl für ABWL und Wirtschaftsinformatik
Prof. Dr. Klaus D. Wilde
Sollkonzept
Systementwurf
Auswahl und
Anschaffung von
Standardsoftware
Entwurf
Programmentwurf
Realisierung
Einführung
Programmierung
Anpassung und
Datenübernahme
Test
Test
Systemeinführung
Grundlagen der Systementwicklung
13
Vorgehensmodelle

V-Modell:
Anwendungsszenarien
Anforderungsdefinition
Abnahmetest
Validierung
Testfälle
Katholische Universität Eichstätt-Ingolstadt
Lehrstuhl für ABWL und Wirtschaftsinformatik
Prof. Dr. Klaus D. Wilde
Grobentwurf
Systemtest
Testfälle
Feinentwurf
Integrationstest
Testfälle
Modulimplementation
Modultest

Validierung: Eignung des Produkts auf seinen Einsatzzweck

Verifikation: Übereinstimmung des Produkts mit seiner Spezifikation
Quelle: http://www.v-modell.iabg.de/
Verifikation
1
Grundlagen der Systementwicklung
1.1 Software Engineering
1.2 Vorgehensmodelle
1.2.1 Anforderungsdefinition
1.2.2 Entwurf
Übersicht
1.2.3 Implementierung
1.2.4 Test
1.3 Aufgaben
2
Objektorientierte Softwareentwicklung
3
Grundlagen der Java-Technologie
4
Datentypen und Variablen in Java
5
Ausdrücke und Anweisungen in Java
6
Objektorientierte Programmierung
7
Übungsaufgaben
Vorgehensmodelle
Katholische Universität Eichstätt-Ingolstadt
Lehrstuhl für ABWL und Wirtschaftsinformatik
Prof. Dr. Klaus D. Wilde
Anforderungsdefinition

Die Anforderungsdefinition (Requirements Engineering) umfasst Prinzipien,
Methoden und Werkzeuge zur Ermittlung, Beschreibung, Prüfung und
Verwaltung von Anforderungen in der Systementwicklung.

Eine Anforderung beschreibt eine zu erfüllende Eigenschaft oder zu
erbringende Leistung eines Systems.

wichtige Aufgaben:
 Ermitteln und Beschreiben der Anforderungen
 Modellieren der Anforderungen als fachliche Lösung
 Prüfen der Anforderungen
 Verwalten der Anforderungen
Kappel et al. (2004), S. 29 - 34
15
Vorgehensmodelle
Anforderungsdefinition

Anforderungen spielen für die Qualität von Software-Anwendungen eine
entscheidende Rolle

Die Praxis hat massive Probleme mit Anforderungen
 Unklar spezifiziert
 Fehlerhaft
Katholische Universität Eichstätt-Ingolstadt
Lehrstuhl für ABWL und Wirtschaftsinformatik
Prof. Dr. Klaus D. Wilde
 Unvollständig
 ...

Die Folgen
 Mangelnde Akzeptanz durch die Benutzer
 Fehlplanungen
 Inadäquate Softwarearchitekturen
 …
Kappel et al. (2004), S. 29 - 34
16
Vorgehensmodelle
17
Anforderungsdefinition
Katholische Universität Eichstätt-Ingolstadt
Lehrstuhl für ABWL und Wirtschaftsinformatik
Prof. Dr. Klaus D. Wilde
Beispiele für Anforderungen:

Die Anwendung muss zum 1. September 2009 online verfügbar sein (Vorgabe des
Auftraggebers)

Die Anwendung muss gleichzeitig mindestens 2500 Benutzer unterstützen (Qualitätsziel
des Auftraggebers)

Als Entwicklungsplattform soll J2EE zum Einsatz kommen (Technologieerwartung der
Entwickler)

Die Übertragung sämtlicher Geschäftsdaten muss gesichert erfolgen (Qualitätsziel des
Benutzers)

Die Benutzerschnittstelle muss Layouts für unterschiedliche Kundengruppen
ermöglichen (Qualitätsziel des Auftraggebers)

Ein beliebiger Benutzer muss in der Lage sein, mit der Anwendung ein gewünschtes
Produkt innerhalb von drei Klicks zu finden (Usability-Ziel des Auftraggebers)

Der Benutzer soll jederzeit die in seinem Warenkorb befindlichen Artikel einsehen
können (Funktionsziel eines Benutzers)
Kappel et al. (2004), S. 29 - 34
1
Grundlagen der Systementwicklung
1.1 Software Engineering
1.2 Vorgehensmodelle
1.2.1 Anforderungsdefinition
1.2.2 Entwurf
Übersicht
1.2.3 Implementierung
1.2.4 Test
1.3 Aufgaben
2
Objektorientierte Softwareentwicklung
3
Grundlagen der Java-Technologie
4
Datentypen und Variablen in Java
5
Ausdrücke und Anweisungen in Java
6
Objektorientierte Programmierung
7
Übungsaufgaben
Vorgehensmodelle
19
Entwurf

Im Entwurf wird aus den spezifizierten Anforderungen eine SoftwareArchitektur entwickelt.

wichtige Aufgaben:
 Identifikation und Darstellung der einzelnen Elemente (Schichten, Module,
Klassen, ...) der zugrundeliegenden Software-Architektur.
Katholische Universität Eichstätt-Ingolstadt
Lehrstuhl für ABWL und Wirtschaftsinformatik
Prof. Dr. Klaus D. Wilde
 Identifikation und Darstellung der Beziehungen zwischen den einzelnen
Elementen.
 ...

Entwurfs- und Implementierungsphase sind sehr stark miteinander verzahnt.
 Die im Entwurf modellierten Elemente und Beziehungen sollten in der Phase
der Implementierung direkt programmiert werden können.
1
Grundlagen der Systementwicklung
1.1 Software Engineering
1.2 Vorgehensmodelle
1.2.1 Anforderungsdefinition
1.2.2 Entwurf
Übersicht
1.2.3 Implementierung
1.2.4 Test
1.3 Aufgaben
2
Objektorientierte Softwareentwicklung
3
Grundlagen der Java-Technologie
4
Datentypen und Variablen in Java
5
Ausdrücke und Anweisungen in Java
6
Objektorientierte Programmierung
7
Übungsaufgaben
Vorgehensmodelle
21
Implementierung

Die Aufgabe des Programmierers ist es, die im Entwurf spezifizierten
Elemente zu implementieren.

wichtige Aufgaben:
 Konzeption von Datenstrukturen und Algorithmen
 Angabe zur Zeit- und Speicherkomplexität
Katholische Universität Eichstätt-Ingolstadt
Lehrstuhl für ABWL und Wirtschaftsinformatik
Prof. Dr. Klaus D. Wilde
 Umsetzung der Konzepte in die Konstrukte der verwendeten Programmiersprache
 Dokumentation der Implementierung durch Kommentare
 Test und Verifikation des entwickelten Programms.
 ...
1
Grundlagen der Systementwicklung
1.1 Software Engineering
1.2 Vorgehensmodelle
1.2.1 Anforderungsdefinition
1.2.2 Entwurf
Übersicht
1.2.3 Implementierung
1.2.4 Test
1.3 Aufgaben
2
Objektorientierte Softwareentwicklung
3
Grundlagen der Java-Technologie
4
Datentypen und Variablen in Java
5
Ausdrücke und Anweisungen in Java
6
Objektorientierte Programmierung
7
Übungsaufgaben
Vorgehensmodelle
Test

Der Einsatz von Testmethoden im Rahmen der Systementwicklung wird
verwendet,
 um die Funktionalität einer Software an den Anforderungen und ihre Qualität zu
messen und
 Softwarefehler zu ermitteln.
Katholische Universität Eichstätt-Ingolstadt
Lehrstuhl für ABWL und Wirtschaftsinformatik
Prof. Dr. Klaus D. Wilde

Man unterscheidet zwischen
 Modultest
 Integrationstest
 System-/Abnahmetest
23
Vorgehensmodelle
Katholische Universität Eichstätt-Ingolstadt
Lehrstuhl für ABWL und Wirtschaftsinformatik
Prof. Dr. Klaus D. Wilde
Test

Aufgabe des Modultests ist es die Korrektheit einzelner Module des
Software-Systems zu verifizieren (z. B. von einzelnen Klassen).

Nach Änderungen in der Programmierung sollte durch Ablauf aller Testfälle
die Funktionalität des Programms verifiziert werden.
Balzert (1998), S. 5505
24
Vorgehensmodelle
25
Test

Aufgabe des Integrationstests ist es das fehlerfreie Zusammenwirken der
System-Komponenten zu überprüfen.

Voraussetzung:
 Jede System-Komponente (z. B. Modul) muss für sich allein getestet worden sein.
Katholische Universität Eichstätt-Ingolstadt
Lehrstuhl für ABWL und Wirtschaftsinformatik
Prof. Dr. Klaus D. Wilde

Generelle Vorgehensweise:
 Die einzelnen System-Komponenten werden schrittweise zusammengesetzt und
auf fehlerfreie Zusammenarbeit überprüft.

Teststrategien:
 Bottom-Up
 Top-Down
 Big Bang
 ....
Balzert (1998), S. 5505
Vorgehensmodelle
Katholische Universität Eichstätt-Ingolstadt
Lehrstuhl für ABWL und Wirtschaftsinformatik
Prof. Dr. Klaus D. Wilde
Test

Der Systemtest ist der abschließende Test der Software-Entwicklung in der
realen Umgebung ohne den Auftraggeber.

Das System muss ggf. vor Beginn des Tests von der Entwicklungs- auf die
Einsatz- oder Zielplattform portiert werden.

Grundlage: Produktdefinition (Pflichtenheft, Produktmodell, Konzept der
Benutzerschnittstelle, Benutzerhandbuch)

Prüfziele können u. a. sein:
 Funktionalität
 Volumen/ Zeit
 Zuverlässigkeit
 Benutzbarkeit (z. B. Usability Test)
 ...
Balzert (1998), S. 537
26
Vorgehensmodelle
27
Test

Der Abnahmetest ist eine besondere Ausprägung des Systemtests, bei dem
das System getestet wird
 unter Mitwirkung und Federführung des Auftraggebers
 in der realen Einsatzumgebung beim Auftraggeber
Katholische Universität Eichstätt-Ingolstadt
Lehrstuhl für ABWL und Wirtschaftsinformatik
Prof. Dr. Klaus D. Wilde
 (unter Umständen) mit echten Daten des Auftraggebers

Man unterscheidet im Allgemeinen zwischen folgenden Konzepten:
 Alpha-Test: System wird in der Zielumgebung des Herstellers durch Anwender
erprobt.
 Beta-Test: System wird ausgewählten Pilot-Kunden zur Probenutzung zur
Verfügung gestellt.
1
Grundlagen der Systementwicklung
1.1 Software Engineering
1.2 Vorgehensmodelle
1.2.1 Anforderungsdefinition
1.2.2 Entwurf
Übersicht
1.2.3 Implementierung
1.2.4 Test
1.3 Aufgaben
2
Objektorientierte Softwareentwicklung
3
Grundlagen der Java-Technologie
4
Datentypen und Variablen in Java
5
Ausdrücke und Anweisungen in Java
6
Objektorientierte Programmierung
7
Übungsaufgaben
Grundlagen der Systementwicklung
Aufgaben
Katholische Universität Eichstätt-Ingolstadt
Lehrstuhl für ABWL und Wirtschaftsinformatik
Prof. Dr. Klaus D. Wilde
Auf der Internetseite zur Vorlesung finden Sie den Artikel von Lauenroth,
Halmans (2007): Auswirkung sehr vieler Stakeholder auf das Requirement
Engineering

Welche Zieldimensionen nennen die Autoren für das Requirement
Engineering?

Welche Auswirkungen auf die verschiedenen Zieldimensionen ergeben sich
durch sehr viele Beteiligte?
29
Grundlagen der Systementwicklung
Aufgaben
Katholische Universität Eichstätt-Ingolstadt
Lehrstuhl für ABWL und Wirtschaftsinformatik
Prof. Dr. Klaus D. Wilde
Auf der Internetseite zur Vorlesung finden Sie den Artikel von Harms,
Schweibenz (2000): Testing Web Usability

Was verstehen die Autoren unter dem Begriff „Usability Engineering“?

Welche Evaluations-Methoden werden vorgestellt – diskutieren Sie diese
kritisch!
30
1
Grundlagen der Systementwicklung
2
Objektorientierte Softwareentwicklung
2.1 Grundlagen
2.2 Unified Modeling Language
2.3 Aufgaben
Übersicht
3
Grundlagen der Java-Technologie
4
Datentypen und Variablen in Java
5
Ausdrücke und Anweisungen in Java
6
Objektorientierte Programmierung
7
Übungsaufgaben
Objektorientierte
Objektorientierte Softwareentwicklung
Programmierung
32
Grundlagen
Objektorientierung:

Zentrale Aspekte der objektorientierten Softwareentwicklung:
 Abstraktion von Objekten zu Klassen,
 Datenkapselung,
Katholische Universität Eichstätt-Ingolstadt
Lehrstuhl für ABWL und Wirtschaftsinformatik
Prof. Dr. Klaus D. Wilde
 Vererbung und
 Polymorphismus.

Im Gegensatz zur prozeduralen Programmierung, bei der ein Problem durch
Befehlssequenzen gelöst wird, werden bei der objektorientierten
Programmierung Objekte erzeugt, die untereinander interagieren, um ein
Problem zu lösen.

Die Abstraktion und Kapselung ermöglichen eine konsequente
Wiederverwendbarkeit von Programmteilen!
Objektorientierte Softwareentwicklung
Grundlagen
Überblick:
Katholische Universität Eichstätt-Ingolstadt
Lehrstuhl für ABWL und Wirtschaftsinformatik
Prof. Dr. Klaus D. Wilde

Die Objektorientierung sieht die in der realen Welt vorkommenden
Gegenstände als Objekte an. Diese stehen untereinander in Beziehung und
interagieren miteinander über Schnittstellen.
33
Objektorientierte Softwareentwicklung
Grundlagen
Katholische Universität Eichstätt-Ingolstadt
Lehrstuhl für ABWL und Wirtschaftsinformatik
Prof. Dr. Klaus D. Wilde
Abstraktion:

Abstraktion kann als Komplexitätsreduktion verstanden werden, indem auf
Details verzichtet wird und die Konzentration auf essentielle Charakteristika
gelegt wird.

Abstraktion …
 … ermöglicht Zugang zu komplexen Problematiken.
 … begünstigt die Wiederverwendung von Objekten. (Spezielle
Charakteristika, die zu einer geringeren Allgemeingültigkeit der abstrahierten
Objekte führen, werden ausgeblendet.)

Im Programmierumfeld sind zwei Abstraktionstypen von Bedeutung:
 Funktionsabstraktion
 Datenabstraktion
34
Objektorientierte Softwareentwicklung
Grundlagen
Definition Objekte:

Einzelne Objekte werden als Instanzen einer Klasse bezeichnet.

Jedes Objekt lässt sich beschreiben durch …
 seinen aktuellen Zustand bzw. seine Eigenschaften (Variablen) sowie
Katholische Universität Eichstätt-Ingolstadt
Lehrstuhl für ABWL und Wirtschaftsinformatik
Prof. Dr. Klaus D. Wilde
 sein Verhalten (Methoden).
35
Objektorientierte Softwareentwicklung
Grundlagen
Instanzen:
Katholische Universität Eichstätt-Ingolstadt
Lehrstuhl für ABWL und Wirtschaftsinformatik
Prof. Dr. Klaus D. Wilde
Beispiel: Fahrrad-Objekt

Das Fahrrad fährt gerade 25 km/h, hat den 12. Gang eingelegt und der
Sattel ist 14 cm herausgezogen. Diese Informationen sind in
entsprechenden Variablen hinterlegt, die auch als Instanzvariablen
bezeichnet werden, da sie den Zustand einer ganz bestimmten Instanz
beinhalten.

Die entsprechenden Methoden des Fahrrads, wie z.B. Gang wechseln,
werden dementsprechend als Instanzmethoden bezeichnet.
36
Objektorientierte Softwareentwicklung
37
Grundlagen
Katholische Universität Eichstätt-Ingolstadt
Lehrstuhl für ABWL und Wirtschaftsinformatik
Prof. Dr. Klaus D. Wilde
Nachrichten:

Meistens werden Programme aus einer Vielzahl von Objekten gebildet,
die untereinander in Wechselwirkung stehen.

Die Kommunikation der Objekte untereinander
erfolgt dabei über Nachrichten
(Methodenaufrufe).

Mit dem Aufruf einer Methode wird die
Kontrolle an das Objekt übergeben,
an das die Nachricht gerichtet ist.
Drei Bestandteile einer Nachricht:
1. angesprochenes Objekt (DeinFahrrad)
2. auszuführende Methode (gangWechseln)
3. benötigte Parameter für Methode (5. Gang)
Objektorientierte Softwareentwicklung
Grundlagen
Katholische Universität Eichstätt-Ingolstadt
Lehrstuhl für ABWL und Wirtschaftsinformatik
Prof. Dr. Klaus D. Wilde
Klassen:

Objekte mit denselben Merkmalstypen werden zu Klassen
zusammengefasst.

Eine Klasse kann als Bauplan verstanden werden, der sämtliche Variablen
und Methoden eines Objekttyps definiert.

Klassen sind Abstraktionen, die das Verhalten (mit Hilfe von Methoden) und
die Merkmale (mit Hilfe von Attributen) einer Menge von Objekten
spezifizieren.

Wenn eine Fahrrad-Klasse vorliegt, kann eine beliebige Zahl an FahrradObjekten (Instanzen) erzeugt werden.
38
Katholische Universität Eichstätt-Ingolstadt
Lehrstuhl für ABWL und Wirtschaftsinformatik
Prof. Dr. Klaus D. Wilde
Objektorientierte Softwareentwicklung
Grundlagen
Beispiel:
39
Objektorientierte Softwareentwicklung
Grundlagen
Katholische Universität Eichstätt-Ingolstadt
Lehrstuhl für ABWL und Wirtschaftsinformatik
Prof. Dr. Klaus D. Wilde
Vererbung:

Vererbung ist ein Programmiersprachenkonzept für die Umsetzung einer
Relation zwischen einer Ober- und einer Unterklasse.

Die Eigenschaften der Oberklassen werden an die entsprechenden
Unterklassen weitergegeben, d. h. vererbt.

Somit kann die Unterklasse darauf zugreifen, ohne dass die Methoden und
Attribute darin implementiert werden müssen.

Die Unterklassen können die geerbten Methoden entsprechend ihrer
Funktionalität abändern (überschreiben/überladen  Polymorphismus).
40
Katholische Universität Eichstätt-Ingolstadt
Lehrstuhl für ABWL und Wirtschaftsinformatik
Prof. Dr. Klaus D. Wilde
Objektorientierte Softwareentwicklung
41
Grundlagen
Vererbung:
Spezialisierung
Generalisierung
1
Grundlagen der Systementwicklung
2
Objektorientierte Softwareentwicklung
2.1 Grundlagen
2.2 Unified Modeling Language
2.3 Aufgaben
Übersicht
3
Grundlagen der Java-Technologie
4
Datentypen und Variablen in Java
5
Ausdrücke und Anweisungen in Java
6
Objektorientierte Programmierung
7
Übungsaufgaben
Objektorientierte Softwareentwicklung
Unified Modeling Language (UML)
Einführung:
„UML is a language for visualizing, specifying,
constructing and documenting the artifacts of
software systems.“
Katholische Universität Eichstätt-Ingolstadt
Lehrstuhl für ABWL und Wirtschaftsinformatik
Prof. Dr. Klaus D. Wilde
(www.omg.org, zugegriffen am 11.06.07)

Notation, um Softwaresysteme auf objekt-orientierte Weise zu beschreiben bzw. zu modellieren

Sprachunabhängig

UML 2.0 bietet 13 verschiedene Diagrammtypen, u. a.

Klassendiagramm

Anwendungsfalldiagramm

Sequenzdiagramm

Zustandsdiagramm

Die einzelnen Diagramme stellen verschiedene Sichtweisen auf ein Softwaresystem dar.

Die Phasen Anforderungsdefinition, Entwurf und Implementierung werden durchgängig unterstützt
43
Objektorientierte Softwareentwicklung
44
Unified Modeling Language (UML)
Klassendiagramme: Klassen
Katholische Universität Eichstätt-Ingolstadt
Lehrstuhl für ABWL und Wirtschaftsinformatik
Prof. Dr. Klaus D. Wilde

Klassendiagramme beschreiben die Struktur eines Systems mit Hilfe von
Klassen und Objekten.
Kunde
Anschrift
-name: String
-strasse: String
+getName(): String
+setName (name: String)
+getStrasse(): String
+setStrasse (Strasse: String)
Bestellung
-BestellNummer: Integer
+getBestellNummer(): Integer
+setBestellNummer(BestellNummer: Integer)
Objektorientierte Softwareentwicklung
45
Unified Modeling Language (UML)
Katholische Universität Eichstätt-Ingolstadt
Lehrstuhl für ABWL und Wirtschaftsinformatik
Prof. Dr. Klaus D. Wilde
Klassendiagramme: Assoziation

Assoziationen sind Beziehungen zwischen Klassen.

Jeder Kunde besitzt bspw. eine Anschrift und kann eine Bestellung aufgeben.
Kunde
Anschrift
besitzt
-name: String
-strasse: String
+getName(): String
+setName (name: String)
+getStrasse(): String
+setStrasse (Strasse: String)
bestellt
Bestellung
-BestellNummer: Integer
+getBestellNummer(): Integer
+setBestellNummer(BestellNummer: Integer)
Objektorientierte Softwareentwicklung
46
Unified Modeling Language (UML)
Katholische Universität Eichstätt-Ingolstadt
Lehrstuhl für ABWL und Wirtschaftsinformatik
Prof. Dr. Klaus D. Wilde
Klassendiagramme: Multiplizität

Jedes Ende einer Assoziation kann mit einer natürlichen Zahl bzw. einem
Bereich von natürlichen Zahlen (z.B.: 1 ... *) gekennzeichnet werden.

Diese zeigt die Anzahl der Objektverbindungen auf, die von einer Instanz der
Klasse ausgehen können.
Eins-zu-Eins Assoziation:
Student
Eins-zu-Viele Assoziation:
Kunde
Viele-zu-Viele Assoziation:
Student
1
besitzt
1
1
besitzt
*
*
hört
*
Matrikelnummer
Adresse
Vorlesung
Objektorientierte Softwareentwicklung
47
Unified Modeling Language (UML)
Katholische Universität Eichstätt-Ingolstadt
Lehrstuhl für ABWL und Wirtschaftsinformatik
Prof. Dr. Klaus D. Wilde
Klassendiagramme: Multiplizität
Kunde
-name: String
+getName(): String
+setName (name: String)
1
bestellt
*
Bestellung
-BestellNummer: Integer
+getBestellNummer(): Integer
+setBestellNummer(BestellNummer: Integer)
1
besitzt
*
Anschrift
-strasse: String
+getStrasse(): String
+setStrasse (Strasse: String)
Objektorientierte Softwareentwicklung
48
Unified Modeling Language (UML)
Klassendiagramme: Aggregation
Katholische Universität Eichstätt-Ingolstadt
Lehrstuhl für ABWL und Wirtschaftsinformatik
Prof. Dr. Klaus D. Wilde

Eine Aggregation ist eine Assoziation, die eine „Teil-Ganzes-Hierarchie“
darstellt. Sie soll beschreiben, wie sich etwas Ganzes aus seinen Teilen
logisch zusammensetzt.
Student
Kunde
PKW
1
1
1
besteht aus
hat
*
besteht aus
*
Teil
1
besteht aus
Kundenkonto
4
Rad
*
Kundenkonto
Objektorientierte Softwareentwicklung
Übersicht: Klassendiagramme in UML
Assoziation

Assoziationen sind Beziehungen zwischen Klassen.
Katholische Universität Eichstätt-Ingolstadt
Lehrstuhl für ABWL und Wirtschaftsinformatik
Prof. Dr. Klaus D. Wilde
Multiplizität

Jedes Ende einer Assoziation kann mit einer natürlichen Zahl bzw.
einem Bereich von natürlichen Zahlen (z.B.: 1 ... *) gekennzeichnet
werden.

Diese zeigt die Anzahl der Objektverbindungen auf, die von einer
Instanz der Klasse ausgehen können.
Aggregation

Eine Aggregation ist eine Assoziation, die eine „Teil-GanzesHierarchie“ darstellt. Sie soll beschreiben, wie sich etwas Ganzes
aus seinen Teilen logisch zusammensetzt.
Vererbung

Vererbung ist ein Programmiersprachenkonzept für die Umsetzung
einer Relation zwischen einer Ober- und einer Unterklasse.

Die Unterklassen können die geerbten Methoden entsprechend ihrer
Funktionalität abändern (überschreiben/überladen: Polymorphismus)
49
1
Grundlagen der Systementwicklung
2
Objektorientierte Softwareentwicklung
2.1 Grundlagen
2.2 Unified Modeling Language
2.3 Aufgaben
Übersicht
3
Grundlagen der Java-Technologie
4
Datentypen und Variablen in Java
5
Ausdrücke und Anweisungen in Java
6
Objektorientierte Programmierung
7
Übungsaufgaben
Objektorientierte Softwareentwicklung
51
Aufgaben
Katholische Universität Eichstätt-Ingolstadt
Lehrstuhl für ABWL und Wirtschaftsinformatik
Prof. Dr. Klaus D. Wilde
Gegeben sind die nachfolgenden Klassendiagramme. Beurteilen Sie, ob diese
Diagramme richtig sind und begründen Sie Ihre Antwort. Korrigieren Sie die
fehlerhaften Diagramme.
Katholische Universität Eichstätt-Ingolstadt
Lehrstuhl für ABWL und Wirtschaftsinformatik
Prof. Dr. Klaus D. Wilde
Objektorientierte Softwareentwicklung
Aufgaben
52
Objektorientierte Softwareentwicklung
53
Aufgaben
Gegeben seien die folgenden Klassen: Mehr-Familien-Haus, Gebäude, Haus,
Stall, Schafstall, Ein-Familien-Haus, Reithalle, Sporthalle und Kirche.
Katholische Universität Eichstätt-Ingolstadt
Lehrstuhl für ABWL und Wirtschaftsinformatik
Prof. Dr. Klaus D. Wilde
Weiterhin soll es die Attribute Hausnummer, jahr_der_erbauung,
anzahl_kinderzimmer und hat_tribüne geben
Entwerfen Sie ein Klassendiagramm gemäß UML. Ordnen Sie die Attribute jeweils
nur einer Klasse zu. Achten Sie aber darauf, dass alle Klassen auf die Attribute
zugreifen können, die sinnvoll sind. (Hinweis: Jedes Gebäude soll eine
Hausnummer bekommen.)
Objektorientierte Softwareentwicklung
54
Aufgaben
Katholische Universität Eichstätt-Ingolstadt
Lehrstuhl für ABWL und Wirtschaftsinformatik
Prof. Dr. Klaus D. Wilde
Gegeben ist die folgende Problemstellung.
Eine Bahnlinie hat eine Nummer. An einer Bahnlinie liegen Bahnhöfe, die einen Namen
tragen. Eine Bahnlinie hat einen Startbahnhof und einen Endbahnhof. Einer Bahnlinie sind
Fahrten zugeordnet, die nummeriert sind (Zugnummer) und die fahrplanmäßig auf dieser
Bahnlinie verkehren. Die Fahrten werden von Zügen durchgeführt und haben einen Zustand
(z.B. pünktlich oder unpünktlich). Ein Zug absolviert eine oder mehrere Fahrten der
Bahnlinie. Jeder Zug wird durch eine Lok geführt und hat darüber hinaus Gepäckwagen,
Schlafwagen und Personenwagen. Lok und alle Wagen tragen eine individuelle
Herstellungsnummer.
Entwerfen Sie ein UML Klassendiagramm. Achten Sie insbesondere auf:
 Klassen
 Attribute
 Vererbung
 Assoziationen
 Multiplizitäten (gegebenenfalls sinnvoll ergänzen)
Katholische Universität Eichstätt-Ingolstadt
Lehrstuhl für ABWL und Wirtschaftsinformatik
Prof. Dr. Klaus D. Wilde
Objektorientierte Softwareentwicklung
Video
55
1
Grundlagen der Systementwicklung
2
Objektorientierte Softwareentwicklung
3
Grundlagen der Java-Technologie
3.1 Schlüsselkonzepte von Java
3.2 Die Java Plattform
Übersicht
3.3 Das erste Java Programm
3.4 Aufgaben
4
Datentypen und Variablen in Java
5
Ausdrücke und Anweisungen in Java
6
Objektorientierte Programmierung
7
Übungsaufgaben
1
Grundlagen der Systementwicklung
2
Objektorientierte Softwareentwicklung
3
Grundlagen der Java-Technologie
3.1 Schlüsselkonzepte von Java
3.2 Die Java Plattform
Übersicht
3.3 Das erste Java Programm
3.4 Aufgaben
4
Datentypen und Variablen in Java
5
Ausdrücke und Anweisungen in Java
6
Objektorientierte Programmierung
7
Übungsaufgaben
Grundlagen der Java Technologie
Schlüsselkonzepte von Java
Überblick:

Bei der Entwicklung der Programmiersprache Java standen folgende
Schlüsselkonzepte im Vordergrund:
 Objektorientierung
 Einfachheit
Katholische Universität Eichstätt-Ingolstadt
Lehrstuhl für ABWL und Wirtschaftsinformatik
Prof. Dr. Klaus D. Wilde
 Nebenläufigkeit
 Sicherheit
 Plattformunabhängigkeit
58
Katholische Universität Eichstätt-Ingolstadt
Lehrstuhl für ABWL und Wirtschaftsinformatik
Prof. Dr. Klaus D. Wilde
Grundlagen der Java Technologie
Schlüsselkonzepte von Java
Prozedurale vs. Objektorientierte Programmierung:
59
Grundlagen der Java Technologie
60
Schlüsselkonzepte von Java
Katholische Universität Eichstätt-Ingolstadt
Lehrstuhl für ABWL und Wirtschaftsinformatik
Prof. Dr. Klaus D. Wilde
Nebenläufigkeit:

Mit Nebenläufigkeit (Multithreading) bezeichnet man die Fähigkeit eines
Systems, zwei oder mehrere Vorgänge simultan oder quasi-simultan
auszuführen.

Java hat Threads direkt in die Sprache integriert und mit den erforderlichen
Hilfsmitteln als Konstrukt zur Realisierung von Nebenläufigkeit implementiert.

Beispiel: Benutzerdialog, während im Hintergrund eine rechenintensive
Anwendung läuft.
Katholische Universität Eichstätt-Ingolstadt
Lehrstuhl für ABWL und Wirtschaftsinformatik
Prof. Dr. Klaus D. Wilde
Grundlagen der Java Technologie
Schlüsselkonzepte von Java
Nebenläufigkeit:
61
Grundlagen der Java Technologie
62
Schlüsselkonzepte von Java
Katholische Universität Eichstätt-Ingolstadt
Lehrstuhl für ABWL und Wirtschaftsinformatik
Prof. Dr. Klaus D. Wilde
Plattformunabhängigkeit:

Das vom Java-Compiler aus dem Quellcode erzeugte Programm (so
genannter Bytecode) ist unabhängig von der Rechnerarchitektur und läuft auf
jedem Rechner auf dem die Java Virtual Machine (JVM) existiert.

Die JVM stellt eine Schicht zwischen dem Bytecode und der zu Grunde
liegenden Rechnerplattform dar.

Ein Interpreter übersetzt die Bytecode-Befehle in plattformspezifische
Prozessorbefehle.
Grundlagen der Java Technologie
Schlüsselkonzepte von Java
Katholische Universität Eichstätt-Ingolstadt
Lehrstuhl für ABWL und Wirtschaftsinformatik
Prof. Dr. Klaus D. Wilde
Plattformunabhängigkeit:

Bei Javaprogrammen wird der Code
nur einmal für alle Plattformen
kompiliert. Der kompilierte JavaCode (=Bytecode) befindet sich in
Dateien mit einer .classErweiterung.

Derselbe Bytecode lässt sich nun
auf allen Plattformen, auf denen
eine JVM installiert ist, ausführen.
63
Grundlagen der Java Technologie
64
Schlüsselkonzepte von Java
Katholische Universität Eichstätt-Ingolstadt
Lehrstuhl für ABWL und Wirtschaftsinformatik
Prof. Dr. Klaus D. Wilde
Programmarten:

Applets sind Java-Programme, die auf Internetseiten eingebunden werden
und unter verschärften Sicherheitsbestimmungen ablaufen.

Bei Servlets handelt es sich um in Java entwickelte Anwendungen, die auf
einem Webserver eingebettet werden. So wie Applets innerhalb eines
Browsers laufen, laufen Servlets in Webservern ab. Servlets werden
eingesetzt, um z. B. im Internet interaktive Dienste zur Verfügung zu stellen.

Applications sind vollwertige Java-Anwendungen. Im Gegensatz zu Applets,
müssen sie erst in irgendeiner Form vom Anwender installiert werden, bevor
sie gestartet werden können.
1
Grundlagen der Systementwicklung
2
Objektorientierte Softwareentwicklung
3
Grundlagen der Java-Technologie
3.1 Schlüsselkonzepte von Java
3.2 Die Java Plattform
Übersicht
3.3 Das erste Java Programm
3.4 Aufgaben
4
Datentypen und Variablen in Java
5
Ausdrücke und Anweisungen in Java
6
Objektorientierte Programmierung
7
Übungsaufgaben
Grundlagen der Java Technologie
66
Die Java Plattform
Katholische Universität Eichstätt-Ingolstadt
Lehrstuhl für ABWL und Wirtschaftsinformatik
Prof. Dr. Klaus D. Wilde
Die Java API:

Java wird mit einer Reihe von Klassenbibliotheken ausgeliefert, die dem
Anwendungsprogrammierer zahlreiche Klassen und Interfaces zur Verfügung
stellen. http://java.sun.com/j2se/1.6.0/docs/api/

In Java werden diese Bibliotheken auch als APIs (Application Programming
Interfaces) bezeichnet.

Die APIs sind in Pakete (packages) organisiert, die zusammengehörige
Klassen oder selbst wieder Pakete umfassen.

Zum Beispiel beinhaltet die Java Plattform u. a. eine API java.awt. Diese
umfasst zahlreiche Klassen, mit denen man GUI-Komponenten (Graphical
User Interface) in einer Java-Anwendung erstellen kann.

Um eine vordefinierte Klasse benutzen zu können, muss sie zunächst mittels
„import java.(Klassenname)“ in das Javaprogramm importiert werden.
z. B.: import java.awt
Grundlagen der Java Technologie
67
Die Java Plattform
Katholische Universität Eichstätt-Ingolstadt
Lehrstuhl für ABWL und Wirtschaftsinformatik
Prof. Dr. Klaus D. Wilde
Wichtige Packages:
Package
Beinhaltet Klassen und Interfaces …
java.applet
… für die Erstellung von Applets.
java.awt
… für das Erzeugen von Grafical User Interfaces (GUI) sowie das Zeichnen von Bildern und Grafiken.
java.beans
… für die Unterstützung der JavaBeans-Komponentenarchitektur. (JavaBeans sind wieder
verwendbare Software-Komponenten die in Java geschrieben werden)
java.io
… zur Steuerung von Inputs und Outputs über Datenströme, Serialisierung oder über das DateiSystem.
… für grundlegende Programmieraufgaben. Kann als Mutterklasse angesehen werden. Beinhaltet u.
a. Klassen für Strings, Threads oder Exceptions.
… für arithmetische Berechnungen.
java.lang
java.math
java.security
java.sql
… zur Entwicklung eigener Sicherheitskonzepte. U. a. enthält das Paket Klassen, die bei der
Signierung von Daten, beim Umgang mit Zertifikaten oder bei der Bildung von Prüfsummen benötigt
werden.
… für den Zugriff auf Datenbanken mittels SQL-Befehlen.
java.text
… zur Formatierung von Text, Zahlen oder auch von Zeit- und Datumsangaben.
java.util
… für den Einsatz von unterschiedlichsten Utilities sowie von Collections, die zum Speicheren und
Suchen verschiedenster Objekte eingesetzt werden können.
javax.swing
… zur Entwicklung von fortgeschrittenen GUIs.
Katholische Universität Eichstätt-Ingolstadt
Lehrstuhl für ABWL und Wirtschaftsinformatik
Prof. Dr. Klaus D. Wilde
Grundlagen der Java Technologie
Die Java Plattform
Dokumentation:
http://java.sun.com/javase/6/docs/api/
68
1
Grundlagen der Systementwicklung
2
Objektorientierte Softwareentwicklung
3
Grundlagen der Java-Technologie
3.1 Schlüsselkonzepte von Java
3.2 Die Java Plattform
Übersicht
3.3 Das erste Java Programm
3.4 Aufgaben
4
Datentypen und Variablen in Java
5
Ausdrücke und Anweisungen in Java
6
Objektorientierte Programmierung
7
Übungsaufgaben
Grundlagen der Java Technologie
70
Das erste Java-Programm
„Klassische“ Vorgehensweise:

Programm in einem einfachen Texteditor erstellen.

Als Dateiname.java abspeichern

Um das Programm zu übersetzen, gibt man in der Windows-Kommandozeile
folgenden Befehl ein:
Katholische Universität Eichstätt-Ingolstadt
Lehrstuhl für ABWL und Wirtschaftsinformatik
Prof. Dr. Klaus D. Wilde
javac Dateiname.java

Nach erfolgreicher Übersetzung des Quellcodes liegt die Datei
Dateiname.class vor, die den Bytecode enthält.

Zur Ausführung des Bytecodes wird die JVM wie folgt in der Kommandozeile
aufgerufen:
java Dateiname
Wichtig: Programmierumgebungen wie Eclipse nehmen uns die Schritte 3 - 5 ab!
Grundlagen der Java Technologie
Das erste Java-Programm
Katholische Universität Eichstätt-Ingolstadt
Lehrstuhl für ABWL und Wirtschaftsinformatik
Prof. Dr. Klaus D. Wilde
Grundlegende Bestandteile von Java Programmen:

Objekte

Klassen

Methoden

Variablen
71
Grundlagen der Java Technologie
72
Das erste Java-Programm
Umsetzung in Java:
public class Klassenname
{
... Hier kommt die Implementierung (Rumpf), wie z. B. Variablenund Methodendeklarationen!
Katholische Universität Eichstätt-Ingolstadt
Lehrstuhl für ABWL und Wirtschaftsinformatik
Prof. Dr. Klaus D. Wilde
Variablentyp Variablenname;
Ergebnistyp Methodenname (Parameterliste) {
Methodenrumpf
}
}

Modifikator: public (oder private oder protected)

Schlüsselwort class

Frei wählbarer Name (Konvention und Einschränkungen beachten!)

Rumpf eingeschlossen in geschwungene Klammern.
Katholische Universität Eichstätt-Ingolstadt
Lehrstuhl für ABWL und Wirtschaftsinformatik
Prof. Dr. Klaus D. Wilde
Grundlagen der Java Technologie
Das erste Java-Programm
HalloWelt.java – Anwendung:
73
Grundlagen der Java Technologie
74
Das erste Java-Programm
HalloWelt.java – Anwendung:
Katholische Universität Eichstätt-Ingolstadt
Lehrstuhl für ABWL und Wirtschaftsinformatik
Prof. Dr. Klaus D. Wilde
Die Klasse HalloWelt ist eine Applikationsklasse, denn sie hat eine main-Methode,
die als „public static void“ deklariert ist:

„public“ bedeutet, dass diese Methode von außen sichtbar ist

„static“ bedeutet, dass es eine Klassenmethode ist

„void“ bedeutet, dass sie keinen Rückgabewert hat

„main“ wird automatisch aufgerufen, wenn die Klasse angesprochen wird.

Der Aufruf von „main“ – also der Klassenaufruf ruft die Methode
„System.out.println ()“ auf, die am Bildschirm den Text „Hallo Deutschland“
ausgibt.
1
Grundlagen der Systementwicklung
2
Objektorientierte Softwareentwicklung
3
Grundlagen der Java-Technologie
3.1 Schlüsselkonzepte von Java
3.2 Die Java Plattform
Übersicht
3.3 Das erste Java Programm
3.4 Aufgaben
4
Datentypen und Variablen in Java
5
Ausdrücke und Anweisungen in Java
6
Objektorientierte Programmierung
7
Übungsaufgaben
Grundlagen der Java Technologie
76
Katholische Universität Eichstätt-Ingolstadt
Lehrstuhl für ABWL und Wirtschaftsinformatik
Prof. Dr. Klaus D. Wilde
Aufgaben
1.
Legen Sie in Eclipse ein neues Projekt mit dem Namen Java09 an. Schreiben
Sie darin eine neue Klasse „Einfuehrung.java“. Die Klasse soll den Namen der
Vorlesung „Programmierung mit Java im SS 09“ ausgeben.
2.
Ändern Sie das Programm, damit die Ausgabe zweizeilig wird.
3.
Eine Beschreibung aller Java Klassen befindet sich auf der Hompage von
SUN (http://java.sun.com/j2se/1.6.0/docs/api/).
4.
Um die Zeichenkette „Hallo Deutschland“ auf der Kommandozeile
auszugeben, wird die Methode System.out.println („Hallo
Deutschland“) benutzt.
5.
Finden Sie mit Hilfe der Klassenbibliothek schrittweise heraus, was sich hinter
den Anweisungen verbirgt.
Grundlagen der Java Technologie
77
Aufgaben
Katholische Universität Eichstätt-Ingolstadt
Lehrstuhl für ABWL und Wirtschaftsinformatik
Prof. Dr. Klaus D. Wilde
Hinweise zu Aufgabe 3:

„System“ ist eine Klasse im Paket java.lang

„out“ ist der Name einer Klassenvariablen in der Klasse System. Die
Referenz „out“ zeigt auf ein Objekt der Klasse „PrintStream“. Die Klasse
„PrintStream“ befindet sich im Paket java.io. Dieses Objekt der Klasse
„PrintStream“ besitzt die Fähigkeit, in die Standardausgabe zu schreiben,
die in der Regel auf den Bildschirm zeigt

„println ()“ ist eine Methode der Klasse „PrintStream“.

Welche weiteren Methoden gibt es in der Klasse PrintStream – außer der
Methode „println ()“?
1
Grundlagen der Systementwicklung
2
Objektorientierte Softwareentwicklung
3
Grundlagen der Java-Technologie
4
Datentypen und Variablen in Java
4.1 Lexikalische Elemente eines Java-Programms
Übersicht
4.2 Variablen
4.3 Konstanten
4.4 Einfache Datentypen
4.5 Referenztypen
4.6 Typenkonvertierungen
5
Ausdrücke und Anweisungen in Java
6
Objektorientierte Programmierung
7
Übungsaufgaben
1
Grundlagen der Systementwicklung
2
Objektorientierte Softwareentwicklung
3
Grundlagen der Java-Technologie
4
Datentypen und Variablen in Java
4.1 Lexikalische Elemente eines Java-Programms
Übersicht
4.2 Variablen
4.3 Konstanten
4.4 Einfache Datentypen
4.5 Referenztypen
4.6 Typenkonvertierungen
5
Ausdrücke und Anweisungen in Java
6
Objektorientierte Programmierung
7
Übungsaufgaben
Datentypen
Datentypen und Variablen
in Java
und Variablen in Java
Lexikalische Elemente eines Java-Programms
80
Katholische Universität Eichstätt-Ingolstadt
Lehrstuhl für ABWL und Wirtschaftsinformatik
Prof. Dr. Klaus D. Wilde
Kommentare:

Kommentare im Quellcode sind frei formulierbare Texte, die dem Leser
wertvolle Hinweise zu dem Programm geben sollten.

Sie können nur gültige Unicode-Zeichen enthalten und werden vom Compiler
ignoriert.

Unicode ist ein standardisierter Zeichensatz, mit dem die Schriftzeichen aller
gängigen Sprachen dargestellt werden können.

Der Unicode ist mit den ersten 128 Zeichen des ASCII-Zeichensatzes
kompatibel.
Datentypen
Datentypen und Variablen
in Java
und Variablen in Java
Lexikalische Elemente eines Java-Programms
81
Kommentare:

Einzeilige Kommentare beginnen mit // und enden am Ende der aktuellen Zeile.
int i;
Katholische Universität Eichstätt-Ingolstadt
Lehrstuhl für ABWL und Wirtschaftsinformatik
Prof. Dr. Klaus D. Wilde

// Zählt die betrachteten Artikel
Mehrzeilige Kommentare beginnen mit /* und enden mit */. Sie können sich über
mehrere Zeilen erstrecken.
/* Dies hier ist
ein mehrzeiliger
Kommentar */

Dokumentationskommentare beginnen mit /**, enden mit */ und können sich ebenfalls
über mehrere Zeilen erstrecken.
Sie werden vom SDK-Werkzeug javadoc zur automatischen Generierung von
Programmdokumentationen (HTML-Dokumente) verwendet.
Datentypen
Datentypen und Variablen
in Java
und Variablen in Java
Lexikalische Elemente eines Java-Programms
Katholische Universität Eichstätt-Ingolstadt
Lehrstuhl für ABWL und Wirtschaftsinformatik
Prof. Dr. Klaus D. Wilde
Bezeichner:

Bezeichner dienen als Namen für Klassen, Variablen, Methoden etc.

Ein Bezeichner kann in Java aus beliebig vielen Unicode-spezifischen
Buchstaben und Zahlen bestehen (zu den Buchstaben zählen auch
Währungssymbole wie „$“ sowie „_“.).

Er muss mit einem Buchstaben beginnen.

Ein Bezeichner darf nicht mit den Schlüsselwörtern der Sprache und den
Literalen true, false und null übereinstimmen.

Java ist case-sensitive, d. h. es wird zwischen Groß- und Kleinschreibung
unterschieden.
82
Datentypen und Variablen in Java
Lexikalische Elemente eines Java-Programms
Katholische Universität Eichstätt-Ingolstadt
Lehrstuhl für ABWL und Wirtschaftsinformatik
Prof. Dr. Klaus D. Wilde
Tabelle der Schlüsselwörter:
D. Abts: Grundkurs Java, 4. Aufl., Wiesbaden, S. 14.
83
Datentypen und Variablen in Java
84
Lexikalische Elemente eines Java-Programms
Katholische Universität Eichstätt-Ingolstadt
Lehrstuhl für ABWL und Wirtschaftsinformatik
Prof. Dr. Klaus D. Wilde
Java Styleguide:
Bezeichner
„Regel“
Beispiele
Variablen
Variablennamen beginnen mit einem Kleinbuchstaben. Besteht
der Name aus mehreren Worten wird ab dem zweiten Wort
jeweils der erste Buchstabe eines Worts groß geschrieben.
dritteWurzel
Konstanten
Namen von Konstanten bestehen aus Großbuchstaben. Einzelne
Wörter werden durch „_“ getrennt.
MAX_WERT
Methoden
Für Methodennamen gelten dieselben Konventionen wie für
Variablennamen. Bestehen sie aus mehreren Wörtern ist das
erste oft ein Verb.
berechneWurzel ()
hatMehrElemente ()
Klassen/Interfaces
Klassen- und Interfacenamen beginnen stets mit einem
Großbuchstaben. Besteht er aus mehreren Wörtern beginnen alle
Folgewörter mit einem Großbuchstaben.
HalloWelt
Pakete
Paketnamen bestehen ausschließlich aus Kleinbuchstaben.
Mehrteilige Paketnamen werden durch Punkte separiert.
javax.swing.event
Datentypen und Variablen in Java
85
Lexikalische Elemente eines Java-Programms
Aufgaben:
Katholische Universität Eichstätt-Ingolstadt
Lehrstuhl für ABWL und Wirtschaftsinformatik
Prof. Dr. Klaus D. Wilde


Welche der folgenden Bezeichner sind ungültig?
Servus_Bayern
$Mo$in
64u
#wert
Mülleimer
berechne?Wert
instanceof
_xyz
Welche der folgenden Zeilen könnte einen Compiler–Fehler verursachen?
/*Kommentar;*/
/** Kommentar */
/ Kommentar;
// Kommentar
\\ Kommentar
*/ Kommentar /*
Datentypen und Variablen in Java
86
Lexikalische Elemente eines Java-Programms
Aufgaben:
Gegeben ist folgendes Java-Programm:
public class Strukturuebung { public static
Katholische Universität Eichstätt-Ingolstadt
Lehrstuhl für ABWL und Wirtschaftsinformatik
Prof. Dr. Klaus D. Wilde
main(String[] args) {System.out.println ("Wo
liegt der Fehler?")}

Dieses Programm enthält mehrere Fehler! Versuchen Sie diese zunächst
anhand des vorliegenden Textes zu finden.

Führen Sie das Programm in Eclipse aus und versuchen Sie die erzeugten
Fehlermeldungen zu interpretieren.
(Eine Spezifikation von Fehlermeldungen finden Sie auf der Internetseite zur
Vorlesung)
1
Grundlagen der Systementwicklung
2
Objektorientierte Softwareentwicklung
3
Grundlagen der Java-Technologie
4
Datentypen und Variablen in Java
4.1 Lexikalische Elemente eines Java-Programms
Übersicht
4.2 Variablen
4.3 Konstanten
4.4 Einfache Datentypen
4.5 Referenztypen
4.6 Typenkonvertierungen
5
Ausdrücke und Anweisungen in Java
6
Objektorientierte Programmierung
7
Übungsaufgaben
Datentypen und Variablen in Java
88
Variablen
Grundeigenschaften:

Variablen dienen dazu Daten im Hauptspeicher eines Programms abzulegen
und ggf. zu lesen oder zu verändern.

In Java existieren drei Variablentypen:
Katholische Universität Eichstätt-Ingolstadt
Lehrstuhl für ABWL und Wirtschaftsinformatik
Prof. Dr. Klaus D. Wilde
 Instanzvariablen, die im Rahmen einer Klassendefinition definiert und zusammen
mit der Instanz (Objekt) angelegt werden.
 Klassenvariablen, die ebenfalls im Rahmen einer Klassendefinition definiert
werden, aber unabhängig von einer konkreten Instanz (Objekt) existieren.
 Lokale Variablen, die innerhalb einer Methode oder eines Blocks definiert werden
und nur dort existieren.
Datentypen und Variablen in Java
89
Variablen
Variablendeklaration:

Die Deklaration einer Variablen erfolgt in der Form
Typname Variablenname [= Wert];
Katholische Universität Eichstätt-Ingolstadt
Lehrstuhl für ABWL und Wirtschaftsinformatik
Prof. Dr. Klaus D. Wilde

Hierdurch wird Speicherplatz eingerichtet. Der Variablen kann gleich durch
eine explizite Initialisierung ein Wert zugewiesen werden:
int nummer = 12;

Mehrere Variablen des gleichen Typs können in einer Liste deklariert werden:
int länge, breite, höhe = 27;
Katholische Universität Eichstätt-Ingolstadt
Lehrstuhl für ABWL und Wirtschaftsinformatik
Prof. Dr. Klaus D. Wilde
Datentypen und Variablen in Java
Variablen
Variablendeklaration:
90
1
Grundlagen der Systementwicklung
2
Objektorientierte Softwareentwicklung
3
Grundlagen der Java-Technologie
4
Datentypen und Variablen in Java
4.1 Lexikalische Elemente eines Java-Programms
Übersicht
4.2 Variablen
4.3 Konstanten
4.4 Einfache Datentypen
4.5 Referenztypen
4.6 Typenkonvertierungen
5
Ausdrücke und Anweisungen in Java
6
Objektorientierte Programmierung
7
Übungsaufgaben
Datentypen
Datentypen und Variablen
in Java
und Variablen in Java
Konstanten
Katholische Universität Eichstätt-Ingolstadt
Lehrstuhl für ABWL und Wirtschaftsinformatik
Prof. Dr. Klaus D. Wilde
Konstantendeklaration:

Durch das Schlüsselwort final kann jede Variable in eine Konstante
umgewandelt werden.

Der Wert einer Konstanten kann nach der Initialisierung nicht mehr
abgeändert werden.
final Typname Variablenname = Wert;

Beispiel:
final int nummer = 12;
92
1
Grundlagen der Systementwicklung
2
Objektorientierte Softwareentwicklung
3
Grundlagen der Java-Technologie
4
Datentypen und Variablen in Java
4.1 Lexikalische Elemente eines Java-Programms
Übersicht
4.2 Variablen
4.3 Konstanten
4.4 Einfache Datentypen
4.5 Referenztypen
4.6 Typenkonvertierungen
5
Ausdrücke und Anweisungen in Java
6
Objektorientierte Programmierung
7
Übungsaufgaben
Datentypen und Variablen in Java
Einfache Datentypen
Katholische Universität Eichstätt-Ingolstadt
Lehrstuhl für ABWL und Wirtschaftsinformatik
Prof. Dr. Klaus D. Wilde
Datentypen:
Abbildung entnommen aus: J. Goll, C. Weiß, F. Müller: Java als erste Programmiersprache, 3. Aufl., Stuttgart, S. 97.
94
Datentypen und Variablen in Java
95
Einfache Datentypen
Katholische Universität Eichstätt-Ingolstadt
Lehrstuhl für ABWL und Wirtschaftsinformatik
Prof. Dr. Klaus D. Wilde
Übersicht:
Bezeichner
„Regel“
Beispiele
Standardwert
boolean
true oder false
true und false
false
char
16 Bit-Unicode Zeichen
alle Unicode-Zeichen (0 bis 65535)
\u0000
byte
8 Bit-Ganzzahl mit
Vorzeichen
-27 bis +27 - 1
(-128 … 127)
0
short
16 Bit-Ganzzahl mit
Vorzeichen
-215 bis +215 – 1
(-32.768 … 32.767)
0
int
32 Bit-Ganzzahl mit
Vorzeichen
-231 bis +231 – 1
(–2.147.483.648 … 2.147.483.647)
0
long
64 Bit-Ganzzahl mit
Vorzeichen
-263 bis +263 – 1
(–9223372036854775808 … 9223372036854775807)
0
float
32 Bit-Fließkommazahl
mit Vorzeichen
-3,4 * 1038 bis +3,4 * 1038
(1,40239846E-45F … 3,40282347E+38F)
0.0
double
64 Bit-Fließkommazahl
mit Vorzeichen
-1,7 * 10308 bis +1,7 * 10308
(4,94065645841246544E-324 …
1,79769131486231570E+308
0.0
Datentypen und Variablen in Java
Einfache Datentypen
Katholische Universität Eichstätt-Ingolstadt
Lehrstuhl für ABWL und Wirtschaftsinformatik
Prof. Dr. Klaus D. Wilde
Der logische Typ (Wahrheitswert):

Der logische Typ boolean kennt zwei verschiedene Werte: true und false.

Dieser Datentyp wird zwingend dort verwendet, wo ein logischer Operand
erforderlich ist (z. B. bei Bedingungen in Fallunterscheidungen oder
Schleifen).

Beispiel:
boolean
a  true
boolean b  false
a  b  false
a  b  true
96
Datentypen und Variablen in Java
Einfache Datentypen
Katholische Universität Eichstätt-Ingolstadt
Lehrstuhl für ABWL und Wirtschaftsinformatik
Prof. Dr. Klaus D. Wilde
Der Zeichentyp:

Der Zeichentyp char dient dazu, einzelnen Zeichen des UnicodeZeichensatzes aufzunehmen.

Die Literale werden dabei in einfachen Anführungszeichen angegeben (z. B.
‘a‘).
97
Datentypen und Variablen in Java
Einfache Datentypen
Katholische Universität Eichstätt-Ingolstadt
Lehrstuhl für ABWL und Wirtschaftsinformatik
Prof. Dr. Klaus D. Wilde
Integrale Typen und Fließkommatypen:

Die ganzzahligen Typen byte, short, int, long können in Oktal- (Präfix 0),
Hexadezimal- (Präfix 0x) und in Dezimalform geschrieben werden.

Fließkommatypen float (einfache Genauigkeit) und double (doppelte
Genauigkeit) werden immer in Dezimalschreibe notiert.
float x = 2.2;

Typen sind vorzeichenbehaftet (positiv oder negativ).
98
1
Grundlagen der Systementwicklung
2
Objektorientierte Softwareentwicklung
3
Grundlagen der Java-Technologie
4
Datentypen und Variablen in Java
4.1 Lexikalische Elemente eines Java-Programms
Übersicht
4.2 Variablen
4.3 Konstanten
4.4 Einfache Datentypen
4.5 Referenztypen
4.6 Typenkonvertierungen
5
Ausdrücke und Anweisungen in Java
6
Objektorientierte Programmierung
7
Übungsaufgaben
Datentypen und Variablen in Java
Referenztypen
Katholische Universität Eichstätt-Ingolstadt
Lehrstuhl für ABWL und Wirtschaftsinformatik
Prof. Dr. Klaus D. Wilde
Datentypen:
Abbildung entnommen aus: J. Goll, C. Weiß, F. Müller: Java als erste Programmiersprache, 3. Aufl., Stuttgart, S. 97.
100
Datentypen
Datentypen und Variablen
in Java
und Variablen in Java
101
Referenztypen
Katholische Universität Eichstätt-Ingolstadt
Lehrstuhl für ABWL und Wirtschaftsinformatik
Prof. Dr. Klaus D. Wilde
Verständnis:

Referenztypen sind neben den einfachen Datentypen die zweite wichtige
Klasse von Datentypen.

Sie umfassen Objekte, Strings und Arrays.

Referenztypen können prinzipiell genauso benutzt werden wie primitive
Typen.

Wichtig: Da Referenzen lediglich einen Verweis darstellen, kopiert die
Zuweisung einer Referenz lediglich den Verweis auf das betreffende Objekt –
das Objekt selbst bleibt dagegen unkopiert.
Datentypen und Variablen in Java
102
Referenztypen
Katholische Universität Eichstätt-Ingolstadt
Lehrstuhl für ABWL und Wirtschaftsinformatik
Prof. Dr. Klaus D. Wilde
Arrays als Objekte:

Ein Array ist ein Objekt, das aus Komponenten (Elementen)
zusammengesetzt ist, wobei jedes Element vom selben Datentyp sein muss.

Man kann in Java Arrays aus Elementen eines einfachen Datentyps oder aus
Elementen eines Referenztyps anlegen.

Ein Element eines Arrays kann auch selbst wieder ein Array sein. Dann
entsteht ein mehrdimensionales Array.
Datentypen und Variablen in Java
103
Referenztypen
Anlegen von Arrays:

Arrays sind in Java semidynamisch, d. h. ihre Größe kann zur Laufzeit
festgelegt, später aber nicht mehr verändert werden.

Arrays werden in drei Schritten angelegt:
Katholische Universität Eichstätt-Ingolstadt
Lehrstuhl für ABWL und Wirtschaftsinformatik
Prof. Dr. Klaus D. Wilde
1. Definition einer Referenzvariablen, die auf das Array-Objekt zeigen soll.
2. Erzeugen des Arrays, d. h. eines Array-Objekts, das aus einer definierten Zahl an
Komponenten besteht
3. Belegen der Array-Elemente mit Werten, d. h. Initialisierung des Arrays.
Datentypen und Variablen in Java
104
Referenztypen
Anlegen von Arrays:

Die Deklaration eines Arrays entspricht syntaktisch den einer einfachen Variablen, mit
dem Unterschied, dass an den Typnamen eckige Klammern angehängt werden:
Typname [] <<Variablenname>>;
Katholische Universität Eichstätt-Ingolstadt
Lehrstuhl für ABWL und Wirtschaftsinformatik
Prof. Dr. Klaus D. Wilde

Beispiel:
int [] a;
double [] b;
bolean [] c;

Bei der Deklaration wird nicht festgelegt, wie viele Elemente das Array umfassen soll.
Das erfolgt erst bei der Erzeugung des Array-Objekts.

Zum Erzeugen gibt es zwei Möglichkeiten:

Erzeugungen über new-Operator und anschließende Initialisierung der Werte.

Erzeugung des Arrays über Initialisierungsliste und gleichzeitige Initialisierung.
Datentypen und Variablen in Java
105
Referenztypen
Anlegen von Arrays:
a = new int[5];
b = new double[10];
c = new boolean[15];

Ist bereits zum Deklarationszeitpunkt klar, wie groß das Array sein soll, können die beiden Schritte
zusammengefasst werden.
Katholische Universität Eichstätt-Ingolstadt
Lehrstuhl für ABWL und Wirtschaftsinformatik
Prof. Dr. Klaus D. Wilde
int[] a = new int[5];
double[] b = new double[10];
boolean[] c = new boolean[15];

Alternativ zum new-Operator kann ein Array auch literal erzeugt (und gleichzeitig initialisiert) werden.
Die Größe des Arrays ergibt sich aus der Anzahl der zugewiesenen Elemente.
int[] x = {1,2,3,4,5}
boolean[] y = {true, false}

Anders als bei Verwendung des new-Operators muss im zweiten Fall die Initialisierung unmittelbar
erfolgen.
Datentypen und Variablen in Java
106
Referenztypen
Katholische Universität Eichstätt-Ingolstadt
Lehrstuhl für ABWL und Wirtschaftsinformatik
Prof. Dr. Klaus D. Wilde
Zugriff auf Array-Elemente:

Bei der Initialisierung eines Array werden die einzelnen Elemente von 0 bis
n-1 durchnummeriert.

Der Zugriff auf die einzelnen Elemente erfolgt über diesen Index.

Der Array-Index muss vom Typ int sein.

Jedes Array hat eine Instanzvariable length, die die Anzahl seiner Elemente
angibt.
Katholische Universität Eichstätt-Ingolstadt
Lehrstuhl für ABWL und Wirtschaftsinformatik
Prof. Dr. Klaus D. Wilde
Datentypen und Variablen in Java
Referenztypen
Beispiel:
107
Katholische Universität Eichstätt-Ingolstadt
Lehrstuhl für ABWL und Wirtschaftsinformatik
Prof. Dr. Klaus D. Wilde
Datentypen und Variablen in Java
Referenztypen
Mehrdimensionale Arrays werden als Arrays von Arrays angelegt.
108
Datentypen und Variablen in Java
Referenztypen
Aufgaben:

Finden Sie die Fehler in folgendem Programm!
public class ArrFehler {
public static void main (String [] args){
Katholische Universität Eichstätt-Ingolstadt
Lehrstuhl für ABWL und Wirtschaftsinformatik
Prof. Dr. Klaus D. Wilde
int [] [] a = new int [1][2];
a [0][0]= 3;
a [0][1]= 5;
a [0][2]=1;
a [0][3]= 322;
a [1][0]= 5;
a [1][1]=19;
a [1][2]=11;
System.out.println (a[0][0]);
}}
109
Datentypen und Variablen in Java
110
Referenztypen
Katholische Universität Eichstätt-Ingolstadt
Lehrstuhl für ABWL und Wirtschaftsinformatik
Prof. Dr. Klaus D. Wilde
Aufgaben:

In Java müssen Felder deklariert und erzeugt werden. Was versteht man
darunter?

Wie können in Java Felder erzeugt werden?

Wie greift man auf die einzelnen Elemente eines Feldes zu, und welche
Indizes sind dabei erlaubt? Welchen Index hat insbesondere das letzte
Element eines Feldes? Was geschieht bei einem unzulässigen Index?

Schreiben Sie eine Klasse Arr mit der main-Methode. Deklarieren Sie darin
ein Array mit zwei Felder und speichern Sie beliebige Werte darin! Lassen Sie
sich das zweite Element mit Hilfe „System.out.print ()“ am Bildschirm
anzeigen.

Schreiben Sie eine Klasse ArrLaenge mit der main- Methode. Deklarieren Sie
ein Array mit beliebig vielen Feldern und lassen sich die Länge des Arrays mit
Hilfe „System.out.print ()“ am Bildschirm anzeigen.
1
Grundlagen der Systementwicklung
2
Objektorientierte Softwareentwicklung
3
Grundlagen der Java-Technologie
4
Datentypen und Variablen in Java
4.1 Lexikalische Elemente eines Java-Programms
Übersicht
4.2 Variablen
4.3 Konstanten
4.4 Einfache Datentypen
4.5 Referenztypen
4.6 Typenkonvertierungen
5
Ausdrücke und Anweisungen in Java
6
Objektorientierte Programmierung
7
Übungsaufgaben
Datentypen und Variablen in Java
112
Typkonvertierungen
Katholische Universität Eichstätt-Ingolstadt
Lehrstuhl für ABWL und Wirtschaftsinformatik
Prof. Dr. Klaus D. Wilde
Übersicht:

Es gibt in Java diverse Konvertierungen zwischen unterschiedlichen Typen.

Diese werden einerseits vom Compiler automatisch vorgenommen (implizite
Konvertierung), andererseits kann sie durch den Programmierer selbst
anhand des Type-Cast-Operators durchgeführt werden (explizite
Konvertierung).

Java unterscheidet prinzipiell zwischen erweiternden und einschränkenden
Konvertierungen.
Datentypen und Variablen in Java
113
Typkonvertierungen
Übersicht:
byte
short
int
long
float
double
Katholische Universität Eichstätt-Ingolstadt
Lehrstuhl für ABWL und Wirtschaftsinformatik
Prof. Dr. Klaus D. Wilde
char

Als erweiterte Konvertierung eines Referenztyps T wird die Umwandlung
eines Objekts vom Typ T in eine seiner Vaterklassen angesehen
(Konvertierung in Pfeilrichtung).

Als einschränkende Konvertierung eines Referenztyps T wird die
Umwandlung eines Objekts vom Typ T in eine der aus T abgeleiteten Klassen
angesehen (Konvertierung entgegen der Pfeilrichtung).

Vorsicht: Konvertierungen sind nicht immer gefahrlos möglich!
Krüger, G.: Handbuch der Java-Programmierung, 4. Aufl., München, S. 108.
Datentypen und Variablen in Java
Typkonvertierungen
Implizite Konvertierung:

Katholische Universität Eichstätt-Ingolstadt
Lehrstuhl für ABWL und Wirtschaftsinformatik
Prof. Dr. Klaus D. Wilde

Der Compiler übernimmt eine erweiternde Konvertierung u. a. in folgenden Fällen:

Bei einer Zuweisung, wenn der Typ der Variablen und des zugewiesenen Ausdrucks nicht
identisch ist.

Bei der Auswertung eines arithmetischen Ausdrucks, wenn Operanden unterschiedlich
typologisiert sind.
Beispiel:
114
Datentypen und Variablen in Java
115
Typkonvertierungen
Katholische Universität Eichstätt-Ingolstadt
Lehrstuhl für ABWL und Wirtschaftsinformatik
Prof. Dr. Klaus D. Wilde
Explizite Konvertierung:

Mit dem Cast-Operator wird eine explizite Typumwandlung vorgenommen.

Der Ausdruck (type) a wandelt den Ausdruck a in einen Ausdruck vom Typ
type um.

Der Cast-Operator darf nur auf der rechten Seite einer Zuweisung stehen.

Um einer int-Variablen b einen double-Wert a zuzuweisen, ist folgende
Konvertierung notwendig:
b = (int) a;

Hierbei wird der Nachkommateil ohne Rundung abgeschnitten!
Katholische Universität Eichstätt-Ingolstadt
Lehrstuhl für ABWL und Wirtschaftsinformatik
Prof. Dr. Klaus D. Wilde
Datentypen und Variablen in Java
Typkonvertierungen
Beispiel:
116
Datentypen
Datentypen und Variablen
in Java
und Variablen in Java
117
Typkonvertierungen
Katholische Universität Eichstätt-Ingolstadt
Lehrstuhl für ABWL und Wirtschaftsinformatik
Prof. Dr. Klaus D. Wilde
Fallbeispiel – Ariane 5:

Am 4. Juni 1996 stürzte die Ariane 5 (Europäische Trägerrakete) auf ihrem Jungfernflug
ab!

Grund dafür war ein Konvertierungsfehler!

Er trat bei dem Versuch auf, eine floating Zahl in einen Integer Wert zu konvertieren.
Die Gleitpunktzahl hatte einen größeren Wert, als man mit der Integerzahl hätte
darstellen können (Kostenpunkt: einige Mio. DM ...).
Datentypen und Variablen in Java
Typkonvertierungen
Aufgaben:

Warum führt der folgende Code zu einem Compiler-Fehler?
Katholische Universität Eichstätt-Ingolstadt
Lehrstuhl für ABWL und Wirtschaftsinformatik
Prof. Dr. Klaus D. Wilde
int x = 0;
long y = 1000;
x = y;

Wie könnte das Programm geändert werden, um korrekt
abzulaufen?
118
Datentypen und Variablen in Java
119
Typkonvertierungen
Katholische Universität Eichstätt-Ingolstadt
Lehrstuhl für ABWL und Wirtschaftsinformatik
Prof. Dr. Klaus D. Wilde
Aufgaben:

Schreiben Sie eine Klasse VarTest mit der main-Methode. Deklarieren Sie 5
beliebige Variablen mit unterschiedlichen Datentypen. Weisen Sie diesen
Variablen Werte zu und geben Sie diese Werte aus. Kompilieren und testen
Sie das Programm.

Schreiben Sie eine Klasse Abs mit der main-Methode. Deklarieren Sie eine
Gleitpunktzahl, die den Wert 3,14 enthält. Konvertieren Sie den Wert
anschließend derart, dass der ganzzahlige Wert 3 entsteht und geben Sie das
Ergebnis auf den Bildschirm aus. Kompilieren und testen Sie das Programm.
Datentypen und Variablen in Java
Typkonvertierungen
Aufgaben:
Katholische Universität Eichstätt-Ingolstadt
Lehrstuhl für ABWL und Wirtschaftsinformatik
Prof. Dr. Klaus D. Wilde

Welche Art der Konvertierung liegt in folgendem Beispiel vor?
120
Modulüberblick
Übersicht
1
Grundlagen der Systementwicklung
2
Objektorientierte Softwareentwicklung
3
Grundlagen der Java-Technologie
4
Datentypen und Variablen in Java
5
Ausdrücke und Anweisungen in Java
5.1 Eigenschaften von Ausdrücken
5.2 „Klassische“ Operationen
5.3 Sonstige Operatoren und Regeln
5.4 Verzweigungen
5.5 Schleifen
5.6 Sprunganweisungen
6
Objektorientierte Programmierung
7
Übungsaufgaben
Modulüberblick
Übersicht
1
Grundlagen der Systementwicklung
2
Objektorientierte Softwareentwicklung
3
Grundlagen der Java-Technologie
4
Datentypen und Variablen in Java
5
Ausdrücke und Anweisungen in Java
5.1 Eigenschaften von Ausdrücken
5.2 „Klassische“ Operationen
5.3 Sonstige Operatoren und Regeln
5.4 Verzweigungen
5.5 Schleifen
5.6 Sprunganweisungen
6
Objektorientierte Programmierung
7
Übungsaufgaben
Ausdrücke und Anweisungen in Java
Eigenschaften von Ausdrücken
Definition:

Ein Ausdruck besteht immer aus mindestens einem Operator und einem
oder mehreren Operanden, auf die der Operator angewendet wird.

Nach den Typen der Operanden unterscheidet man
 numerische,
Katholische Universität Eichstätt-Ingolstadt
Lehrstuhl für ABWL und Wirtschaftsinformatik
Prof. Dr. Klaus D. Wilde
 relationale,
 logische,
 bitweise,
 Zuweisungs- und
 sonstige Operatoren.

Jeder Ausdruck hat einen Rückgabewert.

Der Typ des Rückgabewerts bestimmt sich aus den Typen der Operanden
und der Art des verwendeten Operators.
123
Ausdrücke und Anweisungen in Java
124
Eigenschaften von Ausdrücken
Katholische Universität Eichstätt-Ingolstadt
Lehrstuhl für ABWL und Wirtschaftsinformatik
Prof. Dr. Klaus D. Wilde
Stelligkeit eines Operators:

Operatoren, die lediglich ein Argument erwarten, nennt man einstellig (unär),
solche mit zwei Argumenten zweistellig (binär).

Es existiert ein einziger dreistelliger Operator (ternär).

Bsp.:
 unäres Minus (einstellig)
 logisches Nicht (einstellig)
 Addition, Subtraktion (zweistellig)
 Fragezeichenoperator (dreistellig)
Ausdrücke und Anweisungen in Java
Eigenschaften von Ausdrücken
Katholische Universität Eichstätt-Ingolstadt
Lehrstuhl für ABWL und Wirtschaftsinformatik
Prof. Dr. Klaus D. Wilde
Bindungs- und Assoziativitätsregeln:

Für die richtige Interpretation der Ausdrücke muss man die Bindungs- und
Assoziativitätsregeln der Operatoren kennen.

Bindungsregeln beschreiben die Reihenfolge, in der verschiedenen Operatoren
innerhalb eines Ausdrucks ausgewertet werden (z. B. „Punkt vor Strich“).

Assoziativität beschreibt die Auswertungsreihenfolge von Operatoren
derselben Bindungskraft (linksassoziativ vs. rechtsassoziativ).

Beispiel: Da mehrere Summationsoperatoren dieselbe Bindungskraft besitzen
und linksassoziativ sind, wird der Ausdruck a + b + c wie (a + b) + c
ausgewertet!

Durch Klammerung kann ggü. den Bindungsregeln bzw. der Assoziativität eine
andere Auswertungsreihenfolge erzwungen werden.
125
Ausdrücke und Anweisungen in Java
126
Eigenschaften von Ausdrücken
Katholische Universität Eichstätt-Ingolstadt
Lehrstuhl für ABWL und Wirtschaftsinformatik
Prof. Dr. Klaus D. Wilde
Nebeneffekte von Operatoren:

Neben ihrer eigentlichen Funktion, einen Rückgabewert zu produzieren,
haben einige Operatoren auch Nebeneffekte.

Als Nebeneffekte bezeichnet man das Verhalten eines Ausdrucks, auch ohne
explizite Zuweisung die Inhalte von Variablen zu verändern.

Beispiel:
a = i ++;

Meist sind diese Nebeneffekte erwünscht, wie etwa bei der Verwendung des
Inkrementoperators.

Bei komplexeren Programmen sollten sie aber selten verwendet werden, da
sie zu schwer verständlichen Programmen führen können.
Katholische Universität Eichstätt-Ingolstadt
Lehrstuhl für ABWL und Wirtschaftsinformatik
Prof. Dr. Klaus D. Wilde
Ausdrücke und Anweisungen in Java
Eigenschaften von Ausdrücken
Nebeneffekte von Operatoren:
127
Ausdrücke und Anweisungen in Java
128
Eigenschaften von Ausdrücken
Katholische Universität Eichstätt-Ingolstadt
Lehrstuhl für ABWL und Wirtschaftsinformatik
Prof. Dr. Klaus D. Wilde
Definite Assignment:

Definite Assignment meint, dass jede lokale Variable vor ihrer ersten
Verwendung explizit initialisiert werden muss.

Diese Lösung wird in Java direkt durch den Compiler sichergestellt.

Dazu wird vom Compiler im Quelltext eine Datenflussanalyse durchgeführt,
die jeden möglichen Ausführungspfad von der Deklaration einer Variablen bis
zu ihrer Verwendung ermittelt und sicherstellt, dass kein Weg existiert, der
eine Initialisierung auslassen würde.
Katholische Universität Eichstätt-Ingolstadt
Lehrstuhl für ABWL und Wirtschaftsinformatik
Prof. Dr. Klaus D. Wilde
Ausdrücke und Anweisungen in Java
Eigenschaften von Ausdrücken
Definite Assignment:
129
Modulüberblick
Übersicht
1
Grundlagen der Systementwicklung
2
Objektorientierte Softwareentwicklung
3
Grundlagen der Java-Technologie
4
Datentypen und Variablen in Java
5
Ausdrücke und Anweisungen in Java
5.1 Eigenschaften von Ausdrücken
5.2 „Klassische“ Operationen
5.3 Sonstige Operatoren und Regeln
5.4 Verzweigungen
5.5 Schleifen
5.6 Sprunganweisungen
6
Objektorientierte Programmierung
7
Übungsaufgaben
Ausdrücke
Ausdrücke und Anweisungen
in Java
und Anweisungen in Java
131
„Klassische“ Operatoren
Unäre Operatoren:
Operator
Bezeichnung
Anmerkung
Beispiel
+
Positiver Vorzeichenoperator
Der positive Vorzeichenoperator wird kaum verwendet,
+9
da er lediglich den Wert seines Operanden wiedergibt.
-
Negativer
Wandelt das Vorzeichen des Operanden ins Gegenteil.
-9
Der Rückgabewert ist der unveränderte Wert des
wert = a++
Katholische Universität Eichstätt-Ingolstadt
Lehrstuhl für ABWL und Wirtschaftsinformatik
Prof. Dr. Klaus D. Wilde
Vorzeichenoperator
++
Postfix-Inkrementoperator
Operanden. Als Nebeneffekt wird der Wert des
Operanden um 1 inkrementiert.
++
Präfix-Inkrementoperator
Der Rückgabewert ist der um 1 inkrementierte Wert des
wert = ++a
Operanden. Als Nebeneffekt wird der Wert des
Operanden um 1 inkrementiert.
--
Postfix-Dekrementoperator
Der Rückgabewert ist der unveränderte Wert des
wert = a--
Operanden. Als Nebeneffekt wird der Wert des
Operanden um 1 dekrementiert.
--
Präfix-Dekrementoperator
Der Rückgabewert ist der um 1 dekrementierte Wert des
Operanden. Als Nebeneffekt wird der Wert des
Operanden um 1 dekrementiert.
wert = --a
Ausdrücke und Anweisungen in Java
„Klassische“ Operatoren
Katholische Universität Eichstätt-Ingolstadt
Lehrstuhl für ABWL und Wirtschaftsinformatik
Prof. Dr. Klaus D. Wilde
Unäre Operatoren – Beispiele:
a = 1;
b = a++;
// Ergebnis: b = 1, Nebeneffekt: a = 2
c = 1;
d = ++c;
// Ergebnis: d = 2, Nebeneffekt: c = 2
a = 1;
b = a--;
// Ergebnis: b = 1, Nebeneffekt: a = 0
c = 1;
d = --c;
// Ergebnis: d = 0, Nebeneffekt: c = 0
132
Ausdrücke und Anweisungen in Java
133
„Klassische“ Operatoren
Katholische Universität Eichstätt-Ingolstadt
Lehrstuhl für ABWL und Wirtschaftsinformatik
Prof. Dr. Klaus D. Wilde
Exkurs: Debugger

Ein Debugger ist ein Werkzeug zum Auffinden, Diagnostizieren und Beheben
von Fehlern.

Er ermöglicht es u. a. eine Datenflussanalyse des zu untersuchenden
Programms in einzelnen Schritten oder zwischen definierten Haltepunkten
(Breakpoints) durchzuführen.
Katholische Universität Eichstätt-Ingolstadt
Lehrstuhl für ABWL und Wirtschaftsinformatik
Prof. Dr. Klaus D. Wilde
Ausdrücke und Anweisungen in Java
„Klassische“ Operatoren
Exkurs: Debugger
134
Ausdrücke und Anweisungen in Java
135
„Klassische“ Operatoren
Katholische Universität Eichstätt-Ingolstadt
Lehrstuhl für ABWL und Wirtschaftsinformatik
Prof. Dr. Klaus D. Wilde
(Zweistellige) Arithmetische Operatoren:
Operator
Bezeichnung
Anmerkung
Beispiel
+
Summe
…
a + b
-
Differenz
…
a - b
*
Produkt
…
a * b
/
Quotient
Bei Division von ganzen Zahlen wird Nachkommateil
a / b
abgeschnitten. Enthält der Ausdruck auch nur eine
Fließkommazahl wird das Ergebnis implizit konvergiert.
%
Restwert (Modulo- Rechnung)
Liefert bei ganzzahligen Operanden den ganzzahligen
Rest der Division. Kann im Gegensatz zu anderen
Sprachen auch bei Fließkommazahlen angewendet
werden (ungerader Rest).
a modulo b => a % b
a % b
Ausdrücke und Anweisungen in Java
„Klassische“ Operatoren
Katholische Universität Eichstätt-Ingolstadt
Lehrstuhl für ABWL und Wirtschaftsinformatik
Prof. Dr. Klaus D. Wilde
(Zweistellige) Relationale Operatoren:

Relationale Operatoren dienen dazu, Ausdrücke miteinander zu
vergleichen und in Abhängigkeit davon einen logischen Rückgabewert
(Boolean: true oder false) zu produzieren.

Besitzen die Operanden unterschiedliche, aber „verträgliche“
Datentypen, werden implizite Konvertierungen durchgeführt.

Bei den Vergleichsoperatoren <, <=, >=, > dürfen die Operanden nur
von einem numerischen Typ sein.

Im Fall von Gleichheit oder Ungleichheit können sie auch auf
Referenztypen angewendet werden.
136
Ausdrücke und Anweisungen in Java
137
„Klassische“ Operatoren
(Zweistellige) Relationale Operatoren:
Operator
Bezeichnung
Anmerkung
Beispiel
==
Gleich
Testen zweier numerischer oder logischer Operanden auf
1 + 2 == 3
Gleichheit. Bei Referenztypen kein Test auf inhaltliche
( true)
Gleichheit, sondern nur Prüfung, ob beide Referenzen auf
Katholische Universität Eichstätt-Ingolstadt
Lehrstuhl für ABWL und Wirtschaftsinformatik
Prof. Dr. Klaus D. Wilde
dasselbe Objekt verweisen.
!=
Ungleich
…
5 != 5
( false)
<
Kleiner
…
5 < 3
( false)
<=
Kleiner gleich
…
8 + 1 <= 9
( true)
>
Größer
…
5 > 3
( true)
>=
Größer gleich
…
6 >= 7
( false)
Ausdrücke und Anweisungen in Java
„Klassische“ Operatoren
Katholische Universität Eichstätt-Ingolstadt
Lehrstuhl für ABWL und Wirtschaftsinformatik
Prof. Dr. Klaus D. Wilde
(Zweistellige) Logische Operatoren:

Logische Operatoren dienen dazu, boolesche Werte miteinander zu
verknüpfen – dürfen nur auf Operanden vom Typ boolean angewendet
werden.

Im Gegensatz zu den relationalen Operatoren, die durch Vergleiche erst
Wahrheitswerte produzieren, werden logische Operatoren zur
Weiterverarbeitung von Wahrheitswerten verwendet.

Liefern als Ergebnis einen Rückgabewert vom Typ boolean.
138
Ausdrücke und Anweisungen in Java
139
„Klassische“ Operatoren
(Zweistellige) Relationale Operatoren:
Operator
Bezeichnung
Anmerkung
Beispiel
&
UND mit vollständiger
Ergibt true, wenn beide Operanden wahr sind. Beide Teilausdrücke
a & b
Auswertung
werden ausgewertet.
UND mit kurzer
Ergibt true, wenn beide Operanden wahr sind. Ist der erste (linke)
Auswertung
Ausdruck bereits falsch, wird false zurückgegeben und der zweite
Katholische Universität Eichstätt-Ingolstadt
Lehrstuhl für ABWL und Wirtschaftsinformatik
Prof. Dr. Klaus D. Wilde
&&
a && b
Ausdruck nicht mehr ausgewertet.
(1 < 0) && (2 < a++);
// a++ wird nie ausgeführt, da die Auswertung vorher
endet
|
||
ODER mit vollständiger
Ergibt true, wenn mindestens einer der beiden Operanden wahr ist.
Auswertung
Beide Teilausdrücke werden ausgewertet.
ODER mit kurzer
Ergibt true, wenn mindestens einer der beiden Operanden wahr ist.
Auswertung
Ist bereits der erste (linke) Ausdruck wahr, wird true
a | b
a || b
zurückgegeben und der zweite Ausdruck nicht mehr ausgewertet.
^
Exklusives ODER
Ergibt true, wenn beide Ausdrücke einen unterschiedlichen
Wahrheitswert haben.
a ^ b
Ausdrücke und Anweisungen in Java
140
„Klassische“ Operatoren
(Zweistellige) Relationale Operatoren:
Operator
Bezeichnung
Anmerkung
Beispiel
=
einfache Zuweisung
Dem linken Operanden wird der Wert des rechten Operanden
a = 3
zugewiesen.
Katholische Universität Eichstätt-Ingolstadt
Lehrstuhl für ABWL und Wirtschaftsinformatik
Prof. Dr. Klaus D. Wilde
+=
Additionszuweisung
a += b weist a den Wert a + b zu und liefert als
a += 1
Rückgabewert a + b.
(a = a +1)
oder (++a)
-=
*=
/=
%=
Subtraktionszuweisung
Multiplikationszuweisung
Divisionszuweisung
Restwertzuweisung
a -= b weist a den Wert a - b zu und liefert als Rückgabewert
b -= 2
a - b.
(b = b - 2)
a *= b weist a den Wert a * b zu und liefert als
c *= 3
Rückgabewert a * b.
(c = c * 3)
a /= b weist a den Wert a / b zu und liefert als Rückgabewert
d /= 4
a / b.
(d = d / 4)
a %= b weist a den Wert a % b zu und liefert als
e %= f
Rückgabewert a % b.
(e = e % f)
Ausdrücke und Anweisungen in Java
141
„Klassische“ Operatoren

Aufgaben:
Schreiben Sie ein Programm, das folgende Formel berechnet:
Katholische Universität Eichstätt-Ingolstadt
Lehrstuhl für ABWL und Wirtschaftsinformatik
Prof. Dr. Klaus D. Wilde
(a  b) mod c
d

Testen Sie es mit folgenden Werten:
a = 2, b = 2, c = 12, d = 2

Was ist das Ergebnis?
Ausdrücke und Anweisungen in Java
142
„Klassische“ Operatoren

Aufgaben:
Schreiben Sie ein Programm, das folgende Anweisungen enthält!
 Welche Werte haben die Variablen nach der Auswertung, wenn a den
Anfangswert 1 besitzt.
Katholische Universität Eichstätt-Ingolstadt
Lehrstuhl für ABWL und Wirtschaftsinformatik
Prof. Dr. Klaus D. Wilde
(Benuten Sie für die Berechnungen die Ergebnisse der vorherigen Schritte)
 Testen Sie die Ergebnisse, in dem Sie das Programm in Eclipse debuggen und
geeignete Breakpoints setzen.
Beschreibung
a)
b = --a
b)
b = a--
c)
b = ++ a
d)
a = b++
a
b
Was this manual useful for you? yes no
Thank you for your participation!

* Your assessment is very important for improving the work of artificial intelligence, which forms the content of this project

Download PDF

advertisement