Delphi II - OOP IFB Fortbildung Grundkonzepte der OOP: Beziehungen zwischen Objekten Bsp:...

26
Delphi II - OOP Delphi II - OOP IFB Fortbildung Grundkonzepte der OOP: Beziehungen zwischen Objekten Bsp: Ticketautomat – Stoppuhr - Kontoverwaltung 7.11.2006 Tobias Selinger

Transcript of Delphi II - OOP IFB Fortbildung Grundkonzepte der OOP: Beziehungen zwischen Objekten Bsp:...

Page 1: Delphi II - OOP IFB Fortbildung Grundkonzepte der OOP: Beziehungen zwischen Objekten Bsp: Ticketautomat – Stoppuhr - Kontoverwaltung 7.11.2006 Tobias Selinger.

Delphi II - OOPDelphi II - OOP

IFB Fortbildung

Grundkonzepte der OOP: Beziehungen zwischen Objekten

Bsp: Ticketautomat – Stoppuhr - Kontoverwaltung

7.11.2006

Tobias Selinger

Page 2: Delphi II - OOP IFB Fortbildung Grundkonzepte der OOP: Beziehungen zwischen Objekten Bsp: Ticketautomat – Stoppuhr - Kontoverwaltung 7.11.2006 Tobias Selinger.

2

TS

OO

P m

it D

elp

hi

Ticketautomat: FormularTicketautomat: Formular

Page 3: Delphi II - OOP IFB Fortbildung Grundkonzepte der OOP: Beziehungen zwischen Objekten Bsp: Ticketautomat – Stoppuhr - Kontoverwaltung 7.11.2006 Tobias Selinger.

3

TS

OO

P m

it D

elp

hi

Ticketautomat: Formular-KlasseTicketautomat: Formular-Klasse

Page 4: Delphi II - OOP IFB Fortbildung Grundkonzepte der OOP: Beziehungen zwischen Objekten Bsp: Ticketautomat – Stoppuhr - Kontoverwaltung 7.11.2006 Tobias Selinger.

4

TS

OO

P m

it D

elp

hi

Ticketautomat: KlassendiagrammTicketautomat: Klassendiagramm

Aufrufe

Page 5: Delphi II - OOP IFB Fortbildung Grundkonzepte der OOP: Beziehungen zwischen Objekten Bsp: Ticketautomat – Stoppuhr - Kontoverwaltung 7.11.2006 Tobias Selinger.

5

TS

OO

P m

it D

elp

hi

Ticketautomat: Beziehung?Ticketautomat: Beziehung?

Aufrufe

GUI-Klasse

Fach-KlasseBeziehung?

Page 6: Delphi II - OOP IFB Fortbildung Grundkonzepte der OOP: Beziehungen zwischen Objekten Bsp: Ticketautomat – Stoppuhr - Kontoverwaltung 7.11.2006 Tobias Selinger.

6

TS

OO

P m

it D

elp

hi

Ticketautomat: AssoziationTicketautomat: Assoziation

Aufrufe

GUI-Klasse

Fach-Klasse„kennt“-Beziehung:Assoziation

Page 7: Delphi II - OOP IFB Fortbildung Grundkonzepte der OOP: Beziehungen zwischen Objekten Bsp: Ticketautomat – Stoppuhr - Kontoverwaltung 7.11.2006 Tobias Selinger.

7

TS

OO

P m

it D

elp

hi

Ticketautomat: UnitsTicketautomat: Units

Aufrufe

GUI-Klasse

Fach-Klasse

unit Unit1;uses Windows, Forms, ...

mTTicketautomat;type

TForm1 = class(TForm)unit mTTicketautomat;Uses Dialogs, SysUtils;type

TTicketautomat = class

„kennt“-Beziehung:Assoziation

Page 8: Delphi II - OOP IFB Fortbildung Grundkonzepte der OOP: Beziehungen zwischen Objekten Bsp: Ticketautomat – Stoppuhr - Kontoverwaltung 7.11.2006 Tobias Selinger.

