Bausteine zum objektorientierten Programmieren mit Delphi

Slides:



Advertisements
Ähnliche Präsentationen
Blue J.
Advertisements

Objektorientierte Programmierung
Unter- und Oberklassen: Beispiel
Objektorientierte Programmierung
Christos, Kornelia, Jan Christos, Kornelia, Jan Entwicklungsumgebung Versteht unseren Java Programm Code Versteht unseren Java Programm.
Christos, Kornelia, Jan Christos, Kornelia, Jan Entwicklungsumgebung Versteht unseren Java Programm Code Versteht unseren Java Programm.
Christos, Kornelia, Jan Christos, Kornelia, Jan Entwicklungsumgebung Versteht unseren Java Programm Code Versteht unseren Java Programm.
Paul, Morten, Yannick Blue J. Entwicklungsumgebung versteht Java Programmcode versteht Java Programmcode Für die Entwicklung eigener Software.
Ausnahmen HS Merseburg (FH) WS 06/07.
Java: Objektorientierte Programmierung
Java: Dynamische Datentypen
Indirekte Adressierung
Java: Referenzen und Zeichenketten
Java: Grundlagen der Objektorientierung
Abstrakte Klassen.
Dateien. Eine Datei wird in C++ als ein Stream, also als ein Objekt einer bestimmten Klasse dargestellt.
Ein Beispiel in Java.
Klassenvariable. Da man für jede Kuh bzw. jede Henne auf dem Markt den gleichen Preis für ein Liter Milch, bzw. den gleichen Preis für ein Ei bekommt,
Konstruktoren.
Vererbung. Das Prinzip der Vererbung im täglichen Leben:
Polymorphie (Vielgestaltigkeit)
Assoziationen (Beziehungen). Zwischen Objekten kann es eine Beziehung geben.
Polymorphie (Vielgestaltigkeit)
Objekte und Arbeitsspeicher
Dynamischer Speicher. In einer Funktion wird z.B. mit der Deklaration int i; Speicher auf dem sogenannten Stack reserviert. Wenn die Funktion verlassen.
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 5 Polymorphismus Sommersemester 2003 Lars Bernard.
Universität Dortmund, Lehrstuhl Informatik 1 EINI II Einführung in die Informatik für Naturwissenschaftler und Ingenieure.
Programmieren mit JAVA
Vererbung Spezialisierung von Klassen in JAVA möglich durch
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.
DVG Klassen und Objekte
Delphi II - OOP IFB Fortbildung
Entwurfs- und Implementationsdiagramme
Grundkonzepte der objektorientierten Programmierung Teil 3
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Objektorientierte Konzepte/UML Geoinformation I Vorlesung 2 WS 2000/2001.
Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
OOP-Begriffe Abstraktion Modellieren Klasse Objekt Attribute Methoden
Dynamische Datentypen
Informatik Zustandsorientiertes Modellieren und Programmieren 2.4 Datenkapselung 2.4 Datenkapselung Objekte können miteinander kommunizieren, indem.
2. Zustandsorientiertes Modellieren 2.4 Datenkapselung
Objektorientierte Programmierung
EPROG Tutorium #3 Philipp Effenberger
Objektorientierung.
Objektorientierte Modellierung mit UML
Paul, Morten, Yannick Blue J. Entwicklungsumgebung  versteht Java Programmcode  Für die Entwicklung eigener Software  Durch die Programmierung.
Polymorphie (Vielgestaltigkeit). Wenn eine Methode, wie z.B. print für verschiedene Programmteile steht (und z.B. einmal Objekte verschiedener Klassen.
Informatik I : Software höhere Programmiersprachen Java Klassen: hat Methoden (Funktionen) und Daten (Variablen) es kann mehrere Klassen geben nur eine.
Java-Kurs - 7. Übung Besprechung der Hausaufgabe Referenzvariablen
OOP-Begriffe Abstraktion Modellieren Klasse Objekt Attribute Methoden
Java-Kurs Übung Besprechung der Hausaufgabe
Einführung in die Programmierung mit Java
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer, Dr. Gerhard Gröger Einführung in die Programmierung mit Java 5. Vorlesung WS 2002/2003.
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.
Sichtbarkeit einschränken
Paul, Morten, Yannick Blue J. Entwicklungsumgebung  versteht Java Programmcode  Für die Entwicklung eigener Software  Durch die Programmierung.
Objektorientierte Programmierung (OOP)
Abstrakte Klassen und das Interface-Konzept
Objektorientierte (OO) Programmierung
Christos, Kornelia, Jan Christos, Kornelia, Jan Entwicklungsumgebung Versteht unseren Java Programm Code Versteht unseren Java Programm.
C++ FÜR cOMPUTERSPIELENTWICKLER
1 Grundsätze objektorientierter Programmierung. Dr. Wolfram Amme, Grundsätze objektorientierter Programmierung, Informatik II, FSU Jena, SS Objektorientierte.
Konstruktoren.
OOP II.
Implementieren von Klassen
 Präsentation transkript:

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

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 Stempel herstellen Handwerkszeug Stempelabdruck erstellen Lesen oder Ausfüllen von Stempelfeldern ???

Erstellen Sie die Klasse TPerson mit UMLed Klassen und Objekte Stempel Stempelfelder Ausfüllen von Stempelfeldern Lesen von Stempelfeldern objektspezifische Operation Auf die Nomenklatur der Parameter hinweisen: pNachname = parameterNachname Erstellen Sie die Klasse TPerson mit UMLed

Sichtbarkeit - privat # protected + public ++ published 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

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 Speichern Sie TPerson in einen Ordner „Personen“

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)

