Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

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

Ähnliche Präsentationen


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

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

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

3 Object-Pascal Delphis 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 := ; Result muß nicht deklariert werden – gibts immer in jeder Funktion Beispiel... Object-Pascal © 2002 by UST GmbH

11 Exceptions try Screen.Cursor := crHourGlass;... z.B. in Datenbank schreiben Screen.Cursor := crDefault; except Screen.Cursor := crDefault; raise; end; Oder: try... finally -> wird immer ausgeführt! raise; end; 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 © 2002 by UST GmbH Objektorientiertes Programmieren

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

14 Nachteil von strukturierten Typen: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)Instanzen Objektorientiertes Programmieren © 2002 by UST GmbH

15 Objekte Eigenschaften –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: –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: –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 –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 –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 Objektorientiertes Programmieren © 2002 by UST GmbH Zugriff vonInnerhalb der Klasse Aus abgeleiteter Klasse außerhalb der Klasse (in Unit der Klasse) außerhalb der Klasse Objekt- Inspektor private JaNeinJaNein protected Ja Nein public Ja Nein published Ja

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 © 2002 by UST GmbH Objektorientiertes Programmieren

27 Konstruktoren / Destruktoren Konstruktoren: –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überladene 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überladene 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 –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 Schnittstelle: TGraphicIntf = interface procedure Zeichnen; end; Oberklasse: TGraphicObject = class(TInterfacedObject, TGraphicIntf) public procedure Zeichnen; virtual; abstract; end; Konkrete Klasse: TKreis = class(TGraphicObject) public procedure Zeichnen; override; end; Objektorientiertes Programmieren © 2002 by UST GmbH

35 Übung 1: Grafische Objekte Vorstellung des Beispielprojekts: Grafikobjekte.dprGrafikobjekte.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 "UST GmbH Delphi-Schulung am 23.09.2002 Autor: Jörg Altegoer."

Ähnliche Präsentationen


Google-Anzeigen