+ All Categories
Home > Documents > UST GmbH Delphi-Schulung am 23.09.2002 Autor: Jörg Altegoer.

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

Date post: 05-Apr-2015
Category:
Upload: ginther-schillinger
View: 107 times
Download: 0 times
Share this document with a friend
37
UST GmbH Delphi-Schulung am 23.09.2002 Autor: Jörg Altegoer
Transcript
Page 1: UST GmbH Delphi-Schulung am 23.09.2002 Autor: Jörg Altegoer.

UST GmbH

Delphi-Schulung am 23.09.2002

Autor: Jörg Altegoer

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

Inhalt

Die Schulung ist zweigeteilt:I) Object Pascal

• Kurzer Überblick über die Fähigkeiten von Delphi

II) Objektorientiertes Programmieren• Allgemeine Einführung

• Spezielle Themen

III) Übungen• Einfache Klassenhierarchie (grafische Objekte)

• Erweiterungen des Beispiels

• Dateikopierer

© 2002 by UST GmbH

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

Object-Pascal

Delphi‘s Pascal-Dialekt Schlüsselwörter Datentypen Konstanten, Variablen, Typen Ablaufsteuerung Prozeduren und Funktionen Exceptions

© 2002 by UST GmbH

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

Schlüsselwörter (I)

Object-Pascal© 2002 by UST GmbH

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

Schlüsselwörter (II) - Direktiven

Object-Pascal© 2002 by UST GmbH

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

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

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

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;

TypenType string50 = string[50]; USTTrueFalse = (tfTrue, tfFalse); TPoint = record X, Y : integer; end;

Object-Pascal© 2002 by UST GmbH

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

Ablaufsteuerung

if..then..else case..of for..do while..do repeat..until Abbruchanweisungen: exit, abort, halt, ...

Object-Pascal© 2002 by UST GmbH

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

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

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

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

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

Exceptionstry Screen.Cursor := crHourGlass; ...z.B. in Datenbank schreiben Screen.Cursor := crDefault;except Screen.Cursor := crDefault; raise;end;

Oder:try...finally <Speicher freigeben> -> wird immer ausgeführt! raise;end;

Object-Pascal© 2002 by UST GmbH

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

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

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

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?

© 2002 by UST GmbH

Objektorientiertes Programmieren

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Gültigkeitsbereiche - Übersicht

Objektorientiertes Programmieren© 2002 by UST GmbH

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 Ja Nein Nein

protected Ja Ja Ja Nein Nein

public Ja Ja Ja Ja Nein

published Ja Ja Ja Ja Ja

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

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

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

Ü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

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

Objektorientierung – Spezielle Themen

Konstruktoren / Destruktoren Gültigkeit von Objektinstanzen Objekte kopieren Schnittstellen

© 2002 by UST GmbH

Objektorientiertes Programmieren

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

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

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

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

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

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

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

Beispiel: Objektinstanz erzeugenProcedure 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

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

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

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

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

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

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

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

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

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

Übung 1: Grafische Objekte Vorstellung des Beispielprojekts: Grafikobjekte.dpr

Übungen© 2002 by UST GmbH

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

Ü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

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

Ü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


Recommended