20
BlueJ und Java: Grundkonzepte objektorientierten Programmierens Thomas Karp, C. Uhrhan 14.02.2011 - 16.02.2011 PL Speyer Gymnasium Hermeskeil Schwerpunkte Musik und Informatik Teil 1: Einführung in die Objektorientierung (aus der Java-Perspektive) Dr. M. Schillo, Christoph Uhrhan M. Schillo, C. Uhrhan Gymnasium Hermeskeil www.gymherm.de Programm 1.Tag: OO-Modellierung mit UML Begriffe - Bauplan, Instanz, Eigenschaft, Fähigkeit - Klasse, Objekt,Variable, Methode Diagrammformen für den Unterricht - Anwendungsfalldiagramm, Liste der natürlichen Objekte, Klassendiagramm, Sequenzdiagramm, Aktivitätsdiagramm - Beispiel: Druckerwarteschlange Ausprobieren am Beispiel (Rollenspiel/GA) - Bankautomat Komplexe Projekte ohne Kodierung 3 Objektorientierung

BlueJ und Java: Teil 1: Einführung in die … · Struktogramme etc. •Objektorientierte ... Textuelle Beschreibung der Anwendungsfälle

Embed Size (px)

Citation preview

Page 1: BlueJ und Java: Teil 1: Einführung in die … · Struktogramme etc. •Objektorientierte ... Textuelle Beschreibung der Anwendungsfälle

BlueJ und Java:Grundkonzepte

objektorientierten Programmierens

Thomas Karp, C. Uhrhan

14.02.2011 - 16.02.2011PL Speyer

Gymnasium HermeskeilSchwerpunkte Musik und Informatik

Teil 1: Einführung in die Objektorientierung

(aus der Java-Perspektive)Dr. M. Schillo, Christoph Uhrhan

M. Schillo, C. UhrhanGymnasium Hermeskeilwww.gymherm.de

Programm 1.Tag: OO-Modellierung mit UML

• Begriffe

- Bauplan, Instanz, Eigenschaft, Fähigkeit

- Klasse, Objekt, Variable, Methode

• Diagrammformen für den Unterricht

- Anwendungsfalldiagramm, Liste der natürlichen Objekte, Klassendiagramm, Sequenzdiagramm, Aktivitätsdiagramm

- Beispiel: Druckerwarteschlange

• Ausprobieren am Beispiel (Rollenspiel/GA)

- Bankautomat

‣ Komplexe Projekte ohne Kodierung

3

Objektorientierung

Page 2: BlueJ und Java: Teil 1: Einführung in die … · Struktogramme etc. •Objektorientierte ... Textuelle Beschreibung der Anwendungsfälle

M. Schillo, C. UhrhanGymnasium Hermeskeilwww.gymherm.de

Wie verhält sich Objektorientierung zur prozeduralen Programmierung?

• Programmieren “im Kleinen” bleibt erhalten

• Prozedurorientierte Modellierung

- Struktogramme etc.

• Objektorientierte Modellierung

- UML

5M. Schillo, C. UhrhanGymnasium Hermeskeilwww.gymherm.de

Einstiegsbeispiel

6

Eine Ampel kommt selten allein

M. Schillo, C. UhrhanGymnasium Hermeskeilwww.gymherm.de

Codebeispiel: Ampelklasse

7

public class Ampel{ int zustand;

public void schalteWeiter(){ zustand = ( zustand + 1 ) % 4; } public void zeichneAmpel(){! ... }}

Ampel ampel1 = new Ampel();Ampel ampel2 = new Ampel();...ampel1.schalteWeiter();ampel2.schalteWeiter();

...

M. Schillo, C. UhrhanGymnasium Hermeskeilwww.gymherm.de

Idee der Objektorientierung

• Vorstrukturierung komplexer Systeme anhand natürlicher Objekte

• Jedes Objekt hat Fähigkeiten und Eigenschaften

• Verteilung von Lösungskompetenzen, Zuständigkeiten und Geheimnissen

• Planung des Kontrollflusses (“Meta-Algorithmus”)

8

Page 3: BlueJ und Java: Teil 1: Einführung in die … · Struktogramme etc. •Objektorientierte ... Textuelle Beschreibung der Anwendungsfälle

M. Schillo, C. UhrhanGymnasium Hermeskeilwww.gymherm.de

Kern der Objektorientierung

9

Konzept Effekt Hintergrund

KapselungReduktion von Nebeneffekten