'View' der Objekt-attribute Programm: Oberfläche 'View' der Objekt-attribute Erstellen Sie mit Delphi die Oberfläche und speichern Sie das Projekt im Ordner „Personen“ Hinweis auf die wichtige Rolle des Projektordners unter Delphi Methodischer Hinweis auf das GroupPanel zur Darstellung des Objektes und seiner Attribute Steuerung 'Controller'

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

Ergänzen Sie Ihre Klassendeklaration! UMLed: Konstruktor Delphi Export unter UMLed nicht vergessen Ergänzen Sie Ihre Klassendeklaration!

person:=TPerson.create; 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;

Programm: Objekterzeugung FormCreate ist ein besonders günstiger Ort der Objekterzeugung für Anfänger

UML: HAT-Beziehung

Datenkapselung Daten (Attribute, Felder) eines Objekts sind von außen nur über öffentliche Zugriffsmethoden lesbar oder veränderbar Am Anfang ist es günstig immer zwei getrennte Prozeduren für den Datenzugrifff zu schreiben Datenzugriff Datenzugriff

Programm: Datenkapselung Die beiden Datenzugriffsprozeduren erleichtern die Übersicht Ergänzen Sie Ihr Programm

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

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

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:

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

BMI: Personen-Modell Was stimmt hier nicht ?

BMI - Programm Die View wird hier durch sog polling der Daten des Objekt aufgefrischt. Eine andere Methode ist, dass das Objekt selbst eine Nachricht (Ereignis) generiert, die ein Update der View bewirkt.

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

BMI - mehrere Personen

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

Ampel

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"

Würfelspiel - Modell

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.

Würfelspiel - Spielobjekt

Automodell (Modell nach Tobias Selinger)

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 !

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

Ein einfaches Konto

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

Person mit 3 Konten

Person mit 3 Konten

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

Vererbung Kernprinzip der OO-Softwareentwicklung Einfaches Beispiel aus der Schulwelt Diese Übersicht steht natürlich nicht am Anfang des Unterrichts Weitere Spezifizierungen möglich: Klassenlehrer, Schulsprecher, Paten ... Sekretärin, Hausmeister usw.

Vererbung - Generalisierung TPerson

Vererbung - Superklasse

Vererbung - GUI

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

Vererbungshierarchie

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

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öglich Es 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)

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:=LE L.beurteilen TSchulleiter.beurteilen falls L:=SL Aulösung zur Laufzeit

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

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;

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

KA: Artikelverwaltung

KA-NT: Reiseverwaltung

KA: Blinklicht

KA: Kinokasse