Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Delphi-Schulung am Autor: Jörg Altegoer

Ähnliche Präsentationen


Präsentation zum Thema: "Delphi-Schulung am Autor: Jörg Altegoer"—  Präsentation transkript:

1 Delphi-Schulung am 23.09.2002 Autor: Jörg Altegoer
UST GmbH Delphi-Schulung am Autor: Jörg Altegoer

2 Inhalt Die Schulung ist zweigeteilt: Object Pascal
Kurzer Überblick über die Fähigkeiten von Delphi Objektorientiertes Programmieren Allgemeine Einführung Spezielle Themen Übungen Einfache Klassenhierarchie (grafische Objekte) Erweiterungen des Beispiels Dateikopierer © 2002 by UST GmbH

3 Object-Pascal Delphi‘s Pascal-Dialekt Schlüsselwörter Datentypen
Konstanten, Variablen, Typen Ablaufsteuerung Prozeduren und Funktionen Exceptions © 2002 by UST GmbH

4 Schlüsselwörter (I) Object-Pascal © 2002 by UST GmbH

5 Schlüsselwörter (II) - Direktiven
Object-Pascal © 2002 by UST GmbH

6 Datentypen Boolean (ByteBool, WordBool, LongBool)
Integer, ShortInt, SmallInt, Longint, Int64 Byte, Word, LongWord, Cardinal Real48, Single, Double, Real, Extended, Comp, Currency String, PChar, weitere String-Typen Prozedurale Typen Keine neuen Operatoren wie in C Aber Datentypen, z.B.: type real = double; Object-Pascal © 2002 by UST GmbH

7 Konstanten, Variablen, Typen
Deklaration im Interface-Teil einer Unit oder vor begin einer Prozedur/Funktion Konstanten Const csDBTrue = ´Y´; csDBFalse = ´N´; TrueFalseArray : array[0..1] of string = (csDBTrue, csDBFalse); Variablen: var i : integer; s : string; a : array[0..10] of double; Typen Type string50 = string[50]; USTTrueFalse = (tfTrue, tfFalse); TPoint = record X, Y : integer; end; Object-Pascal © 2002 by UST GmbH

8 Ablaufsteuerung if..then..else case..of for..do while..do
repeat..until Abbruchanweisungen: exit, abort, halt, ... Object-Pascal © 2002 by UST GmbH

9 Prozeduren Kopf mit Parametern Lokale Konstanten, Variablen, Typen
Begin..end Beispiel: „Normale“ Parameter Const-Parameter Var-Parameter Optionale Parameter Object-Pascal © 2002 by UST GmbH

10 Funktionen „Prozeduren mit Rückgabewert“
Rückgabe mit: Result := <irgendwas>; Result muß nicht deklariert werden – gibt‘s immer in jeder Funktion Beispiel... Object-Pascal © 2002 by UST GmbH

11 Exceptions Oder: Object-Pascal try Screen.Cursor := crHourGlass;
...z.B. in Datenbank schreiben Screen.Cursor := crDefault; except raise; end; Oder: try... finally <Speicher freigeben> -> wird immer ausgeführt! Object-Pascal © 2002 by UST GmbH

12 Objektorientierung - Einführung
Objektorientierte Sprachen Grundprinzipien Klassen – Objekte – Instanzen Kapselung, Abgeschlossenheit, Vererbung Polymorphie Gültigkeitsbereiche Virtuelle und abstrakte Methoden Objektorientiertes Programmieren © 2002 by UST GmbH

13 Objektorientierte Sprachen
Delphi: Ja, vollständig objektorientiert C++: Ja, vollständig objektorientiert Visual Basic: Nur zum Teil Keine Vererbung Polymorphie nur sehr eingeschränkt PHP: Nur zum Teil Keine Konstruktoren und Destruktoren PowerBuilder: Ja, vollständig objektorientiert Java: Ja, vollständig objektorientiert Welche weiteren Sprachen kennst Du noch? Objektorientiertes Programmieren © 2002 by UST GmbH