Viele Entwickler

KlassenReduzierung von Codelänge

Effizienz

Modellierung natürlicher Objekte

Komplexitätsreduktion“Der Code ist die Dokumentation”

M. Schillo, C. UhrhanGymnasium Hermeskeilwww.gymherm.de

OO-Programmierung

OO-Modellierung

Objektorientierung: Phasenmodell

OO-Analyse

10

OO-EntwicklungOO-Entwurf

M. Schillo, C. UhrhanGymnasium Hermeskeilwww.gymherm.de

Beispiel: Digitale Uhr

• Aufbau

- Stunden, Minuten, Sekunden, Takt, ...

• Wie implementiert man zwei Uhren (Weltuhr)?

- den Code kopieren und noch einmal einfügen

- Variablen umbenennen

- Bei Änderungen alles doppelt

• drei Uhren, vier Uhren ...?

11M. Schillo, C. UhrhanGymnasium Hermeskeilwww.gymherm.de

public class Uhr{ int stunden, minuten, sekunden;

public Uhr( int h, int m, int s ){ stunden = h; minuten = m; sekunden = s; }

public void zaehleWeiter(){ sekunden = sekunden + 1; if ( sekunden == 60 ){ sekunden = 0; minuten++; } if ( minuten == 60 ){ minuten = 0; stunden++; } ... }

public void zeigeUhrzeitAn(){ System.out.println( stunden + ”:” + minuten + “:” +sekunden ); }}

Uhr london = new Uhr( 13, 30, 45);london.zaehleWeiter();

Uhr speyer = new Uhr( 14, 30, 45);speyer.zaehleWeiter();

12

...

Page 4: BlueJ und Java: Teil 1: Einführung in die … · Struktogramme etc. •Objektorientierte ... Textuelle Beschreibung der Anwendungsfälle

M. Schillo, C. UhrhanGymnasium Hermeskeilwww.gymherm.de

Begriffe der Objektorientierung

13

Begriff Beispiel Erläuterung

Objekt speyer Exemplar oder Instanz

Klasse Uhr Bauplan

Methode zaehleWeiter() Fähigkeit, Prozedur, „Methode“

Objektvariable stundenEigenschaft, Variable,

„Attribut“

Vererbung AnalogUhr Anreicherung von Eigenschaften

M. Schillo, C. UhrhanGymnasium Hermeskeilwww.gymherm.de

Merkmale von Objekten

Objekte haben ...

• ... einen Typ

- der Name der Klasse, dessen Instanz sie sind.

• ... einen Namen

• ... einen Zustand

- Die Gesamtheit aller Variablenwerte.

• ... eine Identität

- dazu später mehr!

14

M. Schillo, C. UhrhanGymnasium Hermeskeilwww.gymherm.de

Bezeichnerkonventionen

1. Sinntragende Bezeichner2. Konkatenation

• Klasse: Uhr

- Substantiv, Großschreibung

• Variable: meineUhr = new Uhr()

- Substantiv, Kleinschreibung

• Methode: zaehleWeiter()

- Verb, Kleinschreibung

Beispiel: meineUhr.zaehleWeiter()

15M. Schillo, C. UhrhanGymnasium Hermeskeilwww.gymherm.de

Vorteile der Implementierung mit Objektorientierung

Bessere Kapselung von:

Komplexität => Bessere Modularisierung

Daten => Geheimhaltung

Zuständigkeiten => Interaktion statt Manipuliation

=> Klare Schnittstellen

Arbeitsersparnis:

Klassenbibliotheken => Wiederverwendung von Funktionalität

Objekte => Wiederverwendung von Code

16

Page 5: BlueJ und Java: Teil 1: Einführung in die … · Struktogramme etc. •Objektorientierte ... Textuelle Beschreibung der Anwendungsfälle

M. Schillo, C. UhrhanGymnasium Hermeskeilwww.gymherm.de

Warum Java für OOI?

• Pro

- Plattformübergreifend

- Einbindung ins Web -> Applets

- Unterstützung:

• Bibliotheken, IDEs, Literatur, Foren

- universellere Konzepte, kompakter

• JavaScript !?!

• Kontra

- Overhead bei Ein-/Ausgabe

- Kein Einstieg ohne OO ?bsh?

17

Fragen?

Gymnasium HermeskeilSchwerpunkte Musik und Informatik

UML - die Unified Modelling Language

Die wichtigsten Diagrammformen derUML für den Unterrichtseinsatz