8

TS

OO

P m

it D

elp

hi

Benutzer-DialogBenutzer-Dialog

Wer – d.h. welche Klasse? – führt den Dialog mit dem Benutzer ?

GUI-Klasse oder Fachklasse ?

Page 9: Delphi II - OOP IFB Fortbildung Grundkonzepte der OOP: Beziehungen zwischen Objekten Bsp: Ticketautomat – Stoppuhr - Kontoverwaltung 7.11.2006 Tobias Selinger.

9

TS

OO

P m

it D

elp

hi

Benutzer-DialogBenutzer-Dialog

Wer – d.h. welche Klasse? – führt den Dialog mit dem Benutzer ?

Die GUI-Klasse: - Buttons, Edit-Felder, Dialog-Boxen etc. (typischerweise) - Ereignisbehandlungs-Prozeduren

- Aufruf der Methoden der bekannten Fachklasse- Behandeln / Anzeigen der Rückgabewerte

Page 10: Delphi II - OOP IFB Fortbildung Grundkonzepte der OOP: Beziehungen zwischen Objekten Bsp: Ticketautomat – Stoppuhr - Kontoverwaltung 7.11.2006 Tobias Selinger.

10

TS

OO

P m

it D

elp

hi

Benutzer-DialogBenutzer-Dialog

Wer – d.h. welche Klasse? – führt den Dialog mit dem Benutzer ?

Die GUI-Klasse: - Buttons, Edit-Felder, Dialog-Boxen etc. (typischerweise) - Ereignisbehandlungs-Prozeduren

- Aufruf der Methoden der bekannten FachklasseBeispiel: - Behandeln / Anzeigen der Rückgabewerte

procedure TForm1.GeldEinwerfenButtonClick(Sender: TObject);var betrag: integer;begin betrag := strtoint(InputBox('Geld einwerfen', 'Betrag', '0')); Automat.geldEinwerfen(betrag); AktuelleAnzahlungEdit.Text:=inttostr(Automat.gibAktuelleAnzahlung);end;

Page 11: Delphi II - OOP IFB Fortbildung Grundkonzepte der OOP: Beziehungen zwischen Objekten Bsp: Ticketautomat – Stoppuhr - Kontoverwaltung 7.11.2006 Tobias Selinger.

11

TS

OO

P m

it D

elp

hi

Zum Testen: Dialoge innerhalb der FachklasseZum Testen: Dialoge innerhalb der Fachklasse

Mitunter kann es hilfreich sein, eine Fachklasse alleine zu testen,d.h. a la BlueJ unabhängig von einer GUI-Klasse.

Für kurze Dialoge (kleine Ein-/Ausgabefenster) bietet die Unit Dialogsfolgende „unabhängige“ Prozeduren und Funktionen:

Ausgabefenster:

ShowMessage (<Nachricht>) zeigt einen String an.

Eingabefenster:

InputBox (<Titel>, <Frage>, <Defaultwert>) liefert den eingegebenen String.

InputQuery (<Titel>, <Frage>, <String-Variable>) liefert Erfolg (true/false) und belegt ggf. die Variable mit der Benutzer-Eingabe.

Page 12: Delphi II - OOP IFB Fortbildung Grundkonzepte der OOP: Beziehungen zwischen Objekten Bsp: Ticketautomat – Stoppuhr - Kontoverwaltung 7.11.2006 Tobias Selinger.

12

TS

OO

P m

it D

elp

hi

Übung zum Ticketautomat und UML-Editor: Einnahmen Übung zum Ticketautomat und UML-Editor: Einnahmen abholenabholen

Kopieren und öffnen Sie das Delphi-Projekt „Ticketautomat“.

Starten Sie auch den UML-Editor und importieren Sie die beteiligten Klassen des Ticketautomaten (TForm1 und TTicketautomat, inkl. Code).

Ergänzen Sie (im UML-Editor) die Methode EinnahmenAbholen, diedem Automatenbetreiber zur Entnahme der gesamten Einnahmen dient.

