delphi ii - oop ifb fortbildung grundkonzepte der oop: beziehungen zwischen objekten bsp:...
TRANSCRIPT
![Page 1: Delphi II - OOP IFB Fortbildung Grundkonzepte der OOP: Beziehungen zwischen Objekten Bsp: Ticketautomat – Stoppuhr - Kontoverwaltung 7.11.2006 Tobias Selinger](https://reader036.vdocuments.pub/reader036/viewer/2022062512/55204d7049795902118c2578/html5/thumbnails/1.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062512/55204d7049795902118c2578/html5/thumbnails/2.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062512/55204d7049795902118c2578/html5/thumbnails/3.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062512/55204d7049795902118c2578/html5/thumbnails/4.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062512/55204d7049795902118c2578/html5/thumbnails/5.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062512/55204d7049795902118c2578/html5/thumbnails/6.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062512/55204d7049795902118c2578/html5/thumbnails/7.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062512/55204d7049795902118c2578/html5/thumbnails/8.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062512/55204d7049795902118c2578/html5/thumbnails/9.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062512/55204d7049795902118c2578/html5/thumbnails/10.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062512/55204d7049795902118c2578/html5/thumbnails/11.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062512/55204d7049795902118c2578/html5/thumbnails/12.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062512/55204d7049795902118c2578/html5/thumbnails/13.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062512/55204d7049795902118c2578/html5/thumbnails/14.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062512/55204d7049795902118c2578/html5/thumbnails/15.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062512/55204d7049795902118c2578/html5/thumbnails/16.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062512/55204d7049795902118c2578/html5/thumbnails/17.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062512/55204d7049795902118c2578/html5/thumbnails/18.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062512/55204d7049795902118c2578/html5/thumbnails/19.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062512/55204d7049795902118c2578/html5/thumbnails/20.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062512/55204d7049795902118c2578/html5/thumbnails/21.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062512/55204d7049795902118c2578/html5/thumbnails/22.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062512/55204d7049795902118c2578/html5/thumbnails/23.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062512/55204d7049795902118c2578/html5/thumbnails/24.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062512/55204d7049795902118c2578/html5/thumbnails/25.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062512/55204d7049795902118c2578/html5/thumbnails/26.jpg)
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