am Beispiel einer Druckerwarteschlange

M. Schillo, C. UhrhanGymnasium Hermeskeilwww.gymherm.de

• Worum geht es?. Beispiele für UML im Unterricht. Denkwerkzeuge für die Modellierung. Allgemeinbildende Aspekte

• Worum geht es nicht?. Vermittlung des UML-Standards auf Niveau von Softwareentwicklern

Einstieg

20

Page 6: BlueJ und Java: Teil 1: Einführung in die … · Struktogramme etc. •Objektorientierte ... Textuelle Beschreibung der Anwendungsfälle

M. Schillo, C. UhrhanGymnasium Hermeskeilwww.gymherm.de

Der Fahrplan

1. Druckerwarteschlange (vormittag)

2. Bankautomat (nachmittag)

21

- Anwendungsfalldiagramm

- Klassendiagramm

- Aktivitätsdiagramme

- Sequenzdiagramme

2x4

M. Schillo, C. UhrhanGymnasium Hermeskeilwww.gymherm.de

Anwendungsfall-Diagramm: Druckerwarteschlange

Rolle

Systemgrenze

Anwendungsfälle

Anwender

Druckauftrag drucken

Druckauftrag erzeugen

Warteschlangen- inhalt ansehen

22

M. Schillo, C. UhrhanGymnasium Hermeskeilwww.gymherm.de

Textuelle Beschreibung der Anwendungsfälle

• Man will einen Druckauftrag erzeugen und (nach Priorität oder Reihenfolge des Einreichens) einreihen können

• Die Warteschlange muss den nächsten Druckauftrag ausgeben können

• Die Nutzer wollen die Warteschlange einsehen können

• Evtl. muss ein Druckauftrag vorgezogen werden können

23M. Schillo, C. UhrhanGymnasium Hermeskeilwww.gymherm.de

Rolle

Systemgrenze

Anwendungsfälle

Druckauftrag erzeugen

Anwender

Warteschlangen- inhalt ansehen

Druckauftrag drucken

Warteschlange anhalten

Druckauftrag entfernen

<<enthält>>

Informationen zu Druckauftrag ansehen

<<enthält>>

Priorität ändern<<enthält>>

<<enthält>>

Druckauftrag einsortieren

<<enthält>>

Druckauftrag mit Priorität erzeugen

<<erweitert>>

24

Anwendungsfall-Diagramm: Druckerwarteschlange

Page 7: BlueJ und Java: Teil 1: Einführung in die … · Struktogramme etc. •Objektorientierte ... Textuelle Beschreibung der Anwendungsfälle

Rollenspielzu: Einsortieren eines Auftrages

M. Schillo, C. UhrhanGymnasium Hermeskeilwww.gymherm.de

Rolle

Systemgrenze

Anwendungsfälle

Druckauftrag erzeugen

Anwender

Warteschlangen- inhalt ansehen

Druckauftrag drucken

Warteschlange anhalten

Druckauftrag entfernen

<<enthält>>

Informationen zu Druckauftrag ansehen

<<enthält>>

Priorität ändern<<enthält>>

<<enthält>>

Druckauftrag einsortieren

<<enthält>>

Druckauftrag mit Priorität erzeugen

<<erweitert>>

26

Anwendungsfall-Diagramm: Druckerwarteschlange

M. Schillo, C. UhrhanGymnasium Hermeskeilwww.gymherm.de

Liste der “natürlichen Objekte”

• Nutzer

• Warteschlange

• Druckauftrag

• Papier

• Drucker

• Priorität

• Papierstau

• Dokumentname

• Druckertreiber

27

Vorbereitung des Klassendiagramms!

Extern

Elementar

+ Warteschlangenelement

M. Schillo, C. UhrhanGymnasium Hermeskeilwww.gymherm.de

Klassendiagramm für Warteschlange und Druckauftrag

0 1Warteschlange

Kopf

432

28

dokumentName: Stringnachfolger: DruckAuftragprio: int

DruckAuftrag

(c) DruckAuftrag(dn: String, p: int)druckeDokumentAus(): voidfuegeDruckAuftragEin(da: DruckAuftrag)gibDokumentNameAus(): voidgibNachfolger(): DruckAuftragsetzeNachfolger(da: Druckauftrag): voidgibPrio(): intsetzePrio(p: int): voidgibRestWsAus(): voiddruckeDokumentAus(): voidgibRestLaengeAus(lb: int): int

