1 / 26

Delphi II - OOP

Delphi II - OOP. IFB Fortbildung Grundkonzepte der OOP: Beziehungen zwischen Objekten Bsp: Ticketautomat – Stoppuhr - Kontoverwaltung 7.11.2006 Tobias Selinger. Ticketautomat: Formular. Ticketautomat: Formular-Klasse. Ticketautomat: Klassendiagramm. Aufrufe. Ticketautomat: Beziehung?.

sasha
Download Presentation

Delphi II - OOP

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Delphi II - OOP IFB Fortbildung Grundkonzepte der OOP: Beziehungen zwischen Objekten Bsp: Ticketautomat – Stoppuhr - Kontoverwaltung 7.11.2006 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 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. Benutzer-Dialog • Wer – d.h. welche Klasse? – führt den Dialog mit dem Benutzer ? GUI-Klasse oder Fachklasse ?

  9. 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. 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 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;

  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 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.

  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, 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?

  13. Stoppuhr: Modularisierung? Aufteilung in Module?

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

  15. Stoppuhr: Klassendiagramm Stoppuhr (ohne GUI) Hundertstel Sekunden

  16. Stoppuhr: Klassendiagramm Stoppuhr (ohne GUI) Hundertstel Sekunden

  17. Stoppuhr: Klassendiagramm Stoppuhr (ohne GUI) Hundertstel Sekunden

  18. Stoppuhr: Klassendiagramm Stoppuhr (ohne GUI) Hundertstel Sekunden

  19. Stoppuhr: Klassendiagramm Stoppuhr (ohne GUI) Hundertstel Sekunden

  20. Stoppuhr: Klassendiagramm Stoppuhr (ohne GUI) Hundertstel Sekunden

  21. Beziehung? Beziehung? Stoppuhr: Klassendiagramm

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

  23. Ü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!

  24. Kontoverwaltung

  25. Kontoverwaltung

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

More Related