1 / 54

Bausteine zum objektorientierten Programmieren mit Delphi

Bausteine zum objektorientierten Programmieren mit Delphi. Gregor Noll 2009. Übersicht. Klassen und Objekte - UMLed OOP - Rahmenprogramm Beispiele zum OOP aus dem Unterricht Vererbung - ein Einstiegsbeispiel Kursarbeiten mit OOP Ihre Erfahrungen - Ihre Beispiele. Stempel herstellen.

lluvia
Download Presentation

Bausteine zum objektorientierten Programmieren mit Delphi

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. Bausteine zum objektorientierten Programmieren mit Delphi Gregor Noll2009

  2. Übersicht • Klassen und Objekte - UMLed • OOP - Rahmenprogramm • Beispiele zum OOP aus dem Unterricht • Vererbung - ein Einstiegsbeispiel • Kursarbeiten mit OOP • Ihre Erfahrungen - Ihre Beispiele

  3. Stempel herstellen Handwerkszeug Stempelabdruck erstellen Lesen oder Ausfüllen von Stempelfeldern ??? Klassen und Objekte • Modellieren und Erstellen von Klassen • Einsatz von UMLEd • Erzeugen von Objekten • Zugriffe auf Objekte • get / set – Methoden • Aufrufe objektspezifischer Operationen: Anfragen oder Aufträge

  4. Stempel Stempelfelder Ausfüllen von Stempelfeldern Lesen von Stempelfeldern objektspezifische Operation Erstellen Sie die Klasse TPerson mit UMLed Klassen und Objekte

  5. Sichtbarkeit • - privat • Zugriff nur innerhalb der Klasse • # protected • Zugriff nur innerhalb der Klasse und der von ihr abgeleiteten Klassen • + public • Zugriff von überall her • ++ published • public mit zusätzlichen internen Informationen

  6. Speichern Sie TPerson in einen Ordner „Personen“ Klassen in Delphi • Für jede Klasse eine eigene Unit anlegen • das macht UMLed automatisch: rechte Maustaste – Delphi Export TPerson unit mTPerson; Datei mTPerson.pas; • vorher lässt sich gegebenenfalls der Quelltext bearbeiten

  7. Rahmenprogramm • Um mit einer Klasse zu arbeiten erstellen wir ein Delphiprogramm, das • Objekte der Klasse bereitstellt(„Stempelabdrücke“ erzeugt) • eine Oberfläche für den Umgang mit den Objekten der Klasse bereitstellt • Darstellung (View) der Attribute des Objekts • Steuerung der Methodenaufrufe (Controller)

  8. Erstellen Sie mit Delphi die Oberfläche und speichern Sie das Projekt im Ordner „Personen“ Programm: Oberfläche 'View' der Objekt-attribute Steuerung 'Controller'

  9. Programm: Objekterzeugung • Ein Objekt wird mit einer speziellen constructor-Methode erzeugt • Es handelt sich dabei um eine Methode der Klasse • Alle Objektfelder werden standarmäßig vom System automatisch initialisiert. Anschließend werden eventuelle Anweisungen der constructor-Methode ausgeführt • Der Name des Konstruktors ist i. d. Regel create • Analog gibt es auch eine destructor-Methode zum Vernichten eines Objekts • Der Name ist i. d. Regel destroy • Wenn die Methoden in einer Klasse fehlen, wird automatisch die entsprechende Methode der Superklasse bis hin zu TObject benutzt

  10. Ergänzen Sie Ihre Klassendeklaration! UMLed: Konstruktor

  11. Objekterzeugung • Aufgerufen wird der Konstruktor als eine Klassenmethode person:=TPerson.create; Klasse • Der Konstruktor gibt einen Verweis auf das Objekt zurück, das er erstellt • Benötigt wird deshalb die Deklaration einer Referenz (Zeiger-) Variable für das Objekt:person: TPerson; • Dazu muss die Unit "mTPerson" bekannt sein (HAT-Beziehung in UML)uses mTPerson;

  12. Programm: Objekterzeugung

  13. UML: HAT-Beziehung

  14. Datenkapselung • Daten (Attribute, Felder) eines Objekts • sind von außen nur über öffentliche Zugriffsmethoden lesbar oder veränderbar Datenzugriff Datenzugriff

  15. Ergänzen Sie Ihr Programm Programm: Datenkapselung

  16. Nachrichten an Objekte • An ein Objekt eine Nachricht senden bedeutet, eine Methode des Objekts aufzurufen, als • Aufforderung an das Objekt etwas zu tun • wird im Objekt als Prozedur behandelt • Anfrage an das Objekt nach Information • wird im Objekt als Funktion behandelt

  17. Implementieren Sie die Methode „TPerson.spricht" Nachricht als Anfrage

  18. Nachricht als Aufforderung • Das "sprechen lassen" könnte auch als Aufforderung an die Person, etwas zu sagen, implementiert werden und z. B. als Soundausgabe realisiert werden:

  19. BMI • Schreiben Sie ein Programm, das den BodyMassIndex einer Person ausgibt. • Entwickeln Sie mit UMLed eine Klasse TPerson, welche die notwendigen Attribute und Methoden enthält • Infos: Google-Suche mit "BMI Düsseldorf",dann "BMI-Rechner" wählen

  20. BMI: Personen-Modell Was stimmt hier nicht ?

  21. BMI - Programm

  22. BMI - mehrere Personen • Erzeugung vieler Personen(-objekte) problemlos möglich • im einfachsten Fall eine (dynamische) array-Struktur verwenden • Alle Personen haben die gleichen Attribute und Methoden • Alle Personen haben individuelle Attributwerte

  23. BMI - mehrere Personen

  24. Ampel • Modellierung einer Verkehrsampel • Steuerung mit internen Zuständen • TZustaende = (ge,ro,gr,roge) • View der Ampel über Bilder, die je nach Zustand sichtbar oder unsichtbar sind • Schalten der Ampel mit Hilfe eines Timers

  25. Ampel

  26. Würfelspiel • Drei Würfel werden geworfen. Sie gewinnen, wenn mindestens zwei Würfel die gleiche Zahl zeigen. • Entwerfen Sie zur Programmierung eine Klasse "TWuerfel" und benutzen die Bilder im Verzeichnis "Bilder"

  27. Würfelspiel - Modell

  28. Würfelspiel - Spielobjekt • Wir können das Würfelspiel auch so modellieren, dass wir eine Klasse "TSpiel" entwerfen, welche selbst wieder eine Klasse "TWuerfel" kennt (HAT-Beziehung) und deshalb für die Erzeugung und Vernichtung von Würfeln verantwortlich ist.

  29. Würfelspiel - Spielobjekt

  30. Automodell (Modell nach Tobias Selinger)

  31. Nützliche Dialoge • showmessage('Gut gemacht!'); • e := inputbox('Titel','Anfrage','Vorgabe') • e nimmt die Eingabe der Box als string auf • bei "Abbrechen" erhält e den Vorgabewert !

  32. Ein einfaches Konto Nach der Erzeugung ist keine Änderung von Nummer und Inhaber mehr möglich!

  33. Ein einfaches Konto

  34. Person mit mehreren Konten • Eine Person soll über mehrere Bankkonten verfügen • Verwendete Klassen • TPerson • TKonto • wird von TPerson verwaltet

  35. Person mit 3 Konten

  36. Person mit 3 Konten

  37. Erweiterung • Kontennummern prüfen • Auflösen eines Kontos nur mit Nullstellen des Kontos • Überweisen von einem Konto auf ein anderes • Mehrere Personen mit mehreren Konten • Überweisungen zwischen Konten verschiedener Personen • ???

  38. Vererbung • Kernprinzip der OO-Softwareentwicklung • Einfaches Beispiel aus der Schulwelt

  39. Vererbung - Generalisierung TPerson

  40. Vererbung - Superklasse

  41. Vererbung - GUI

  42. Vererbung - Spezialisierung • Entwicklung von Unterklassen mit speziellen Attributen oder Methoden Schulleiter beurteilt Lehrer

  43. Vererbungshierarchie

  44. Vererbung - Überschreiben • Die Methode "beurteilen" der Klasse TSchulleiter überschreibt die virtuelle gleichnamige Methode der Superklasse • Dies geschieht explizit mit Hilfe der Deklaration • function beurteilen:string; overide

  45. Zuweisungskompatibilität • Objekte der Superklasse können auf Objekte ihrer Unterklasse verweisen, aber nicht umgekehrt • L:TLehrer; SL:TSchulleiter; • L:=SL ist möglich (jeder SL ist L) • SL:=L ist nicht möglichEs wäre sonst eine Referenz SL.xy auf eine Objektkomponente xy möglich, die für SL, aber nicht für L existiert. (z. B. haben SL ein persönliches Dienstzimmer)

  46. Polymorphie • Die Zuweisungskompatibilität und die sog. späte Bindung ( d. h. die Auflösung von Methodenadressen erst zur Laufzeit) ermöglichen es, mit einem Methodenaufruf Aktionen auszulösen, die vom aktuellen Objekt beim Aufruf abhängen • L, LE :TLehrer und SL:TSchulleiter TLehrer.beurteilen falls L:=LEL.beurteilen TSchulleiter.beurteilen falls L:=SL Aulösung zur Laufzeit

  47. statisch - dynamisch • Durch die Deklaration im Quelltext erfolgt eine statische Typenbindung • L:TLehrer; SL:TSchulleiter; • Typenprüfungen finden auf Basis des statischen Typs statt • Fehlt etwa die Methode "beurteilen" in TLehrer, so erfolgt bei L.beurteilen eine Fehlermeldung des Compilers trotz einer vorherigen Zuweisung L:=SL • Die Methodensuche zur Laufzeit basiert auf dem aktuellen (dynamischen) Typ des Objektes zur Laufzeit

  48. inherited • Das Schlüsselwort inherited erlaubt den Aufruf der überschriebenen Methode der Superklasse • Wir können dem Schulleiter auf diese Weise nach der Beurteilung des Lehrers zusätzlich die Beurteilung des Schülers in seiner Methode "beurteilen" zuweisen • SBeurteilung := inherited beurteilen;

  49. Kursarbeiten • Zweigeteilt • Fragen zu den Konzepten • Programmierung auf Papier bzw. am Computer • Einsatz von UMLEd • Vorgabe von Programmgerüsten • Hinweise zum zeitlichen Umfang Kursarbeit

More Related