11

druckerName: Stringkopf: DruckAuftrag

DruckerWarteschlange

(c) DruckerWarteschlange(dn: String)druckeNaechstenAuftrag(): DruckAuftragerzeugeDruckAuftrag(da: DruckAuftrag): voidgibLaengeAus(): intgibWarteschlangeAus(): void

verwaltet

0..1

Nachfolger0..1

Page 8: BlueJ und Java: Teil 1: Einführung in die … · Struktogramme etc. •Objektorientierte ... Textuelle Beschreibung der Anwendungsfälle

M. Schillo, C. UhrhanGymnasium Hermeskeilwww.gymherm.de

Klassendiagramm für Warteschlange und Druckauftrag

0 1Warteschlange

Kopf

432

29

dokumentName: Stringnachfolger: DruckAuftragprio: int

DruckAuftrag

(c) DruckAuftrag(dn: String, p: int)druckeDokumentAus(): voidfuegeDruckAuftragEin(da: DruckAuftrag)gibDokumentNameAus(): voidgibNachfolger(): DruckAuftragsetzeNachfolger(da: Druckauftrag): voidgibPrio(): intsetzePrio(p: int): voidgibRestWsAus(): voiddruckeDokumentAus(): voidgibRestLaengeAus(lb: int): int

11

druckerName: Stringkopf: DruckAuftrag

DruckerWarteschlange

(c) DruckerWarteschlange(dn: String)druckeNaechstenAuftrag(): DruckAuftragerzeugeDruckAuftrag(da: DruckAuftrag): voidgibLaengeAus(): intgibWarteschlangeAus(): void

verwaltet

0..1

Nachfolger0..1

M. Schillo, C. UhrhanGymnasium Hermeskeilwww.gymherm.de

Aktivitätsdiagramm: fügeAuftragEin()

30

fügeAuftragEin(neuerAuftrag)

ja

nachfolger.fügeAuftragEin(neuerAuftrag)

nachfolger = neuerAuftrag

neuerAuftrag.nachfolger = nachfolger

ja

neuerAuftrag

existiert nachfolger?

nein

nachfolger = neuerAuftrag

nein

pneu < nachfolger.gibPrioritaetZurueck()

pneu=neuerAuftrag. gibPrioritaetZurueck()

M. Schillo, C. UhrhanGymnasium Hermeskeilwww.gymherm.de

Sequenzdiagramm: fügeAuftragEin()

w1:Warteschlange kopf:Druckauftrag d1:Druckauftrag d2:Druckauftrag

fuegeAuftragEin()

fuegeAuftragEin()

fuegeAuftragEin()

31

gibPrioritaetZurueck()

id

gibPrioritaetZurueck()

id

M. Schillo, C. UhrhanGymnasium Hermeskeilwww.gymherm.de

Code: fügeAuftragEin()

public class Druckauftrag{ public void fuegeAuftragEin( Druckauftrag d ){ if ( nachfolger == null ){ setzeNachfolger( d ); } else { if ( d.gibPrioritaetZurueck() < nachfolger.gibPrioritaetZurueck()){ d.setzeNachfolger( nachfolger ); setzeNachfolger( d ); } else { nachfolger.fuegeAuftragEin( d ); } } }}

32

Page 9: BlueJ und Java: Teil 1: Einführung in die … · Struktogramme etc. •Objektorientierte ... Textuelle Beschreibung der Anwendungsfälle

ÜbunggibWarteschlangeAus()

M. Schillo, C. UhrhanGymnasium Hermeskeilwww.gymherm.de

Aktivitätsdiagramm: gibWarteschlangeAus()

nein

ja

nachfolger.gibRestDerWSAus()

34

gibWarteschlangeAus()

nachfolger.gibDokukmentNameAus()

existiert nachfolger?

M. Schillo, C. UhrhanGymnasium Hermeskeilwww.gymherm.de

gibRestDerWSAus()

Sequenzdiagramm: gibWarteschlangeAus()

w1:Warteschlange kopf:Druckauftrag d1:Druckauftrag d2:Druckauftrag

gibRestDerWSAus()

35

gibDokumentInfoAus()

gibDokumentInfoAus()

gibRestDerWSAus()

M. Schillo, C. UhrhanGymnasium Hermeskeilwww.gymherm.de

Code: gibWarteschlangeAus()

public class Warteschlange{ public void gibWarteschlangeAus(){ kopf.gibNachfolgerZurueck().gibAuftraegeAus(); }}