Exportieren Sie (im UML-Editor) nun die veränderte Klasse nach Delphi, d.h. überschreiben Sie die zugehörige Unit-Datei.

Aktualisieren Sie (in Delphi) die veränderte Klasse, undergänzen Sie die Implementierung der Methode EinnahmenAbholen:- Erfragen und prüfen Sie den korrekten Zugangscode- Setzen Sie die Einnahmen auf Null, bzw. geben Sie eine Meldung „Zugriff verweigert“ aus.

Fügen Sie Ihrem Formular einen entsprechenden Button mit Ereignisbehandlungsprozedur hinzu,speichern Sie Ihre Delphi-Dateien und die (aktualisierte) UML-Datei,und testen Sie!

Zusatz: Wie könnte man ein Parkticket in der GUI-Listbox ausgeben?

Page 13: Delphi II - OOP IFB Fortbildung Grundkonzepte der OOP: Beziehungen zwischen Objekten Bsp: Ticketautomat – Stoppuhr - Kontoverwaltung 7.11.2006 Tobias Selinger.

13

TS

OO

P m

it D

elp

hi

Stoppuhr: Modularisierung?Stoppuhr: Modularisierung?

Aufteilung in Module?

Page 14: Delphi II - OOP IFB Fortbildung Grundkonzepte der OOP: Beziehungen zwischen Objekten Bsp: Ticketautomat – Stoppuhr - Kontoverwaltung 7.11.2006 Tobias Selinger.

14

TS

OO

P m

it D

elp

hi

Stoppuhr: KlassendiagrammStoppuhr: Klassendiagramm

Stoppuhr (ohne GUI)

HundertstelSekunden

Erforderliche Klassen?

Page 15: Delphi II - OOP IFB Fortbildung Grundkonzepte der OOP: Beziehungen zwischen Objekten Bsp: Ticketautomat – Stoppuhr - Kontoverwaltung 7.11.2006 Tobias Selinger.

15

TS

OO

P m

it D

elp

hi

Stoppuhr: KlassendiagrammStoppuhr: Klassendiagramm

Stoppuhr (ohne GUI)

HundertstelSekunden

Page 16: Delphi II - OOP IFB Fortbildung Grundkonzepte der OOP: Beziehungen zwischen Objekten Bsp: Ticketautomat – Stoppuhr - Kontoverwaltung 7.11.2006 Tobias Selinger.

16

TS

OO

P m

it D

elp

hi

Stoppuhr: KlassendiagrammStoppuhr: Klassendiagramm

Stoppuhr (ohne GUI)

HundertstelSekunden

Page 17: Delphi II - OOP IFB Fortbildung Grundkonzepte der OOP: Beziehungen zwischen Objekten Bsp: Ticketautomat – Stoppuhr - Kontoverwaltung 7.11.2006 Tobias Selinger.

17

TS

OO

P m

it D

elp

hi

Stoppuhr: KlassendiagrammStoppuhr: Klassendiagramm

Stoppuhr (ohne GUI)

HundertstelSekunden

Page 18: Delphi II - OOP IFB Fortbildung Grundkonzepte der OOP: Beziehungen zwischen Objekten Bsp: Ticketautomat – Stoppuhr - Kontoverwaltung 7.11.2006 Tobias Selinger.

18

TS

OO

P m

it D

elp

hi

Stoppuhr: KlassendiagrammStoppuhr: Klassendiagramm

Stoppuhr (ohne GUI)

HundertstelSekunden

Page 19: Delphi II - OOP IFB Fortbildung Grundkonzepte der OOP: Beziehungen zwischen Objekten Bsp: Ticketautomat – Stoppuhr - Kontoverwaltung 7.11.2006 Tobias Selinger.

19

TS

OO

P m

it D

elp

hi

Stoppuhr: KlassendiagrammStoppuhr: Klassendiagramm

Stoppuhr (ohne GUI)

HundertstelSekunden