14 Objektorientiertes Programmieren
Nachteil von strukturierten Typen: Enthalten „nur“ Daten Können mit den enthaltenen Daten nichts „tun“ Können nicht auf z.B. Benutzereingaben „reagieren“ Daher: Objekte bauen... Programmierprinzip: Programm ist keine Ansammlung von Funktionen mehr Programm besteht aus einer Reihe von Objektbeschreibungen Programm verwendet „Instanzen“ der Objektbeschreibungen, die untereinander agieren (Aktionen ausführen und Nachrichten austauschen) Objektorientiertes Programmieren © 2002 by UST GmbH

15 Objekte Eigenschaften Methoden Ereignisse Daten des Objekts
z.B. Rechteck: x, y, Länge, Breite Methoden Verhalten/Fähigkeiten des Objekts z.B. Rechteck: zeichne Rechteck Ereignisse Reaktionsweisen des Objekts z.B. Rechteck: Meldung ausgeben bei Klick Objektorientiertes Programmieren © 2002 by UST GmbH

16 Klassen – Objekte – Instanzen
Klasse (=Objekttyp): Spezifikation von Eigenschaften Methoden Ereignisse Zugriffsrechte / Gültigkeitsbereiche Objekt: Allgemeiner Begriff (Zusammenfassung) für alle Instanzen einer Klasse Instanz: Konkretes Objekt mit gefüllten Daten (Eigenschaften) Objektorientiertes Programmieren © 2002 by UST GmbH

17 Kapselung Bedeutet: „Information Hiding“:
Zusammenfassung von Daten und Fähigkeiten zu einem Objekt. „Information Hiding“: Verstecken des „Eingemachten“ nach außen Ermöglicht wird nur der Zugriff auf die notwendigen Eigenschaften, Methoden und Ereignisse Beispiel Kreis: von außen kann zwar auf Eigenschaft „Fläche“ zugegriffen werden, nicht jedoch auf die zur Berechnung herangezogene Funktion. Objektorientiertes Programmieren © 2002 by UST GmbH

18 Abgeschlossenheit Vollständigkeit: Nichtzugehörigkeit:
Schnittstelle der Klasse sollte möglichst vollständig sein, damit sie sinnvoll eingesetzt werden kann. Gegenbeispiel Kreis: wenn zwar Radius, aber keine Fläche  Benutzer muss Fläche selber berechnen) Nichtzugehörigkeit: Eigenschaften und Methoden, die nichts mit dem Sinn und Zweck der Klasse zu tun haben, haben dort nichts verloren Beispiel Kreis: Straße und Hausnummer sinnlos. Objektorientiertes Programmieren © 2002 by UST GmbH

19 Vererbung / Inheritance
Aufteilung in: Ober- und Unterklassen Unterklassen: „erben“ alle Eigenschaften und Methoden Können Methoden der Oberklasse bei Bedarf ändern Hinzufügen weiterer Eigenschaften und Methoden Vorteile: Neucodierung ähnlicher Funktionen kann unterbleiben Verwendung der geerbten Fähigkeiten Inheritance: Aufruf der geerbten Methode. Delphi: inherited Objektorientiertes Programmieren © 2002 by UST GmbH

20 Vererbung - Beispiel Oberklasse: Allgemeines Grafikobjekt
x-Koordinate z-Koordinate Methode: Zeichnen Unterklassen: Kreis: Radius Rechteck: Länge Breite Geerbt: x-/y-Koordinate, Zeichnen-Methode Objektorientiertes Programmieren © 2002 by UST GmbH

21 Polymorphie „Vielgestaltigkeit“ Beispiel: Kreis und Rechteck
Verschiedene verwandte Objekte haben Funktionen mitgleichem Namen, implementieren sie aber jeweils auf andere Art und Weise. Arbeitsvariablen können den Typ einer Oberklasse haben, aber auf eine Instanz einer Unterklasse verweisen. Beispiel: Kreis und Rechteck Beide haben Eigenschaft „Flaeche“, die sich der Methode „GetFlaeche“ bedient Beiden haben Methode „GetFlaeche“, die jedoch unterschiedlich implementiert sind: Kreis: Pi * Radius² Rechteck: Länge * Breite Objektorientiertes Programmieren © 2002 by UST GmbH