public class Druckauftrag{ public void gibAuftraegeAus(){ gibDokumentAus(); if ( nachfolger != null ) nachfolger.gibAuftraegeAus(); } public void gibDokumentAus(){ System.out.println( id + " p: "+ prioritaet + " " + dokumentname ); }}

36

Page 10: BlueJ und Java: Teil 1: Einführung in die … · Struktogramme etc. •Objektorientierte ... Textuelle Beschreibung der Anwendungsfälle

M. Schillo, C. UhrhanGymnasium Hermeskeilwww.gymherm.de

Variationen

•+setze Priorität( int id )•+aendereAnzahl( int anzahl )•Drucken zu einem bestimmten Zeitpunkt•Auswahl s/w oder Farbe•Verschieben von einer Warteschlange in eine andere•...

37

Fragen?

Gymnasium HermeskeilSchwerpunkte Musik und Informatik

UML (2)Die wichtigsten Diagrammformen im Überblick

M. Schillo, C. UhrhanGymnasium Hermeskeilwww.gymherm.de

UML: Überblick

Phase AnalyseEntwurf:Struktur

Entwurf:Verhalten

Diagramm Anwendungsfall KlassendiagrammSequenzdiagrammAktivitätsdiagramm

40

Page 11: BlueJ und Java: Teil 1: Einführung in die … · Struktogramme etc. •Objektorientierte ... Textuelle Beschreibung der Anwendungsfälle

M. Schillo, C. UhrhanGymnasium Hermeskeilwww.gymherm.de

Anwendungsfalldiagramm

41

Rolle 1

Systemgrenze

Anwendungsfall

Anwendungsfall

Anwendungsfall

<<enthält>>

Rolle 2

M. Schillo, C. UhrhanGymnasium Hermeskeilwww.gymherm.de

Liste der “natürlichen Objekte”, nicht in UML!

• ............

• ............

• ............

• ............

• ............

• ............

• ............

• ............

• ............

42

Vorbereitung des Klassendiagramms!

Extern

Elementar

+ ............

M. Schillo, C. UhrhanGymnasium Hermeskeilwww.gymherm.de

Klassendiagramm

43

