Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Delphi II - OOP IFB Fortbildung

Ähnliche Präsentationen


Präsentation zum Thema: "Delphi II - OOP IFB Fortbildung"—  Präsentation transkript:

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

2 Ticketautomat: Formular

3 Ticketautomat: Formular-Klasse

4 Ticketautomat: Klassendiagramm
Aufrufe

5 Ticketautomat: Beziehung?
GUI-Klasse Fach-Klasse Beziehung? Aufrufe

6 Ticketautomat: Assoziation
GUI-Klasse „kennt“-Beziehung: Assoziation Fach-Klasse Aufrufe

7 Ticketautomat: Units GUI-Klasse „kennt“-Beziehung: Fach-Klasse
unit Unit1; uses Windows, Forms, mTTicketautomat; type TForm1 = class(TForm) „kennt“-Beziehung: Assoziation Fach-Klasse unit mTTicketautomat; Uses Dialogs, SysUtils; type TTicketautomat = class Aufrufe

8 Wer – d.h. welche Klasse? – führt den Dialog mit dem Benutzer ?
Benutzer-Dialog Wer – d.h. welche Klasse? – führt den Dialog mit dem Benutzer ? GUI-Klasse oder Fachklasse ?

9 Wer – d.h. welche Klasse? – führt den Dialog mit dem Benutzer ?
Benutzer-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

10 Wer – d.h. welche Klasse? – führt den Dialog mit dem Benutzer ?
Benutzer-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 Beispiel: - 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;

11 Zum 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 Dialogs folgende „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.

12 Übung zum Ticketautomat und UML-Editor: Einnahmen abholen
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, die dem 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, und ergä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?

13 Stoppuhr: Modularisierung?
Aufteilung in Module?

14 Stoppuhr: Klassendiagramm
Stoppuhr (ohne GUI) Sekunden Hundertstel Erforderliche Klassen?

15 Stoppuhr: Klassendiagramm
Stoppuhr (ohne GUI) Sekunden Hundertstel

16 Stoppuhr: Klassendiagramm
Stoppuhr (ohne GUI) Sekunden Hundertstel

17 Stoppuhr: Klassendiagramm
Stoppuhr (ohne GUI) Sekunden Hundertstel

18 Stoppuhr: Klassendiagramm
Stoppuhr (ohne GUI) Sekunden Hundertstel

19 Stoppuhr: Klassendiagramm
Stoppuhr (ohne GUI) Sekunden Hundertstel

20 Stoppuhr: Klassendiagramm
Stoppuhr (ohne GUI) Sekunden Hundertstel

21 Stoppuhr: Klassendiagramm
Beziehung?

22 Stoppuhr: Klassendiagramm
Assoziation:„kennt“ Aggregation:„hat“

23 Übung: Stoppuhr Definieren Sie im UML-Editor die Klasse TZaehler. Exportieren Sie die zugehörige Delphi-Unit unter dem Dateinamen mTZaehler.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!

24 Kontoverwaltung

25 Kontoverwaltung

26 Kontoverwaltung Problem: gegenseitige „kennt“-Beziehungen! (Überkreuz-Referenz mehrerer Units in Delphi nicht erlaubt!) Lösung: a) Mehrere Klassen in eine Unit b) Redesign mit „Koppel“-Klassen


Herunterladen ppt "Delphi II - OOP IFB Fortbildung"

Ähnliche Präsentationen


Google-Anzeigen