22 Gültigkeitsbereiche Private Protected Public Published (Delphi)
Nur innerhalb des Objekts verfügbar Delphi auch: innerhalb derselben „Unit“ von außen Protected Hierauf kann von abgeleiteten Objekten zugegriffen werden Public Öffentliche Schnittstelle: von außen sichtbar Published (Delphi) Wie „Public“, es werden aber „Typinformationen“ beim Kompilieren erzeugt Können im Objektinspektor angezeigt werden Objektorientiertes Programmieren © 2002 by UST GmbH

23 Gültigkeitsbereiche - Übersicht
Zugriff von Innerhalb der Klasse Aus abgeleiteter Klasse außerhalb der Klasse (in Unit der Klasse) außerhalb der Klasse Objekt-Inspektor private Ja Nein protected public published Objektorientiertes Programmieren © 2002 by UST GmbH

24 Virtuelle und abstrakte Methoden
Virtuelle Methoden Können von abgeleiteten Klassen überschrieben werden Implementieren bereits ein bestimmtes Verhalten Delphi-Schlüsselwort: virtual bzw. dynamic. Abstrakte Methoden Definieren lediglich eine Schnittstelle Implementieren selber noch keinerlei Verhalten. Müssen von abgeleiteten Klassen überschrieben werden, um aufgerufen werden zu können Delphi: Zugriff auf abstrakte Methode gibt „abstrakten Fehler“ Überschreiben von Methoden Delphi: Schlüsselwort override Objektorientiertes Programmieren © 2002 by UST GmbH

25 Überladene Methoden Methoden mit gleichem Namen aber unterschiedlicher Schnittstelle Delphi-Schlüsselwort: overload Beispiel: Kreis: procedure Init(x, y, Radius : double); overload; Rechteck: procedure Init(x, y, Laenge, Breite : double); overload; Objektorientiertes Programmieren © 2002 by UST GmbH

26 Objektorientierung – Spezielle Themen
Konstruktoren / Destruktoren Gültigkeit von Objektinstanzen Objekte kopieren Schnittstellen Objektorientiertes Programmieren © 2002 by UST GmbH

27 Konstruktoren / Destruktoren
Erzeugen und Initialisieren einer Instanz einer Klasse Erst nach Aufruf des Konstruktors kann das Objekt verwendet werden! Destruktoren: Vernichten einer Instanz einer Klasse und Speicherfreigabe. Nach Aufruf des Destruktors kann auf die Objektinstanz nicht mehr zugegriffen werden! Objektorientiertes Programmieren © 2002 by UST GmbH

28 Konstruktoren Speicher für die Objektinstanz reservieren
Variablen werden mit Null-Werten initialisiert Programmierer-Anweisungen ausführen Rückgabe eines Zeigers auf die Objektinstanz Jede Klasse muss über einen Konstruktor verfügen Mehrere überladene Konstruktoren möglich Delphi: constructor Objektorientiertes Programmieren © 2002 by UST GmbH

29 Destruktoren Speicher für die Objektinstanz freigeben
Jede Klasse muss über einen Destruktor verfügen Mehrere überladene Destruktoren möglich, aber nicht empfehlenswert Delphi: mit inherited den ererbten Destruktor aufrufen Delphi: destructor Objektorientiertes Programmieren © 2002 by UST GmbH

30 Beispiel: Objektinstanz erzeugen
Procedure TuWas; Var oKreis : TKreis; Begin // Kreisinstanz erzeugen oKreis := TKreis.Create(100, 100, 50); // Kreis zeichnen oKreis.Zeichnen; // Kreisinstanz freigeben oKreis.Free; oKreis := nil; End; Objektorientiertes Programmieren © 2002 by UST GmbH