{-,+,#}methode()......

{-,+,#}feld: Typ......

Klassenname

Beziehung

0..1 1..*

{-,+,#}methode()......

{-,+,#}feld: Typ......

Klassenname2

Kardinalität:1:1! entfällt""n ""! (unbekannt, aber beschränkt)0..1! (3..10"""1..n)1..*! (1 oder mehr)*! (0 oder mehr)

Sichtbarkeit:- private+public#protected

M. Schillo, C. UhrhanGymnasium Hermeskeilwww.gymherm.de

Aktivitätsdiagramm

Name der Aktivität

nein

ja

Arbeitsschritt

Arbeitsschritt

Entscheidung

ja

ArbeitsschrittKontrollfluss:

Start

ErgebniswertParameter

44

Page 12: BlueJ und Java: Teil 1: Einführung in die … · Struktogramme etc. •Objektorientierte ... Textuelle Beschreibung der Anwendungsfälle

M. Schillo, C. UhrhanGymnasium Hermeskeilwww.gymherm.de

Sequenzdiagramm

instanz1:Klasse1 instanz2:Klasse2 instanz3:Klasse3 instanz4:Klasse4

externeMethode()interneMethode()

x

externeMethode()

RückgabewertRückgabewert

Lebenslinie

Ende der Lebenslinie

Bear

beitu

ngsz

eit

45M. Schillo, C. UhrhanGymnasium Hermeskeilwww.gymherm.de

Vorschlag: Vorgehensweise für den Unterricht

46

Anwendungsfall-diagramm

Sequenz-diagramm

Aktivitäts-diagramm

Gruppen-arbeit

Natürliche Objekte

F-Entw.

Binnen-diff.?

HA: Text?

Klassen-diagramm

Partner-Arbeit

M. Schillo, C. UhrhanGymnasium Hermeskeilwww.gymherm.de

Strukturelle Probleme des Unterrichtseinsatzes der OO-Modellierung

• Modellierung setzt Kodierungserfahrung voraus

- manche Software-Objekte sind nicht natürlich sondern technisch bedingt;

- viele natürliche Objekte sind nicht relevant

• Vorteil der Objektorientierung: bei großen Projekten, nicht bei kleinen

• Objektorientierung

- setzt imperative Programmierung voraus, oder

- objects first: besitzt nicht genug “Fleisch”.

47

Gymnasium HermeskeilSchwerpunkte Musik und Informatik

Fragen?

Page 13: BlueJ und Java: Teil 1: Einführung in die … · Struktogramme etc. •Objektorientierte ... Textuelle Beschreibung der Anwendungsfälle

ÜbungAuftrag löschen und Priorität ändern

M. Schillo, C. UhrhanGymnasium Hermeskeilwww.gymherm.de

Sequenzdiagramm: löscheAuftrag(id) (1)

w1:Warteschlange kopf:Druckauftrag d1:Druckauftrag d2:Druckauftrag

löscheAuftrag(id)

löscheAuftrag(id)

x

50

gibIDZurueck()

id

gibIDZurueck()

id

M. Schillo, C. UhrhanGymnasium Hermeskeilwww.gymherm.de

gibIDZurueck()

id

Sequenzdiagramm: entferneAuftrag(id)

w1:Warteschlange kopf:Druckauftrag d1:Druckauftrag d2:Druckauftrag

entferneAuftrag(id)

entferneAuftrag(id)

entfernterAuftragentfernterAuftrag

51x

gibIDZurueck()

id

M. Schillo, C. UhrhanGymnasium Hermeskeilwww.gymherm.de

Aktivitätsdiagramm: entferneAuftrag(id)

entferneAuftrag(id)

nein

ja

nimm nachfolger

entfernterAuftrag

nachfolger = entfernterAuftrag.nachfolger

entfernterAuftrag = nachfolger

nachfolger.gibIDZurueck() = id?

ja

52

id

Page 14: BlueJ und Java: Teil 1: Einführung in die … · Struktogramme etc. •Objektorientierte ... Textuelle Beschreibung der Anwendungsfälle

M. Schillo, C. UhrhanGymnasium Hermeskeilwww.gymherm.de

Code: entferneAuftrag(id)

public class Warteschlange{ public void loescheAuftrag( int id ){ kopf.entferneAuftrag( id ); }}

public class Druckauftrag{ public Druckauftrag entferneAuftrag( int id ){ if ( nachfolger.gibIDZurueck() == id ){ Druckauftrag auftrag = nachfolger; nachfolger = nachfolger.gibNachfolgerZurueck(); return auftrag; } return nachfolger.entferneAuftrag( id ); }}

53M. Schillo, C. UhrhanGymnasium Hermeskeilwww.gymherm.de

Allgemeinbildende Aspekte

• Beschreibung komplexer Systeme

- Beschreibungswerkzeuge (Interaktion, Ablauf)

- nicht reduzieren, sondern annehmen der Komplexität

- Textverarbeitung, SchO

54

M. Schillo, C. UhrhanGymnasium Hermeskeilwww.gymherm.de

OOM + Textverarbeitung

55M. Schillo, C. UhrhanGymnasium Hermeskeilwww.gymherm.de

OOM + Politische Strukturen

56

Page 15: BlueJ und Java: Teil 1: Einführung in die … · Struktogramme etc. •Objektorientierte ... Textuelle Beschreibung der Anwendungsfälle

M. Schillo, C. UhrhanGymnasium Hermeskeilwww.gymherm.de

Allgemeinbildende Aspekte

• Beschreibung komplexer Systeme

- Beschreibungswerkzeuge (Interaktion, Ablauf)

- nicht reduzieren, sondern annehmen der Komplexität

- Textverarbeitung, SchO

• Perspektivenwechsel

- Nicht Kausalbeziehung

- vgl. Hermeneutischer Zirkel

57M. Schillo, C. UhrhanGymnasium Hermeskeilwww.gymherm.de

Zusammenfassung

• UML

- Grafische Beschreibungssprache

• Anwendungsfalldiagramm

• Klassendiagramm,

• Aktivitätsdiagramm

• Sequenzdiagramm

- Perspektivenwechsel, Überblick

• Methodische Vorschläge

- Auswahl an Diagrammen, Natürliche Objekte, Projektablauf

58

Pause

Gymnasium HermeskeilSchwerpunkte Musik und Informatik

Unterrichtsmaterial “Bankautomat” und UML

Dr. Michael SchilloGymnasium Hermeskeil

Page 16: BlueJ und Java: Teil 1: Einführung in die … · Struktogramme etc. •Objektorientierte ... Textuelle Beschreibung der Anwendungsfälle

M. Schillo, C. UhrhanGymnasium Hermeskeilwww.gymherm.de

Aufgabe

• Fertigen Sie ein Klassendiagramm an

• Fertigen Sie Aktivitäts- und Sequenzdiagramme für folgende Abläufe an:

- Ablaufdatum überprüfen

- PIN prüfen

- Saldo ausgeben

- 50# abheben

- beliebigen Betrag abheben

• Dabei sollen die Aktivitätsdiagramme zentrale Methoden abbilden, das Sequenzdiagramm beginnt beim Bankautomaten

61

Gymnasium HermeskeilSchwerpunkte Musik und Informatik

Material zum Bankautomaten

MuLö

M. Schillo, C. UhrhanGymnasium Hermeskeilwww.gymherm.de

Die Konto- und Kartendaten

64

Name ktonummer ktostand BLZ

konto1

konto2

konto3

747 200,00 ! 50059050

256 15.000,00 ! 50059050

815 -275,00 ! 30039030

Name ktoNummer pin BLZ krtNummer

karte1

karte2

karte3

747 1111 50059050 7711

256 2222 50059050 7722

815 3333 30039030 7733

Page 17: BlueJ und Java: Teil 1: Einführung in die … · Struktogramme etc. •Objektorientierte ... Textuelle Beschreibung der Anwendungsfälle

M. Schillo, C. UhrhanGymnasium Hermeskeilwww.gymherm.de 65

Anwendungsfall-Diagramm: Bankautomat

Benutzer

System

PIN Prüfen

Kontostandabfragen

Geldabheben

M. Schillo, C. UhrhanGymnasium Hermeskeilwww.gymherm.de

Liste der “natürlichen Objekte”

66

Benutzer

Konto BLZ

GeldausgabeGeld

Karte(Betrag)

Kontonr

Kontostand

Automat Tageslimit

Sprache Ein-/AusgabeBargeldbestand

PIN

+ Kontoverwaltung

M. Schillo, C. UhrhanGymnasium Hermeskeilwww.gymherm.de

Die Klasse Karte

67

pin: intkartenNr: intkontoNr: intblz: int

Karte

(c) Karte(p: int, krtnr: int, ktonr: int, b: int)gibPin(): intgibKartenNr(): intgibKtoNr(): intgibBLZ(): int

M. Schillo, C. UhrhanGymnasium Hermeskeilwww.gymherm.de

Queltext der Klasse Karte

68

1 public class Karte {23 int pin ;4 int kartenNr ;5 int kontoNr ;6 int b l z ;78 Karte ( int krtnr , int ktonr , int b , int p) {9 pin = p ;

10 kartenNr = krtnr ;11 kontoNr = ktonr ;12 b l z = b ;13 }1415 int gibPin ( ) {16 return pin ;17 }1819 int gibkartenNr ( ) {20 return kartenNr ;21 }2223 int gibKontoNr ( ) {24 return kontoNr ;25 }2627 int gibBLZ ( ) {28 return b l z ;29 }3031 }

Page 18: BlueJ und Java: Teil 1: Einführung in die … · Struktogramme etc. •Objektorientierte ... Textuelle Beschreibung der Anwendungsfälle

M. Schillo, C. UhrhanGymnasium Hermeskeilwww.gymherm.de

Die Klasse Konto

69

kontoNr: intblz: intkontoStand: float

Konto

(c) Konto(ktonr: int, blz: int, ktostd: float)gibKtoNr(): intgibBLZ(): intgibKontoStand(): floathebeAb(betrag: float): boolean

M. Schillo, C. UhrhanGymnasium Hermeskeilwww.gymherm.de

Quellcode der Klasse Konto

70

1 public class Konto {2 int kontoNr ;3 int b l z ;4 double kontoStand ;56 Konto ( int ktonr , int b , double d) {7 kontoNr = ktonr ;8 b l z = b ;9 kontoStand = d ;

10 }1112 int gibKontoNr ( ) {13 return kontoNr ;14 }1516 int gibBLZ ( ) {17 return b l z ;18 }1920 double gibKontoStand ( ) {21 return kontoStand ;22 }2324 boolean hebeAb (double betrag ) {25 i f ( kontoStand > betrag ) {26 kontoStand = kontoStand − betrag ;27 return true ;28 } else {29 return fa lse ;30 }31 }32 }

M. Schillo, C. UhrhanGymnasium Hermeskeilwww.gymherm.de

Die Klasse KontoVerwaltung

71

konto1: Kontokonto2: Kontokonto3: Konto

Kontoverwaltung

(c) Kontoverwaltung()findeKonto(ktonr: int): Konto

M. Schillo, C. UhrhanGymnasium Hermeskeilwww.gymherm.de

Quelltext der Klassse KontoVerwaltung

72

1 public class KontoVerwaltung {23 Konto konto1 ;4 Konto konto2 ;5 Konto konto3 ;67 KontoVerwaltung ( ) {8 konto1 = new Konto (747 , 50059050 , 200 . 0 ) ;9 konto2 = new Konto (256 , 50059050 , 15000 .0 ) ;

10 konto3= new Konto (815 , 30039030 , −275.0) ;11 }1213 Konto f indeKonto ( int ktoNr ) {14 i f ( konto1 . gibKontoNr ( ) == ktoNr ) {15 return konto1 ;16 } else i f ( konto2 . gibKontoNr ( ) == ktoNr ) {17 return konto2 ;18 } else i f ( konto3 . gibKontoNr ( ) == ktoNr ) {19 return konto3 ;20 } else {21 return null ;22 }23 }24 }

Page 19: BlueJ und Java: Teil 1: Einführung in die … · Struktogramme etc. •Objektorientierte ... Textuelle Beschreibung der Anwendungsfälle

M. Schillo, C. UhrhanGymnasium Hermeskeilwww.gymherm.de

Die Klasse BankAutomat

73

ktoVerwaltung: KontoverwaltungaktuelleKarte: KarteaktuellesKonto: KontobargeldBestand: float

Bankautomat

(c) Bankautomat()pruefePin(krt: Karte, pin: int): booleangibKtoStand(): floathebeAb(betrag: float): booleanbeendeTranskation(): void

M. Schillo, C. UhrhanGymnasium Hermeskeilwww.gymherm.de

Quellcode der Klasse BankAutomat (1)

74

M. Schillo, C. UhrhanGymnasium Hermeskeilwww.gymherm.de 75

Quellcode der Klasse BankAutomat (II)

M. Schillo, C. UhrhanGymnasium Hermeskeilwww.gymherm.de 76

Quellcode der Klasse BankAutomat (1II)

Page 20: BlueJ und Java: Teil 1: Einführung in die … · Struktogramme etc. •Objektorientierte ... Textuelle Beschreibung der Anwendungsfälle

M. Schillo, C. UhrhanGymnasium Hermeskeilwww.gymherm.de

Klassendiagramm

77

kontoNr: intblz: intkontoStand: float

Konto

(c) Konto(ktonr: int, blz: int, ktostd: float)gibKtoNr(): intgibBLZ(): intgibKontoStand(): floathebeAb(betrag: float): boolean

pin: intkartenNr: intkontoNr: intblz: int

Karte

(c) Karte(p: int, krtnr: int, ktonr: int, b: int)gibPin(): intgibKartenNr(): intgibKtoNr(): intgibBLZ(): int

konto1: Kontokonto2: Kontokonto3: Konto

Kontoverwaltung

(c) Kontoverwaltung()findeKonto(ktonr: int): Konto

ktoVerwaltung: KontoverwaltungaktuelleKarte: KarteaktuellesKonto: KontobargeldBestand: float

Bankautomat

(c) Bankautomat()pruefePin(krt: Karte, pin: int): booleangibKtoStand(): floathebeAb(betrag: float): booleanbeendeTranskation(): void

3

1

1

11

1

11

M. Schillo, C. UhrhanGymnasium Hermeskeilwww.gymherm.de

Sequenzdiagramm

78

ba: BankAutomat ktoVerwaltung: KontoVerwaltung konto1: Konto konto2: Konto

Sequenzdiagramm: BankAutomat.pruefePin(karte2, 2222)

gibKontoNr()

747

true

karte2: Karte

gibPin()

256

gibKontoNr()aktuelleKarte: Karte

findeKonto(256)

gibKontoNr()

256

konto2

pruefePin(karte2, 2222)

true

M. Schillo, C. UhrhanGymnasium Hermeskeilwww.gymherm.de

Aktivitätsdiagramm

79

krt: Karte

pin: intkrt.pin == pin ergebnis = false

finde Konto zur aktuellen Karte

aktuelleKarte = krt

aktuellesKonto != null

ergebnis = true

ergebnis = false

beendeTransaktion()

ergebnis

BankAutomat.pruefePin()

beendeTransaktion()