Page 20: Delphi II - OOP IFB Fortbildung Grundkonzepte der OOP: Beziehungen zwischen Objekten Bsp: Ticketautomat – Stoppuhr - Kontoverwaltung 7.11.2006 Tobias Selinger.

20

TS

OO

P m

it D

elp

hi

Stoppuhr: KlassendiagrammStoppuhr: Klassendiagramm

Stoppuhr (ohne GUI)

HundertstelSekunden

Page 21: Delphi II - OOP IFB Fortbildung Grundkonzepte der OOP: Beziehungen zwischen Objekten Bsp: Ticketautomat – Stoppuhr - Kontoverwaltung 7.11.2006 Tobias Selinger.

21

TS

OO

P m

it D

elp

hi

Stoppuhr: KlassendiagrammStoppuhr: Klassendiagramm

Beziehung? Beziehung?

Page 22: Delphi II - OOP IFB Fortbildung Grundkonzepte der OOP: Beziehungen zwischen Objekten Bsp: Ticketautomat – Stoppuhr - Kontoverwaltung 7.11.2006 Tobias Selinger.

22

TS

OO

P m

it D

elp

hi

Stoppuhr: KlassendiagrammStoppuhr: Klassendiagramm

Assoziation:„kennt“

Aggregation:„hat“

Page 23: Delphi II - OOP IFB Fortbildung Grundkonzepte der OOP: Beziehungen zwischen Objekten Bsp: Ticketautomat – Stoppuhr - Kontoverwaltung 7.11.2006 Tobias Selinger.

23

TS

OO

P m

it D

elp

hi

Übung: StoppuhrÜbung: Stoppuhr

Definieren Sie im UML-Editor die Klasse TZaehler.

Exportieren Sie die zugehörige Delphi-Unit unter dem DateinamenmTZaehler.pas in einen neuen Ordner namens „Stoppuhr“.

Beginnen Sie ein neues Delphi-Projekt und speichern Sie alle Projekt-Dateien ebenfalls in diesem Ordner.

Fügen Sie Ihrem Projekt die Zähler-Unit hinzu.(Projekt – Hinzufügen... oder Ansicht – Projektverwaltung... )

Implementieren Sie die Zähler-Methoden!

Erstellen Sie ein einfaches GUI zum Testen der Zähler-Klasse(z.B. für Zähler erzeugen, Wert anzeigen, erhöhen). Testen Sie!

Kopieren und öffnen Sie das Delphi-Projekt „Stoppuhr“,fügen Sie Ihre Zähler-Klasse hinzu und testen Sie!

Erweiterung 1: Fügen Sie einen Highscore für die Bestzeit hinzu!

Erweiterung 2: Entwickeln Sie eine 24-Stunden-Uhr mit Weckzeit!

Page 24: Delphi II - OOP IFB Fortbildung Grundkonzepte der OOP: Beziehungen zwischen Objekten Bsp: Ticketautomat – Stoppuhr - Kontoverwaltung 7.11.2006 Tobias Selinger.

24

TS

OO

P m

it D

elp

hi

KontoverwaltungKontoverwaltung

Page 25: Delphi II - OOP IFB Fortbildung Grundkonzepte der OOP: Beziehungen zwischen Objekten Bsp: Ticketautomat – Stoppuhr - Kontoverwaltung 7.11.2006 Tobias Selinger.

25

TS

OO

P m

it D

elp

hi

KontoverwaltungKontoverwaltung

Page 26: Delphi II - OOP IFB Fortbildung Grundkonzepte der OOP: Beziehungen zwischen Objekten Bsp: Ticketautomat – Stoppuhr - Kontoverwaltung 7.11.2006 Tobias Selinger.

26

TS

OO

P m

it D

elp

hi

KontoverwaltungKontoverwaltung

Problem: gegenseitige „kennt“-Beziehungen!

(Überkreuz-Referenz mehrererUnits in Delphi nicht erlaubt!)

Lösung:a) Mehrere Klassen in eine Unitb) Redesign mit „Koppel“-Klassen