Delphi II - OOP IFB Fortbildung

Slides:



Advertisements
Ähnliche Präsentationen
Konzepte des Anfangsunterrichts Informatik in der 11.1
Advertisements

Programmierung II Prof. Dr. Michael Löwe
Kapselung , toString , equals , Java API
IT – Struktur an Schulen
Pflege der Internetdienste
Unter- und Oberklassen: Beispiel
Java: Objektorientierte Programmierung
Java: Dynamische Datentypen
Indirekte Adressierung
FH-Hof Indirekte Adressierung Richard Göbel. FH-Hof Einfache Speicherung von Daten Eine "einfache" Deklaration definiert direkt eine Speicherplatz für.
Java: Referenzen und Zeichenketten
Polymorphie (Vielgestaltigkeit)
Dynamischer Speicher. In einer Funktion wird z.B. mit der Deklaration int i; Speicher auf dem sogenannten Stack reserviert. Wenn die Funktion verlassen.
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
Einführung in die Programmierung mit Java
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik I Vorlesung Listen-
PRJ 2007/1 Stefan Dissmann Motivation Problem: gleiche Datenstrukturen werden für verschiedene Objekte gebraucht: z.B. Listen von Studierenden, Kunden,
PKJ 2005/1 Stefan Dissmann Ausblick Es fehlen noch: Möglichkeiten zum Strukturieren größerer Programme Umgang mit variabler Zahl von Elementen Umgang mit.
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher im Kurs erarbeitete Konzepte(1): Umgang mit einfachen Datentypen Umgang mit Feldern Umgang mit Referenzen.
PKJ 2005/1 Stefan Dissmann Zusammenfassung der Vorwoche Variable stehen für (einen) Wert, der sich im Programmablauf ändern kann. Variablen besitzen einen.
Zusammenfassung Vorwoche
Teil I - Erstellen einer Excel-Tabelle zur Deckungsbeitragsrechnung
Eingabe und Kodierung von Daten in SPSS
DVG Einführung in Java1 Einführung in JAVA.
DVG Klassen und Objekte
Einführung in die Programmierung Klassendefinition und Objekte
VFP Class Browser. © 1999 TMN-Systemberatung GmbH Einsatz des Class Browser n Managen von Klassen inklusive, ändern, umbenennen, löschen und umdefinieren.
Ralf KüstersDagstuhl 2008/11/30 2 Ralf KüstersDagstuhl 2008/11/30 3.
1 Teil 4 Übung: Uhr. 2 Zielsetzung Ziel ist es, mit Hilfe objektorientierter Modellierung ein System zu entwickeln, mit dem eine einfache Uhr simuliert.
Delphi Eine objektorientierte Programmiersprache © Beushausen 2000.
Objektorientierte Modellierung
Objektorientierte Modellierung
PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen,
Eine Einführung in die Entwicklung ereignisgesteuerter Programme
Druckerinstallation HP1050C
Kollektionen in Java Aufzählungstypen, Generische Typen
Delphi II - OOP Objektorientiertes Programmieren in Delphi:
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
HORIZONT 1 XINFO ® Das IT - Informationssystem Java Scanner HORIZONT Software für Rechenzentren Garmischer Str. 8 D München Tel ++49(0)89 / 540.
Einführung in die objektbasierte Programmierung mit Delphi
MVC-Uhr Siehe auch K. Merkert HSG-Kaiserslautern
Bausteine zum objektorientierten Programmieren mit Delphi
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Auslegung eines Vorschubantriebes
HORIZONT 1 XINFO ® Das IT - Informationssystem PL/1 Scanner HORIZONT Software für Rechenzentren Garmischer Str. 8 D München Tel ++49(0)89 / 540.
Ganzheitliches Projekt-, Ressourcen- und Qualitätsmanagement 1 Reports und AddOns Auf den folgenden Seiten wird Ihnen die Funktionsweise der Reports und.
Grundlagen von Objekt-Pascal Erstellt von J. Rudolf überarbeitet von H.Brehm.
CuP - Java Neunte Vorlesung Entspricht Kapitel 4.2 und 5 des Skriptums
AddIn erstellen Herbers Excel-Server - der Workshop Angebote des Excel-Servers: Die Excel/VBA-Beispiele Die Excel/VBA-BeispieleDie Excel/VBA-BeispieleDie.
ICT – Modul Textverarbeitung
Erste Schritte in DELPHI
1 Erstellung von Funktionen und FBs Inklusive der Erstellung einer Library.
Objektorientierte Modellierung mit UML
Mehrfachausführungen Schleifen in VB 2010 ee. Programmidee: Der Anwender gibt eine Zahl ein, und das Programm gibt die Mehrfachen dieser Zahl aus (das.
Alois Schütte Advanced System Programming 2 Interprozeßkommunikation  2.1 JVM Ablaufumgebung  2.2 Java Native Interface (JNI)  Verwendung von.
Der Datentyp Verbund (record)
Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 1 Algorithmen und Datenstrukturen 1 SS 2002 Mag.Thomas.
Java-Kurs Übung Besprechung der Hausaufgabe
Institut für Kartographie und Geoinformation Prof. Dr. L. Plümer, Dipl.-Ing. D. Dörschlag, Dr. G. Gröger Einführung in die Programmierung mit Java 13.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer, Dr. Thomas H. Kolbe Einführung in die Programmierung mit Java 9. Vorlesung WS 2001/2002.
Objektorientierte Programmierung (OOP)
Diskrete Mathe Diskrete Mathematik I Listen Vorlesung 4.
Tutorium Software-Engineering SS14 Florian Manghofer.
Units und Übung 7 Barbara Scheuner
Entwicklungsumgebung Lazarus
Objektorientierte Programmierung
Grundkurs Informatik 11-13
Implementieren von Klassen
 Präsentation transkript:

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? GUI-Klasse Fach-Klasse Beziehung? Aufrufe

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

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

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 ?

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

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;

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.

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

Stoppuhr: Modularisierung? Aufteilung in Module?

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

Stoppuhr: Klassendiagramm Stoppuhr (ohne GUI) Sekunden Hundertstel

Stoppuhr: Klassendiagramm Stoppuhr (ohne GUI) Sekunden Hundertstel

Stoppuhr: Klassendiagramm Stoppuhr (ohne GUI) Sekunden Hundertstel

Stoppuhr: Klassendiagramm Stoppuhr (ohne GUI) Sekunden Hundertstel

Stoppuhr: Klassendiagramm Stoppuhr (ohne GUI) Sekunden Hundertstel

Stoppuhr: Klassendiagramm Stoppuhr (ohne GUI) Sekunden Hundertstel

Stoppuhr: Klassendiagramm Beziehung?

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

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

Kontoverwaltung

Kontoverwaltung

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