Delphi II - OOP - PowerPoint PPT Presentation

About This Presentation
Title:

Delphi II - OOP

Description:

Title: Strukturierte Programmierung Author: Tobias Selinger Last modified by: TS Created Date: 8/12/2001 2:57:28 PM Document presentation format: Bildschirmpr sentation – PowerPoint PPT presentation

Number of Views:397
Avg rating:3.0/5.0
Slides: 27
Provided by: TobiasS1
Category:
Tags: oop | bluej | delphi

less

Transcript and Presenter's Notes

Title: Delphi II - OOP


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.Textinttostr(Automat.gibAk
tuelleAnzahlung)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 (ltNachrichtgt) zeigt einen String
    an.
  • Eingabefenster
  • InputBox (ltTitelgt, ltFragegt, ltDefaultwertgt)
    liefert den eingegebenen String.
  • InputQuery (ltTitelgt, ltFragegt, ltString-Variablegt)
    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
Stoppuhr Klassendiagramm
22
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! (Überkr
euz-Referenz mehrererUnits in Delphi nicht
erlaubt!)
Lösunga) Mehrere Klassen in eine Unitb)
Redesign mit Koppel-Klassen
Write a Comment
User Comments (0)
About PowerShow.com