31 Prüfung einer Instanz auf Gültigkeit
Funktion Assigned Prüft, ob einer Objektvariablen eine Instanz zugeordnet ist Beispiel: if Assigned(oKreis) then ... Analog kann verwendet werden: if oKreis = nil then ... Bei Freigabe einer Objektinstanz aber späteren Verwendung der zugehörigen Arbeitsvariable: Dafür sorgen, dass Variable auf nil gesetzt wird: oKreis.Free; oKreis := nil; Dann gelingt Aufruf: if Assigned(oKreis) then ... Wenn oKreis := nil fehlt, ist Assigned(oKreis) = True trotz der freigegebenen Instanz! Konstante nil Reserviertes Wort für nicht zugewiesene Objektvariablen Objektorientiertes Programmieren © 2002 by UST GmbH

32 Objekte kopieren Referenz kopieren Daten kopieren
Mit oKreis2 := oKreis1 wird nur ein Verweis auf oKreis1 angelegt, nicht jedoch eine neue Instanz mit einer Kopie der Werte. Daten kopieren Objekt mit einer Methode Assign ausstatten, z.B.: procedure Assign(Dest : TKreis); begin Dest.Radius := self.Radius; end; Kopieren (ergibt Instanz mit gleichen Daten): oKreis2 := TKreis.Create; oKreis1.Assign(oKreis2); Objektorientiertes Programmieren © 2002 by UST GmbH

33 Schnittstellen (interface)
Eine Schnittstelle ist eine Zusammenfassung von nach außen sichtbaren Eigenschaften, Methoden und Ereignissen. Man kann vor Deklaration einer Klasse Schnittstellen deklarieren. Hat man angegeben, dass eine Klasse eine bestimmte Schnittstelle hat, muss sie sie auch implementieren! Delphi: Schlüsselwort interface Klassen immer ableiten von TInterfacedObject oder dessen Nachfahren. Objektorientiertes Programmieren © 2002 by UST GmbH

34 Schnittstellen - Beispiel
TGraphicIntf = interface procedure Zeichnen; end; Oberklasse: TGraphicObject = class(TInterfacedObject, TGraphicIntf) public procedure Zeichnen; virtual; abstract; Konkrete Klasse: TKreis = class(TGraphicObject) procedure Zeichnen; override; Objektorientiertes Programmieren © 2002 by UST GmbH

35 Übung 1: Grafische Objekte
Vorstellung des Beispielprojekts: Grafikobjekte.dpr Übungen © 2002 by UST GmbH

36 Übung 2: Erweiterung von Beispiel 1
Ergänze Beispiel 1 um ein neues Objekt: TDreieck Welche Eigenschaften benötigt es. Implementiere sie! Implementiere die Zeichnen-Methode des Dreiecks! Zeichne ein Dreieck mit Deiner neuen Methode! Leite ein neues Objekt ab: TEllipse = class(TKreis) Welche neuen Eigenschaften muss die Ellipse haben? Implementiere sie! Implementiere die zugehörige Zeichnen-Methode! Ergänze die Objekte um Grafikeigenschaften (z.B. Zeichenfarbe, Füllfarbe, Linienbreite)! Übungen © 2002 by UST GmbH

37 Übung 3: Dateikopierer Objektstruktur für Dateikopierer überlegen
Objektstruktur implementieren Rahmenprogramm implementieren ___________________________________ Exkurs: Routinen zur Dateibehandlung AssignFile, Reset, Rewrite, ReadLn, WriteLn, CloseFile FindFirst, FindNext, TSearchRecord Utility-Routinen, z.B.: FileExists, DirectoryExists, ExtractFileName, ExtractFileDir Übungen © 2002 by UST GmbH


Herunterladen ppt "Delphi-Schulung am Autor: Jörg Altegoer"

Ähnliche Präsentationen


Google-Anzeigen