Spezialgebiet Informatik

Größe: px
Ab Seite anzeigen:

Download "Spezialgebiet Informatik"

Transkript

1 Objektorientierte Programmierung in Delphi Spezialgebiet Informatik

2 Inhaltsverzeichnis Allgemeine Einführung 1 1 Eigenschaften der objektorientierten Programmierung 1 2 Klassen Was sind Klassen? Eigenschaften von Klassen Kapselung Vererbung Polymorphie 2 3 Objekte Was ist ein Objekt? Attribute und Methoden 3 Objekte in Delphi 4 1 Die Klassendeklaration 4 2 Aller Anfang ist TObject 4 3 Kapselung private public protected published 6 4 Methoden Statische Virtuelle Dynamische Botschaftsverarbeitende Methoden Hintergrund Die Arbeitsweise von Windows Implementierung Schlüsselwort message 8 5 Konstruktor und Destruktor Objektvariablen und Instanzen Der Konstruktor Der Destruktor 10 6 Überschreiben von Methoden Aufruf geerbter Methoden inherited 11 7 Überladen von Methoden 12 8 Felder und Eigenschaften Zugriffsmethoden 12 9 Ereignisse 13

3 9.1 Prozedurale Typen Methodenzeiger Auslösen von Ereignissen Klassenmethoden Forward-Deklarationen Abstrakte Klassen Weitere wichtige Schlüsselwörter Operator is Operator as Parameter Self 19

4 ALLGEMEINE EINFÜHRUNG Objektorientierte Programmierung (kurz OOP, Object Oriented Programming) ist eines der grundlegenden Konzepte moderner Softwareentwicklung. Die folgenden Seiten beziehen sich zwar speziell auf Delphi, treffen im Allgemeinen aber auch auf alle anderen objektorientierten Sprachen zu. OOP ist ein sehr komplexes und kompliziertes Thema. Anfangs ist es sehr schwer diese Thematik zu verstehen, aber mit hinreichend praktischen Erfahrungen fällt es einem wie Schuppen von den Augen und man lernt objektorientiert zu denken. Im Übrigen gehe ich davon aus, dass man mit der Object-Pascal Syntax vertraut ist und auch einige Grundkenntnisse besitzt. In einigen Kapiteln ist auch ein gutes Verständnis von Zeigern nötig. 1 Eigenschaften der objektorientierten Programmierung Die objektorientierte Programmierung sieht die Bestandteile eines Programms als eine Zusammenstellung voneinander weitgehend unabhängiger Teilprogramme an. Diese Teilprogramme werden Klassen genannt. Eine Klasse ist die in einer Programmiersprache geschriebene Konstruktionsvorschrift für ein Objekt. Das eigentliche Objekt entsteht in dem Augenblick, in dem der übersetzte Quellcode einer Klasse im Speicher aktiviert wird. Objekte stellen auf Anforderung dem System bestimmte Eigenschaften zur Verfügung. Klassen und Objekte sind eng verbundene Begriffe, die oft miteinander verwechselt werden, aber dennoch besteht ein großer Unterschied zwischen ihnen das Verhältnis Objekt zu Klasse ist dasselbe wie das Verhältnis Variable zu Variablentyp. 2 Klassen 2.1 Was sind Klassen? Eine Klasse ist sozusagen die Vorlage für das Objekt. Sie enthält die Konstruktionsvorschrift wie das Objekt aufgebaut ist und ist somit die Voraussetzung für die erfolgreiche Initialisierung eines Objektes. Oft hört man auch den Begriff Objekttyp dieser ist gleichbedeutend mit dem Begriff Klasse. 2.2 Eigenschaften von Klassen Klassen haben drei wichtige Eigenschaften. Dies sind die Basisprinzipien durch die OOP erst so mächtig wird: Kapselung Eine Klasse bildet eine in sich geschlossene Einheit, bei der nur bestimmte extra freizugebende Funktionen von außen zugänglich sind. Alle anderen Funktionen der Klasse sind private Funktionen und können nur innerhalb der Klasse aufgerufen werden. Gleiches gilt für die Daten, die eine Klasse bearbeitet und für die innerhalb der Klasse verwendeten Variablen. Diese sind, soweit nicht anders vereinbart, ebenfalls privat und somit vor Zugriffen von außen geschützt. Der Vorteil dieser Eigenschaft liegt auf der Hand: Von anderen Programmteilen kann weder auf Funktionen noch auf Daten einer Klasse unkontrolliert zugegriffen werden. Ist die Klasse selbst sauber programmiert und ausgetestet sind Seiteneffekte nahezu ausgeschlossen. 1

5 2.2.2 Vererbung Es ist nicht sinnvoll, für jede erdenkliche Eigenschaft eines Programmteiles eine spezielle Klasse zu erstellen. Die Menge der dafür erforderlichen Klassen müsste gigantisch sein. Deswegen bietet OOP die Möglichkeit, dass eine Klasse seine Eigenschaften an eine neue Klasse mit zusätzlichen Eigenschaften weitergibt. Die neue beerbte Klasse wird abgeleitete Klasse (engl. derived class) genannt, die vererbende Klasse ist die Basisklasse (engl. base class). Die abgeleitete Klasse hat Zugriff auf zugelassene Bereiche der Basisklasse. Von außen sind auch in diesem Fall nur die extra freigegebenen Funktionen zugänglich. Ein gedachtes Beispiel veranschaulicht den Vorgang der Vererbung. Eine Basisklasse soll die Fähigkeit haben, auf einer GUI ein Fenster darzustellen. Dieses Fenster hat bestimmte Eigenschaften. Es hat wahlfreie Abmessungen, einen Rahmen, der eine leere Fläche umschließt, und kann auf dem Bildschirm auf einer bestimmten Position angezeigt werden. Von der Basisklasse wird nun eine Klasse abgeleitet, die die Eigenschaften des einfachen leeren Fensters mit Rahmen übernimmt und dahingehend erweitert eine Schaltfläche mit wahlfreiem Text, z.b. OK, darzustellen. Mit der auf diese Weise geschaffenen neuen Klassen können nun alle möglichen Schaltflächen mit den gewünschten Abmessungen und dem erforderlichen Text erzeugt und auf dem Bildschirm positioniert werden. (die VCL von Delphi wurde nach diesem Prinzip entwickelt) Dieses Beispiel zeigt auch einen weiteren Vorteil von OOP. Es ist nicht erforderlich, die komplexe Programmierung zur Erzeugung eines Fensters nachvollziehen. Um die abgeleitet Klasse zu bilden, sind nähere Kenntnisse über den Programmcode der Basisklasse nicht erforderlich. Es ist hinreichend, die Eigenschaften der Basisklasse und die Verfahren, diese Eigenschaften anzusprechen, zu kennen Polymorphie Polymorphie bedeutet soviel wie Vielgestaltigkeit und hängt eng mit der Vererbung zusammen. Bei der reinen Vererbung enthalten abgeleitete Klassen alle Eigenschaften der Basisklasse und erweitern diese um zusätzliche, eigene, Eigenschaften. Wenn die Basisklasse entsprechend programmiert wurde, können Ableitungen dieser Klasse bestimmte Eigenschaften der Basisklasse nicht nur übernehmen sondern völlig verändern. Hierzu wird das Beispiel von vorher erweitert. Nach der oben beschriebenen Vererbung hat die Klasse zur Darstellung der Schaltflächen nur den Text in ein kleines Fenster eingefügt. Eine Schaltfläche macht aber einen optisch viel besseren Eindruck, wenn sie erhoben dargestellt wird. Dieser visuelle Eindruck kann mit einem anderen Rahmen um die Schaltfläche erzeugt werden. Die von der Basisklasse ererbte Eigenschaft, einen Rahmen um ein Fenster zu zeichnen, wird in der abgeleiteten Klasse verdeckt und durch die Eigenschaft, einen Rahmen mit 3D-Effekt zu zeichnen ersetzt. Die von der abgeleiteten Klasse erzeugten Schaltflächen werden nun alle mit dem neuen 3D-Rahmen dargestellt. 3 Objekte 3.1 Was ist ein Objekt? Ein Objekt in der Softwareentwicklung ist letztlich dasselbe wie in der realen Welt. (z.b. Auto). Das Objekt hat gewisse Eigenschaften (z.b. Farbe, aktuelle Geschwindigkeit, Höchstgeschwindigkeit, Gang,...) und das Objekt kann bestimmte Tätigkeiten bzw. Befehle ausführen (z.b. Gas geben, bremsen,...). 2

6 Der Programmierer versteht unter einem Objekt die Zusammenfassung (Kapselung) von Daten und den zugehörigen Funktionalitäten. Das Konzept der objektorientierten Programmierung (OOP) überwindet den prozeduralen Ansatz der klassischen Sprachen zugunsten einer realitätsnahen Modellierung. Prozedurale Programmierung bedeutet, dass man eine Reihe von Prozeduren und Funktionen, mit oder ohne Parameter hat, und diese vom Hauptprogramm aus aufgerufen werden. Das Konzept von OOP schließt jetzt mehrere solche Prozeduren zusammen und verpackt sie in ein sogenanntes Objekt. Prozeduren die einem Objekt zugeordnet sind nennt man Methoden. Ein Objekt besteht also aus Methoden (Prozeduren und Funktionen) und Attributen (Variablen die Daten enthalten). 3.2 Attribute und Methoden Der Begriff Objektfelder umfasst alle Variablen und Funktionen die von einem Objekt gekapselt werden. Wie bereits erwähnt nennt man solche Funktionen Methoden und die Variablen Attribute. Während Attribute den Zustand oder die Eigenschaften eines Objektes beschreiben, entsprechen die Methoden seinem Verhalten. Ein Objekt kann lediglich über eine Schnittstelle mit einem anderen Objekt kommunizieren, indem es dessen öffentliche (public) Methoden benutzt. Methoden sind Aktionen, die das Objekt durchführen kann. Die Attribute können dabei durch die sogenannten Zugriffsmethoden sozusagen geschützt werden. D.h. dass nur über diese Methoden auf ein Attribut zugegriffen werden kann. Bei den Attributen kann man unterscheiden zwischen Eigenschaften und Ereignissen. Eigenschaften repräsentieren die Daten, die ein Objekt enthält. Ereignisse sind Bedingungen, auf die das Objekt reagieren kann. 3

7 OBJEKTE IN DELPHI 1 Die Klassendeklaration Damit überhaupt erst mal ein Objekt entstehen kann muss man eine Klasse deklarieren. In Delphi ist eine solche Klassendeklaration wie folgt aufgebaut: KlassenName = class(basisklasse) private { private Deklarationen } protected { protected Deklarationen } public { public Deklarationen } published { published Deklarationen } Für KlassenName ist dabei der Name der neuen Klasse und für Basisklasse der Klassenname des Vorfahren einzutragen. Hinweis: In Delphi hat es sich eingebürgert alle Klassennamen mit einem großen T zu beginnen. Diese Namensgebung mit vorangestelltem Präfix entstammt ursprünglich der ungarischen Notation. Es ist zwar keine Pflicht sich an diese Konvention zu halten, aber es ist trotzdem anzuraten, vor allem wenn diese Objekte veröffentlicht oder anderen Programmieren zur Verfügung gestellt werden. Mit dem Schlüsselwort wird eine Typendeklaration eingeleitet. Dazu gehören unter anderem Records und Klassen. Wird keine Basisklasse angegeben, so wird das Objekt automatisch von TObject abgeleitet (siehe auch Kapitel 2 - Aller Anfang ist TObject). 2 Aller Anfang ist TObject In Delphi sind alle Objekte automatisch vom Basisobjekt TObject abgeleitet es ist sozusagen der Urahn aller VCL-Objekte und Komponenten. TObject ist folgendermaßen deklariert: { TObject class } TObject = class constructor Create; procedure Free; class function InitInstance(Instance: Pointer): TObject; procedure CleanupInstance; function ClassType: TClass; class function ClassName: ShortString; class function ClassNameIs(const Name: String): Boolean; class function ClassParent: TClass; class function ClassInfo: Pointer; class function InstanceSize: Longint; class function InheritsFrom(AClass: TClass): Boolean; class function MethodAddress(const Name: ShortString): Pointer; 4

8 class function MethodName(Address: Pointer): ShortString; function FieldAddress(const Name: ShortString): Pointer; function GetInterface(const IID: TGUID; out Obj): Boolean; class function GetInterfaceEntry(const IID: TGUID): PInterfaceEntry; class function GetInterfaceTable: PInterfaceTable; function SafeCallException(ExceptObject: TObject; ExceptAddr: Pointer): HResult; virtual; procedure AfterConstruction; virtual; procedure BeforeDestruction; virtual; procedure Dispatch(var Message); virtual; procedure DefaultHandler(var Message); virtual; class function NewInstance: TObject; virtual; procedure FreeInstance; virtual; destructor Destroy; virtual; TObject kapselt das grundlegende Verhalten, das allen Objekten in der VCL gemeinsam ist. Mit den von TObject eingeführten Methoden kann man: - Objektinstanzen erzeugen, verwalten und auflösen. Dies geschieht durch Zuweisen, Initialisieren und Freigeben von Speicher für das Objekt. - auf objektspezifische Informationen über den Klassentyp und die Instanz zugreifen und Laufzeitinformationen von Eigenschaften verwalten, die als published deklariert sind. - Botschaften individuell bearbeiten. - Schnittstellen, die das Objekt implementiert, unterstützen. TObject wird als direkte Basis für einfache Objekte verwendet, die nicht persistent sind (also nicht gespeichert und erneut geladen werden müssen) und die keinen anderen Objekte zugewiesen werden. Wenn bei der Deklaration einer neuen Objektklasse kein Vorfahr angegeben wird, setzt Delphi als Vorfahr automatisch die Klasse TObject ein. Die Leistungsfähigkeit von Delphi-Objekten beruht zu einem großen Teil auf den Methoden, die TObject einführt. Viele dieser Methoden sind für die interne Verwendung in der Delphi- Umgebung vorgesehen, nicht aber für einen direkten Aufruf durch den Anwender. Andere Methoden müssen in abgeleiteten Objekten und Komponenten, die ein komplexeres Verhalten zeigen, überschrieben werden. 3 Kapselung Wie bereits erwähnt versteht man unter Kapselung das Verbergen der inneren Struktur eines Objekts. Die internen Daten und einige verborgene Methoden sind geschützt, also von außen nicht zugänglich. Die Manipulation des Objektes kann lediglich über streng definierte, über die Schnittstelle zur Verfügung gestellte, öffentliche Methoden erfolgen. In diesem Zusammenhang trifft man in jedem Fall auf die beiden Schlüsselwörter public und private: 3.1 private Auf ein private-element kann nur innerhalb des Moduls (Unit oder Programm) zugegriffen werden, in dem die Klasse deklariert ist. Mit anderen Worten - eine private-methode kann nicht von anderen Modulen aufgerufen werden, und als private deklarierte Felder oder Eigenschaften können nicht von anderen Modulen gelesen oder geschrieben werden. Indem 5

9 man wandte Klassendeklarationen im selben Modul zusammenfassen, man diesen Klassen also den Zugriff auf alle private-elemente ermöglichen, ohne die Elemente anderen Modulen bekanntzumachen. 3.2 public Ein public-element unterliegt keinerlei Zugriffsbeschränkungen. Es ist überall dort sichtbar, wo auf seine Klasse verwiesen werden kann. Die Benutzerschnittstelle einer Klasse stellt sich durch Elemente dar, die mit public vereinbart wurden. 3.3 protected Neben private und public gibt es noch ein drittes Schlüsselwort: protected Ein protected-element ist innerhalb des Moduls mit der Klassendeklaration und in allen abgeleiteten Klassen (unabhängig davon, in welchem Modul sie deklariert sind) sichtbar. Es ist sozusagen ein Mittelding zwischen private und public. Mit anderen Worten: auf ein protected-element können alle Methoden einer Klasse zugreifen, die von der Klasse mit der Elementdeklaration abgeleitet ist. Mit diesem Sichtbarkeitsattribut werden also Elemente deklariert, die nur in den Implementierungen abgeleiteter Klassen verwendet werden sollen. Vor dem Zugriff von außen sind diese Elemente geschützt. 3.4 published Der Vollständigkeit halber sollte hier auch noch das vierte Schlüsselwort published erwähnt werden. published-elemente haben dieselbe Sichtbarkeit wie public-elemente. Im Unterschied zu diesen werden jedoch für published-elemente Laufzeit-Typinformationen generiert. Sie ermöglichen einer Anwendung, die Felder und Eigenschaften eines Objekts dynamisch abzufragen und seine Methoden zu lokalisieren. Delphi verwendet diese Informationen, um beim Speichern und Laden von Formulardateien (DFM) auf die Werte von Eigenschaften zuzugreifen, Eigenschaften im Objektinspektor anzuzeigen und spezielle Methoden (sogenannte Ereignisbehandlungsroutinen) bestimmten Eigenschaften (den Ereignissen) zuzuordnen. published-eigenschaften sind auf bestimmte Datenn beschränkt. Ordinal, String, Klassen, Schnittstellen und Methodenzeigern können mit dieser Sichtbarkeit deklariert werden. Bei Mengenn ist dies nur möglich, wenn die Ober- und Untergrenze des Basistyps einen Ordinalwert zwischen 0 und 31 hat (die Menge muß also in ein Byte, Wort oder Doppelwort passen). Auch alle Real-Typen außer Real48 können als published deklariert werden. Für Array-Eigenschaften kann dieser Gültigkeitsbereich nicht angegeben werden. Obwohl alle Methoden als published deklariert werden können, sind in einer Klasse nicht zwei oder mehr überladene published-methoden mit demselben Namen erlaubt. Felder können nur mit dieser Sichtbarkeit angegeben werden, wenn sie einen Klassen- oder Schnittstellentyp haben. 4 Methoden Grundsätzlich gibt es drei verschiedene Arten von Methoden: 6

10 4.1 Statische Methoden sind standardmäßig statisch. Statische Methoden können in abgeleiteten Klassen nicht überschrieben werden. Wenn in der abgeleiteten Klassen eine Methode mit demselben Namen deklariert wird, so wird die Methode der Basisklasse lediglich verdeckt, nicht jedoch überschrieben. Beim Aufruf bestimmt der deklarierte Typ (also der Typ zur Compilierzeit) der im Aufruf verwendeten Klassen- bzw. Objektvariable, welche Implementierung aktiviert wird. 4.2 Virtuelle Virtuelle Methoden können im Gegensatz zu statischen Methoden in abgeleiteten Klassen überschrieben werden. Beim Aufrufen einer überschriebenen Methode bestimmt nicht der deklarierte, sondern der aktuelle Typ (also der Typ zur Laufzeit) der im Aufruf verwendeten Klassen- bzw. Objektvariable, welche Implementierung aktiviert wird. 4.3 Dynamische Virtuelle und dynamische Methoden sind von der Semantik her identisch sie können beide in abgeleiteten Klassen überschrieben werden. Sie unterscheiden sich nur bei der Implementierung der Aufrufverteilung zur Laufzeit. Virtuelle.Methoden werden auf Geschwindigkeit, dynamische Methoden auf Code-Größe optimiert. Im Allgemeinen kann mit virtuellen Methoden polymorphes Verhalten am effizientesten implementiert werden. Dynamische Methoden sind hilfreich, wenn in einer Basisklasse eine große Anzahl überschreibbarer Methoden deklariert ist, die von vielen abgeleiteten Klassen geerbt, aber nur selten überschrieben werden. 4.4 Botschaftsverarbeitende Methoden Diese Methodenart passt zwar nicht in das Schema der vorherigen drei, ist aber auch eine spezielle Methodenart und wird deshalb in ebenfalls in diesem Kapitel beschrieben. Um den Sinn dieser Methodenart zu verstehen muss man ein bisschen die Hintergründe und Arbeitsweise von Windows kennen. Windows ist ein sogenanntes nachrichtenbasiertes Betriebssystem. Ich gehe hier nicht auf Details ein sondern erkläre nur kurz ein bisschen das Prinzip. 4.5 Hintergrund Die Arbeitsweise von Windows Wenn z.b. mit der Maus geklickt wird, oder eine Taste der Tastatur gedrückt wird, so wird von Windows eine entsprechende Message erzeugt. Wenn die linke Maustaste gedrückt wird ist dies WM_LBUTTONDOWN und wenn sie wieder losgelassen wird, wird entsprechend die WM_LBUTTONUP Nachricht erzeugt. Der Präfix WM steht dabei für Windows- Message. Sobald diese Nachricht erzeugt wurde wird sie an das betreffende Fenster geschickt. Bei einem Mausklick ist das betroffene Fenster also jenes über dem sich die Maus zu diesem Zeitpunkt befindet. (Wichtig: In Windows sind alle Steuerelemente Fenster und können daher Nachrichten empfangen!) Um nun eine solche Nachricht empfangen zu können hat jedes Fenster eine Message-Loop und eine Fensterprozedur. In der Message-Loop werden die eintreffenden Nachrichten abgelegt und in der Fensterprozedur werden sie ausgelesen und verarbeitet. Über eine Botschaftsverarbeitende Methode kann man nun auf solche eintreffenden Nachrichten reagieren. Voraussetzung für eine Botschaftsverarbeitende Methode ist ein gültiges Fensterhandle und eine korrekte Fensterprozedur. Entweder 7

11 implementiert man diese Punkte selbst direkt über das Win32-API oder aber man leitet sein Objekt von TWinControl ab. Dieses Objekt implementiert bereits alle wichtigen Aspekte. 4.6 Implementierung Schlüsselwort message Eine Botschaftsverarbeitende Methode wird mit dem Schlüsselwort message und dem darauffolgenden Message-Namen gekennzeichnet. Beispiel: TMyWinControl = class(twincontrol) protected procedure WMLButtonDown(Msg: TMessage); message WM_LBUTTONDOWN; Alle botschaftsverarbeitenden Methoden brauchen einen Parameter über den man an die Informationen der Nachricht kommt. Da alle Messages gleich aufgebaut sind gibt es so etwas wie einen Universal-Record. Dieser ist eben TMessage. D.h. jede botschaftsverarbeitende Methode kann einen Parameter vom Typ TMessage haben. Neben TMessage sind der Unit Messages noch andere nachrichtenspezifische Records definiert über die eine einfachere Abfrage der Informationen möglich ist. 5 Konstruktor und Destruktor Eine objektorientierte Sprache wie Delphi realisiert das Erzeugen und Entfernen von Objekten mit sogenannten Konstruktoren und Destruktoren. Beides sind spezielle Methoden innerhalb der Klassendeklaration. Der Konstruktor ist dafür verantwortlich, dass überhaupt erst ein Objekt entstehen kann. Er wird bei der Initialisierung, also bei der Erzeugung, eines Objektes aufgerufen und führt alle zur Initialisierung nötigen Aufgaben wie z.b. Allozierung von Speicher und initialisieren der Objektfelder aus. Der Destruktor wird beim Entfernen von Objekten aufgerufen und ist für sämtliche Aufräumarbeiten wie z.b. freigeben von alloziertem Speicher verantwortlich. 5.1 Objektvariablen und Instanzen Um mit Objekten arbeiten zu können, muss eine Objektvariable als sogenannte Instanz der Klasse gebildet werden. Im Gegensatz zu normalen Variablendeklarationen ist es hier mit der reinen Deklaration noch nicht getan sondern bedarf folgender drei Schritte: Mit var wird zunächst eine Referenz auf ein Objekt des gewünschten Typs deklariert. Dies ist ein Zeiger, der momentan noch den Wert nil hat, also gewissermaßen in die Luft oder auch nirgendwo hinzeigt. Durch Aufruf des sogenannten Konstruktors (meist ist dies die Create-Methode) wird eine Instanz der Klasse gebildet. Erst jetzt entsteht das eigentliche Objekt und der im ersten Schritt deklarierte Zeiger (Referenz) verweist auf einen konkreten Speicherbereich. Wenn das Objekt nicht mehr benötigt wird, sollte der von ihm belegte Speicher wieder freigegeben werden. Dies geschieht durch den Aufruf eines sogenannten Destruktors (meist ist dies die Free-Methode). Um Missverständnisse vorzubeugen sollte nach Aufruf des Destruktors der Objektvariablen wieder der Wert nil 8

12 zugewiesen werden, damit nicht auf das nicht mehr vorhandene Objekt und damit auf nicht reservierten Speicher zugegriffen wird. Beispiel: var MyObject: TMyObject; begin MyObject := TMyObject.Create; // MyObject muss erst instanziert werden... // arbeiten mit MyObject MyObject.Free; // Objekt wieder freigeben Die Instanz eines Objektes ist ein dynamisch reservierter Speicherbereich mit einer internen Struktur, die vom Objekttyp abhängt. Jedes Objekt besitzt eine mit eigenen Werten gefüllte Kopie der im Objekttyp deklarierten Felder, benutzt aber die Methoden unverändert mit anderen Objekten zusammen. Ein Objekt ist lediglich eine Referenz auf ein bestimmtes Objekt der Klasse. Sie enthält also nicht bereits das Objekt, sondern stellt einen Zeiger auf den Speicherbereich des Objektes bereit. Diese Zeiger werden, im Gegensatz zu den in C++ üblichen Objekten, von Delphi intern dereferenziert. Es können sich so mehrere Objektvariablen auf ein und dieselbe Instanz beziehen. Wenn eine Objektvariable den Wert nil enthält, so bedeutet das, dass sie momentan kein Objekt referenziert. 5.2 Der Konstruktor Die Deklaration eines Konstruktors gleicht einer normalen Prozedurdeklaration, beginnt aber mit dem Wort constructor. Beispiel: TMyObject = class(tobject) public constructor Create; override; // der Konstruktor Info: String; // Variable die im Konstruktor initialisiert wird Der Implementations-Teil schaut dann so aus: constructor TMyObject.Create; begin inherited; Info := Dieser Text wurde im Konstruktor zugewiesen Die beiden Schlüsselwörter override und inherited werden im Kapitel 6 Überschreiben von Methoden noch beschrieben. Eine Klasse kann durchaus mehrere Konstruktoren deklarieren bzw. implementieren. Diese müssen dann eventuell unterschiedliche Methodennamen haben oder mit der Direktive overload gekennzeichnet sein (siehe Kapitel 7 Überladen von Methoden). 9

13 5.3 Der Destruktor Ein Destruktor ist eine spezielle Methode, die ein Objekt im Speicher freigibt. Die Deklaration eines Destruktors gleicht, genauso wie schon die des Konstruktors, der einer Prozedur, beginnt aber dem Namen entsprechend mit dem Wort destructor. Destruktoren müssen die Standardaufrufkonvention register verwenden. Obwohl in einer Klasse mehrere Destruktoren implementiert werden können, ist es ratsam, nur die geerbte Destroy-Methode zu überschreiben und keine weiteren Destruktoren zu deklarieren. Beispiel: TMyObject = class(tobject) public destructor Destroy; override; // der Destruktor Der Implementations-Teil schaut dann so aus: destructor TMyObject.Destroy; begin... // alle notigen Freigaben und ähnliches inherited; Die beiden Schlüsselwörter override und inherited werden im Kapitel 6 Überschreiben von Methoden noch beschrieben. Ein Destruktor kann nur über ein Instanzobjekt aufgerufen werden. MyObject.Destroy; Beim Aufruf eines Destruktors werden zuerst die in der Implementierung angegebenen Aktionen ausgeführt. Normalerweise werden hier untergeordnete Objekte und zugewiesene Ressourcen freigegeben. Danach wird das Objekt im Speicher freigegeben. Wenn beim Erstellen eines Objekts eine Exception auftritt, wird das unvollständige Objekt automatisch durch einen Aufruf von Destroy freigegeben. Der Destruktor muß daher auch in der Lage sein, Objekte freizugeben, die nur teilweise erstellt wurden. Da im Konstruktor alle Felder eines neuen Objekts mit Null initialisiert werden, haben Klassenreferenz- und Zeigerfelder in einer unvollständigen Instanz immer den Wert nil. Man sollte solche Felder im Destruktor immer auf den Wert nil testen, bevor man Operationen mit ihnen durchführen. Wenn man Objekte nicht mit Destroy, sondern mit der Methode Free (von TObject) freigeben, wird diese Prüfung automatisch durchgeführt. 6 Überschreiben von Methoden Um eine Methode zu überschreiben, braucht sie nur mit der Direktiven override erneut deklariert zu werden. Dabei müssen Reihenfolge und Typ der Parameter sowie der Typ des Rückgabewertes (falls vorhanden) mit der Deklaration in der Basisklasse übereinstimmen. Im folgenden Beispiel wird die in der Klasse TFigure deklarierte Methode Draw in zwei abgeleiteten Klassen überschrieben: 10

14 TFigure = class procedure Draw; virtual; TRectangle = class(tfigure) procedure Draw; override; TEllipse = class(tfigure) procedure Draw; override; Ausgehend von diesen Deklarationen zeigt der folgende Programmcode, wie sich der Aufruf einer virtuellen Methode durch eine Variable auswirkt, deren aktueller Typ zur Laufzeit geändert wird. var Figure: TFigure; begin Figure := TRectangle.Create; Figure.Draw; // Ruft TRectangle.Draw auf. Figure.Destroy; Figure := TEllipse.Create; Figure.Draw; // Ruft TEllipse.Draw auf. Figure.Destroy; 6.1 Aufruf geerbter Methoden inherited In überschriebenen Methoden ist es oft notwendig die alte Verhaltensweise des Objektes beizubehalten und nur neue Initialisierungen oder Reaktionen einzubauen. Um nicht den gesamten Code nachbauen zu müssen gibt es in Delphi die Möglichkeit die Originalmethode der Basisklasse aufzurufen. Das reservierte Wort inherited ist für die Polymorphie von großer Bedeutung. Es kann in Methodenimplementierungen (mit oder ohne nachfolgenden Bezeichner) angegeben werden. Folgt auf inherited ein Methodenbezeichner, entspricht dies einem normalen Methodenaufruf. Der einzige Unterschied besteht darin, daß die Suche nach der Methode bei dem direkten Vorfahren der Klasse beginnt, zu der die Methode gehört. Durch die folgende Anweisung wird beispielsweise die geerbte Methode Create aufgerufen: inherited Create(...); Die Anweisung inherited ohne Bezeichner verweist auf die geerbte Methode mit demselben Namen wie die aufrufende Methode. In diesem Fall kann inherited mit oder ohne Parameter angegeben werden. Ohne Parameterangabe werden der geerbten Methode einfach die Parameter der aufrufenden Methode übergeben. So wird beispielsweise inherited; 11

15 häufig in der Implementierung von Konstruktoren verwendet. Der geerbte Konstruktor wird also mit den Parametern aufgerufen, die an die abgeleitete Klasse übergeben wurden. In einem Konstruktor sollte inherited immer als erstes aufgerufen werden, damit alle Initialisierungen des Basisobjekts fertig sind, bevor man selbst mit dem Objekt arbeitet. Im Destruktor ist es dafür genau umgekehrt. Hier sollten zuerst alle eigenen Speicher bzw. Objektfreigaben stattfinden bevor man über inherited den Destruktor des Basisobjektes aufruft. 7 Überladen von Methoden Nur virtuelle und dynamische Methoden können überschrieben werden, es können jedoch alle Methoden überladen werden. Unter dem überladen von Methoden versteht man, dass eine Klasse mehrere Methoden mit demselben Methodennamen deklarieren kann. Diese Methoden müssen sich jedoch entweder in Parameteranzahl oder Parameterart unterscheiden. Der Compiler sucht dann beim kompilieren automatisch die passende Methode aus. Um eine Methode zu überladen muss sie mit der Anweisung overload neu deklariert werden. Wenn sich die Parameterangaben von denen ihres Vorfahren unterscheiden, wird die geerbte Methode überladen, ohne daß sie dadurch verdeckt wird. Bei einem Aufruf der Methode in einer abgeleiteten Klasse wird dann diejenige Implementierung aktiviert, bei der die Parameter übereinstimmen. 8 Felder und Eigenschaften Eigenschaften (Properties) und Felder eines Objektes werden gemeinsam auch als dessen Attribute bezeichnet. Felder belegen normale Speicherplätze wie z.b. die Felder eines Records und können demnach direkt gelesen bzw. geändert/gesetzt werden. Objekteigenschaften werden mit dem Schlüsselwort property deklariert und erscheinen nach außen wie normale Objektfelder, allerdings kapseln sie intern nur Methoden zum Lesen (read) bzw. Schreiben (write) des Wertes eines oder mehrerer Felder und speichern selbst keine Werte. Diese mit read bzw. write spezifizierten Methoden nennt man Zugriffsmethoden. 8.1 Zugriffsmethoden Zugriffsmethoden sind dazu da, um Objektfelder von außen zu schützen (z.b. ReadOnly- Eigenschaften) oder Zuweisungen einer Gültigkeitskontrolle zu unterziehen. Durch Weglassen von write lässt sie beispielsweise der Schreibzugriff verwehren. Zugriffsmethoden werden meist entweder als public oder aber als protected deklariert. Die Deklaration als protected hat den Vorteil, dass abgeleitete Klassen die Methode den Umständen entsprechend anpassen bzw. verändern kann (vorausgesetzt sie wurde als virtual oder dynamic deklariert). Die Deklaration einer Eigenschaft muß einen Namen, einen Typ und mindestens eine Zugriffsangabe enthalten. Die Syntax lautet folgendermaßen: property Eigenschaftsname[Indizes]:Typ indexinteger-konstante Bezeichner; Eigenschaftsname ist ein beliebiger gültiger Bezeichner. [Indizes] ist optional und besteht aus einer Folge von durch Semikolons getrennten Parameterdeklarationen. Jede Deklaration hat die Form Bezeichner

16 Bezeichnern: Typ. Weitere Informationen hierzu finden Sie im Abschnitt Array- Eigenschaften. Die Klausel index Integer-Konstante ist optional (siehe Indexangaben). Bezeichner ist eine Folge von read, write, stored, default (oder nodefault) und implements-angaben. Jede Eigenschaftsdeklaration muß zumindest einen readoder write-bezeichner enthalten. Eigenschaften werden durch ihre Zugriffsangaben definiert. Sie können im Gegensatz zu Feldern nicht als var-parameter übergeben oder mit dem versehen werden. Der Grund dafür liegt darin, daß eine Eigenschaft nicht notwendigerweise im Speicher vorhanden sein muß. Sie kann beispielsweise eine read-methode haben, die einen Wert aus einer Datenbank abruft oder einen Zufallswert generiert. Beispiel: TAuto = class(tobject) private FTempo: Integer; public constructor Create; procedure Gasgeben; procedure Bremsen; property Geschwindigkeit: Integer read FTempo; { implementation } constructor TAuto.Create; begin inherited; FTempo := 0; procedure TAuto.Gasgeben; begin Inc(FTempo, 5); procedure TAuto.Bremsen; begin Dec(FTemp, 5); Das Objekt Auto implementiert einen Konstruktor, zwei Methoden und eine Eigenschaft. Im Konstruktor wird dafür gesorgt, dass die Startgeschwindigkeit 0 ist. 9 Ereignisse Ereignisse sind eine Sonderform von Eigenschaften. Um das Prinzip von Ereignissen zu verstehen ist allerdings ein gutes Verständnis von Pointern erforderlich. Jede Funktion oder Prozedur ist eigentlich nur ein Block im Arbeitsspeicher. Daher kann man mit einem Pointer mit der Adresse auf diese Speicherstelle auch einen Pointer auf eine 13

17 Funktion/Prozedur haben. Diese Pointer nennt man Prozedurzeiger. Und genau nach diesem Prinzip funktionieren Ereignisse. Ein Ereignis ist nur ein Pointer auf eine Prozedur, die bei der Auslösung des Ereignisses aufgerufen wird. Um aber so ein Ereignis zu implementieren bedarf es ein paar Vorbereitungen. 9.1 Prozedurale Typen Definieren wir mal eine Funktion mit dem Namen Calc, die zwei Integer-Parameter übernimmt und einen Integer-Wert zurückgibt: function Calc(X, Y: Integer): Integer; Man kann die Calc-Funktion nun der Variablen F zuweisen und aufrufen: var F: function(x, Y: Integer): Integer; Ergebnis: Integer; begin F := Calc; Ergebnis := F(3, 5); Der Bezeichner hinter dem Schlüsselwort procedure bzw. function ist der Name des prozeduralen Typs. Dieser Typname kann direkt in einer Variablendeklaration (siehe oben) verwendet oder zur Deklaration neuer Typen benutzt werden: TIntegerFunction = function: Integer; TProcedure = procedure; TStrProc = procedure(const S: string); TMathFunc = function(x: Double): Double; var F: TIntegerFunction; { F ist eine parameterlose Funktion, die einen Integer zurückgibt } Proc: TProcedure; { Proc ist eine parameterlose Prozedur } SP: TStrProc; { SP ist eine Prozedur, die einen String- Parameter übernimmt } M: TMathFunc; { M ist eine Funktion, die einen Double-Parameter (reeller Wert) übernimmt und einen Double-Wert zurückgibt } Diese Typen können beliebig eingesetzt werden. z.b. so: procedure FuncProc(P: TIntegerFunction); { FuncProc ist eine Prozedur, deren einziger Parameter eine parameterlose Funktion ist, die einen Integer zurückgibt } 9.2 Methodenzeiger Die Deklaration von Methodenzeigern unterscheidet sich nur geringfügig von der von Prozedurzeigern. Um eine Methode eines Instanzobjekts zur, muss dem Namen des prozeduralen Typs die Klausel of object hinzugefügt werden: 14

18 TMethod = procedure of object; TNotifyEvent = procedure(sender: TObject) of object; Ein Methodenzeiger wird in Form zweier Zeiger codiert, von denen der erste die Adresse der Methode speichert. Der zweite enthält eine Referenz auf das Objekt, zu dem die Methode gehört. Beispiel: TNotifyEvent = procedure(sender: TObject) of object; TMainForm = class(tform) procedure ButtonClick(Sender: TObject);... var MainForm: TMainForm; OnClick: TNotifyEvent; Nach diesen Deklarationen ist die folgende Zuweisung korrekt: OnClick := MainForm.ButtonClick; Zwei prozedurale Typen sind kompatibel, wenn sie folgende Bedingungen erfüllen: Sie verwenden dieselbe Aufrufkonvention. Sie haben denselben (oder keinen) Rückgabetyp. Sie verwenden eine identische Anzahl von Parametern. Die Parameter an einer bestimmten Position müssen identische Typen haben (die Parameternamen spielen keine Rolle). Zeiger auf Prozeduren sind niemals kompatibel zu Zeigern auf Methoden. Der Wert nil kann jedem prozeduralen Typ zugewiesen werden. 9.3 Auslösen von Ereignissen Um ein Ereignis auszulösen reicht ein einfacher Aufruf über den Methodenzeiger. Vor dem Aufruf muss allerdings überprüft werden, ob der Zeiger nicht den Wert nil hat, denn dann sonst könnte es zu potentiellen Zugriffsfehlern kommen. Eine typische Deklaration bzw. Implementation von Ereignissen inklusive Aufruf sieht etwa so aus: TMyObject = class(tobject) private... FOnClick: TNotifyEvent; public... procedure Click; property OnClick: TNotifyEvent read FOnClick write FOnClick; 15

19 procedure TControl.Click; begin if Assigned(FOnClick) then FOnClick(Self); 10 Klassenmethoden Eine Klassenmethode arbeitet nicht mit Objekten sondern mit Klassen. Für den Aufruf einer Klassenmethode ist deshalb keine Objektvariable sondern lediglich die Klassendeklaration und Implementierung notwendig. Deklaration und Implementierung müssen mit dem reservierten Wort class eingeleitet werden. Beispiel: TMyObject = class(tmyobject) public class function VersionsInfo: String; { Implementation } class function TMyObject.VersionsInfo: String; begin Result := Version 1.0 der Beispielklasse für Klassenmethoden ; Klassenmethoden sind von Anfang an im Speicher vorhanden im Gegensatz zu Objekten, die erst durch einen Konstruktor ins Leben gerufen werden müssen. Deshalb darf man von einer Klassenmethode natürlich nicht auf Objektfelder der Klasse zugreifen, da kein Objekt und damit auch keine Objektfelder existieren. Würde der Compiler einen solchen Zugriff nicht schon zur Entwurfszeit als Fehler erkennen und markieren, würde es zur Laufzeit zu potentiellen Zugriffsfehlern kommen. 11 Forward-Deklarationen Manchmal ist es nötig, dass zwei unterschiedliche Klassen die jeweils andere referenziert: TFirstClass = class(tobject) public Second : TSecondClass; TSecondClass = class(tobject) public First : TFirstClass; Allerdings ahndet der Compiler diese Deklaration beinhart mit einer Fehlermeldung, da in der Deklaration von TMyClass1 noch nichts von der Klasse TMyClass2 bekannt ist. Um dieses Problem zu umgehen setzt man Forward-Deklarationen, auf Deutsch Vortwärtsdeklarationen, ein. Forward-Deklarationen sehen folgendermaßen aus: 16

20 TFirstClass = class; // Forward-Deklaration von TFirstClass TSecondClass = class; // Forward-Deklaration von TSecondClass TFirstClass = class(tobject) public Second: TSecondClass; TSecondClass = class(tobject) public First: TFirstClas ; Eine Forward-Deklaration funktioniert immer nach dem Schema: Klassenname = class; Das abschließende Semikolon gibt dem Compiler zu erkennen, dass es sich um eine Forward- Deklaration handelt und die eigentliche Deklaration der Klasse erst später kommt. 12 Abstrakte Klassen Abstrakte Klassen sind Klassen, die gewisse Methoden zwar deklarieren, aber nicht implementieren. Solche Methoden nennt man abstrakte Methoden. Unter Delphi deklariert man eine solche Methode durch das Wort abstract das der Funktions- /Prozedur-Deklaration nachgestellt wird. z.b.: procedure Irgendwas; virtual; abstract; Natürlich müssen abstrakte Methoden immer als virtual oder dynamic deklariert werden, damit sie von abgeleiteten Klassen überschrieben und implementiert werden können. Eine abstrakte Methode kann nur in einer Klasse (bzw. Instanz einer Klasse) aufgerufen werden, in der sie überschrieben wurde. Der Sinn solcher Klassen ist Anfangs nicht ganz klar ersichtlich, aber mit einem kleinen Bsp. versteht man die Idee die dahinter steckt. Ein gutes Beispiel stellt die abstrakte Klasse TStream dar: { TStream abstract class } TStream = class(tobject) private function GetPosition: Longint; procedure SetPosition(Pos: Longint); function GetSize: Longint; protected procedure SetSize(NewSize: Longint); virtual; public function Read(var Buffer; Count: Longint): Longint; virtual; abstract; function Write(const Buffer; Count: Longint): Longint; virtual; abstract; function Seek(Offset: Longint; Origin: Word): Longint; virtual; abstract; procedure ReadBuffer(var Buffer; Count: Longint); procedure WriteBuffer(const Buffer; Count: Longint); 17

21 function CopyFrom(Source: TStream; Count: Longint): Longint; function ReadComponent(Instance: TComponent): TComponent; function ReadComponentRes(Instance: TComponent): TComponent; procedure WriteComponent(Instance: TComponent); procedure WriteComponentRes(const ResName: String; Instance: TComponent); procedure WriteDescendent(Instance, Ancestor: TComponent); procedure WriteDescendentRes(const ResName: String; Instance, Ancestor: TComponent); procedure WriteResourceHeader(const ResName: string; out FixupInfo: Integer); procedure FixupResourceHeader(FixupInfo: Integer); procedure ReadResHeader; property Position: Longint read GetPosition write SetPosition; property Size: Longint read GetSize write SetSize; Es gibt mehrere verschiedene Stream-Arten: - TFileStream (für Dateien) - TStringStream (zur Bearbeitung von Strings im Speicher) - TMemoryStream (für den Speicherpuffer) - TBlobStream (für BLOB-Felder) - TWinSocketStream (zum Lesen und Schreiben über eine Socket-Verbindung) - TOleStream (zum Lesen und Schreiben über eine COM-Schnittstelle) Alle diese Stream-Arten sind von der abstrakten Klasse TStream abgeleitet. Jede dieser Streams implementiert die in TStream nicht implementierten, also abstrakten, Methoden. Damit haben alle Streams dieselben Methoden mit gleichen Namen und gleichen Parametern. Dadurch ergibt sich eine gewisse Kompatibilität. Zum Beispiel implementiert TStream die Methode CopyFrom(). Diese Methode verlangt als Parameter ebenfalls ein TStream-Objekt und verwendet intern nur die abstrakten Methoden wie Read und Write. Da schließlich alle Nachkommen von TStream diese abstrakten Methoden implementieren, ist z.b. ein Aufruf nach folgendem Schema möglich: TFileStream.CopyFrom(TMemoryStream, 0); Statt den Klassennamen müssen natürlich Objekte eingesetzt werden, aber dieses Beispiel soll schließlich nur das Zusammenspiel zweier Klassen veranschaulichen, die beide dieselbe abstrakte Basisklasse haben. Das Beispiel könnte genauso gut umgekehrt lauten: TMemoryStream.CopyFrom(TFileStream, 0); Oder aber auch ganz anders: TWinSocketStream.CopyFrom(TStringStream, 0); Es würde in jedem Fall zum gewünschten Ergebnis führen. Damit sollte auch der Sinn von abstrakten Klassen geklärt sein. Abstrakte Klassen sind dazu da, um gewisse Protokolle zu erzwingen und damit Kompatibilitäten zu schaffen. 18

22 13 Weitere wichtige Schlüsselwörter 13.1 Operator is Der Operator is führt eine dynamische Typprüfung durch. Mit ihm kann man den aktuellen Laufzeittyp eines Objekts ermitteln. Der Ausdruck Objekt is Klasse gibt True zurück, wenn Objekt eine Instanz der angegebenen Klasse oder eines ihrer Nachkommen ist. Trifft dies nicht zu, wird False zurückgegeben (hat Objekt den Wert nil, ist der Rückgabewert ebenfalls False). Wenn der deklarierte Typ von Objekt nicht mit Klasse verwandt ist (wenn die Typen also unterschiedlich und nicht voneinander abgeleitet sind), gibt der Compiler eine Fehlermeldung aus. Ein Beispiel: if ActiveControl is TEdit then TEdit(ActiveControl).SelectAll; Diese Anweisung prüft zuerst, ob die Variable eine Instanz von TEdit oder einem ihrer Nachkommen ist, und führt anschließend eine Typumwandlung in TEdit durch Operator as Der Operator as führt eine Typumwandlung mit Laufzeitprüfung durch. Der Ausdruck Objekt as Klasse gibt eine Referenz auf dasselbe Objekt wie Objekt, aber mit dem von Klasse angegebenen Typ zurück. Zur Laufzeit muß Objekt eine Instanz von Klasse oder einem ihrer Nachkommen bzw. nil sein. Andernfalls wird eine Exception ausgelöst. Wenn der deklarierte Typ von Objekt nicht mit Klasse verwandt ist (wenn die Typen also unterschiedlich und nicht voneinander abgeleitet sind), gibt der Compiler eine Fehlermeldung aus. Ein Beispiel: with Sender as TButton do begin Caption := '&Ok'; OnClick := OkClick; Die Regeln der Auswertungsreihenfolge machen es häufig erforderlich, as-typumwandlungen in Klammern zu setzen: (Sender as TButton).Caption := '&Ok'; 13.3 Parameter Self Der Bezeichner Self verweist in der Implementierung einer Methode auf das Objekt, in dem die Methode aufgerufen wird. Es ist also ein Pointer auf sich selbst und entspricht dem this aus C/C++. Self ist in vielen Situationen hilfreich. Wenn beispielsweise ein Element in einer Methode seiner Klasse erneut deklariert wird, kann mit Self.Bezeichner auf das Originalelement zugegriffen werden. 19

13 OOP MIT DELPHI. Records und Klassen Ein Vergleich

13 OOP MIT DELPHI. Records und Klassen Ein Vergleich 13 OOP MIT DELPHI Delphi war früher "Object Pascal". Dieser Name impliziert eine Funktionalität, welche in der Welt der Programmierung nicht mehr wegzudenken ist: die objektorientierte Programmierung,

Mehr

Vererbung & Schnittstellen in C#

Vererbung & Schnittstellen in C# Vererbung & Schnittstellen in C# Inhaltsübersicht - Vorüberlegung - Vererbung - Schnittstellenklassen - Zusammenfassung 1 Vorüberlegung Wozu benötigt man Vererbung überhaubt? 1.Um Zeit zu sparen! Verwendung

Mehr

Objektorientierte Programmierung

Objektorientierte Programmierung Objektorientierte Programmierung 1 Geschichte Dahl, Nygaard: Simula 67 (Algol 60 + Objektorientierung) Kay et al.: Smalltalk (erste rein-objektorientierte Sprache) Object Pascal, Objective C, C++ (wiederum

Mehr

Arbeiten mit UMLed und Delphi

Arbeiten mit UMLed und Delphi Arbeiten mit UMLed und Delphi Diese Anleitung soll zeigen, wie man Klassen mit dem UML ( Unified Modeling Language ) Editor UMLed erstellt, in Delphi exportiert und dort so einbindet, dass diese (bis auf

Mehr

Programmieren in Java

Programmieren in Java Programmieren in Java objektorientierte Programmierung 2 2 Zusammenhang Klasse-Datei In jeder *.java Datei kann es genau eine public-klasse geben wobei Klassen- und Dateiname übereinstimmen. Es können

Mehr

Programmierparadigmen. Programmierparadigmen. Imperatives vs. objektorientiertes Programmieren. Programmierparadigmen. Agenda für heute, 4.

Programmierparadigmen. Programmierparadigmen. Imperatives vs. objektorientiertes Programmieren. Programmierparadigmen. Agenda für heute, 4. Agenda für heute, 4. Mai, 2006 Programmierparadigmen Imperative Programmiersprachen In Prozeduren zusammengefasste, sequentiell ausgeführte Anweisungen Die Prozeduren werden ausgeführt, wenn sie als Teil

Mehr

Menü Macro. WinIBW2-Macros unter Windows7? Macros aufnehmen

Menü Macro. WinIBW2-Macros unter Windows7? Macros aufnehmen Menü Macro WinIBW2-Macros unter Windows7?... 1 Macros aufnehmen... 1 Menübefehle und Schaltflächen in Macros verwenden... 4 Macros bearbeiten... 4 Macros löschen... 5 Macro-Dateien... 5 Macros importieren...

Mehr

Mediator 9 - Lernprogramm

Mediator 9 - Lernprogramm Mediator 9 - Lernprogramm Ein Lernprogramm mit Mediator erstellen Mediator 9 bietet viele Möglichkeiten, CBT-Module (Computer Based Training = Computerunterstütztes Lernen) zu erstellen, z. B. Drag & Drop

Mehr

Windows. Workshop Internet-Explorer: Arbeiten mit Favoriten, Teil 1

Windows. Workshop Internet-Explorer: Arbeiten mit Favoriten, Teil 1 Workshop Internet-Explorer: Arbeiten mit Favoriten, Teil 1 Wenn der Name nicht gerade www.buch.de oder www.bmw.de heißt, sind Internetadressen oft schwer zu merken Deshalb ist es sinnvoll, die Adressen

Mehr

Einführung in die Programmierung

Einführung in die Programmierung Technische Universität München WS 2003/2004 Institut für Informatik Prof. Dr. Christoph Zenger Testklausur Einführung in die Programmierung Probeklausur Java (Lösungsvorschlag) 1 Die Klasse ArrayList In

Mehr

Vorkurs C++ Programmierung

Vorkurs C++ Programmierung Vorkurs C++ Programmierung Klassen Letzte Stunde Speicherverwaltung automatische Speicherverwaltung auf dem Stack dynamische Speicherverwaltung auf dem Heap new/new[] und delete/delete[] Speicherklassen:

Mehr

Einführung in die Java- Programmierung

Einführung in die Java- Programmierung Einführung in die Java- Programmierung Dr. Volker Riediger Tassilo Horn riediger horn@uni-koblenz.de WiSe 2012/13 1 Wichtig... Mittags keine Pommes... Praktikum A 230 C 207 (Madeleine + Esma) F 112 F 113

Mehr

Outlook. sysplus.ch outlook - mail-grundlagen Seite 1/8. Mail-Grundlagen. Posteingang

Outlook. sysplus.ch outlook - mail-grundlagen Seite 1/8. Mail-Grundlagen. Posteingang sysplus.ch outlook - mail-grundlagen Seite 1/8 Outlook Mail-Grundlagen Posteingang Es gibt verschiedene Möglichkeiten, um zum Posteingang zu gelangen. Man kann links im Outlook-Fenster auf die Schaltfläche

Mehr

Wie halte ich Ordnung auf meiner Festplatte?

Wie halte ich Ordnung auf meiner Festplatte? Wie halte ich Ordnung auf meiner Festplatte? Was hältst du von folgender Ordnung? Du hast zu Hause einen Schrank. Alles was dir im Wege ist, Zeitungen, Briefe, schmutzige Wäsche, Essensreste, Küchenabfälle,

Mehr

Programme im Griff Was bringt Ihnen dieses Kapitel?

Programme im Griff Was bringt Ihnen dieses Kapitel? 3-8272-5838-3 Windows Me 2 Programme im Griff Was bringt Ihnen dieses Kapitel? Wenn Sie unter Windows arbeiten (z.b. einen Brief schreiben, etwas ausdrucken oder ein Fenster öffnen), steckt letztendlich

Mehr

1 Mathematische Grundlagen

1 Mathematische Grundlagen Mathematische Grundlagen - 1-1 Mathematische Grundlagen Der Begriff der Menge ist einer der grundlegenden Begriffe in der Mathematik. Mengen dienen dazu, Dinge oder Objekte zu einer Einheit zusammenzufassen.

Mehr

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {... PIWIN I Kap. 8 Objektorientierte Programmierung - Vererbung 31 Schlüsselwort: final Verhindert, dass eine Methode überschrieben wird public final int holekontostand() {... Erben von einer Klasse verbieten:

Mehr

Objektorientierte Programmierung für Anfänger am Beispiel PHP

Objektorientierte Programmierung für Anfänger am Beispiel PHP Objektorientierte Programmierung für Anfänger am Beispiel PHP Johannes Mittendorfer http://jmittendorfer.hostingsociety.com 19. August 2012 Abstract Dieses Dokument soll die Vorteile der objektorientierten

Mehr

Folge 18 - Vererbung

Folge 18 - Vererbung Workshop Folge 18 - Vererbung 18.1 Ein einfacher Fall der Vererbung Schritt 1 - Vorbereitungen Besorgen Sie sich - vielleicht aus einer der Übungen der Folge 17 - ein fertiges und lauffähiges Listenprojekt,

Mehr

4 Aufzählungen und Listen erstellen

4 Aufzählungen und Listen erstellen 4 4 Aufzählungen und Listen erstellen Beim Strukturieren von Dokumenten und Inhalten stellen Listen und Aufzählungen wichtige Werkzeuge dar. Mit ihnen lässt sich so ziemlich alles sortieren, was auf einer

Mehr

Aufklappelemente anlegen

Aufklappelemente anlegen Aufklappelemente anlegen Dieses Dokument beschreibt die grundsätzliche Erstellung der Aufklappelemente in der mittleren und rechten Spalte. Login Melden Sie sich an der jeweiligen Website an, in dem Sie

Mehr

Jederzeit Ordnung halten

Jederzeit Ordnung halten Kapitel Jederzeit Ordnung halten 6 auf Ihrem Mac In diesem Buch war bereits einige Male vom Finder die Rede. Dieses Kapitel wird sich nun ausführlich diesem so wichtigen Programm widmen. Sie werden das

Mehr

L10N-Manager 3. Netzwerktreffen der Hochschulübersetzer/i nnen Mannheim 10. Mai 2016

L10N-Manager 3. Netzwerktreffen der Hochschulübersetzer/i nnen Mannheim 10. Mai 2016 L10N-Manager 3. Netzwerktreffen der Hochschulübersetzer/i nnen Mannheim 10. Mai 2016 Referentin: Dr. Kelly Neudorfer Universität Hohenheim Was wir jetzt besprechen werden ist eine Frage, mit denen viele

Mehr

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf http://informatik.swoke.de. Seite 1 von 22

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf http://informatik.swoke.de. Seite 1 von 22 Kapitel 19 Vererbung, UML Seite 1 von 22 Vererbung - Neben der Datenabstraktion und der Datenkapselung ist die Vererbung ein weiteres Merkmal der OOP. - Durch Vererbung werden die Methoden und die Eigenschaften

Mehr

Kapitel 3 Bilder farblich verändern - Arbeiten mit Objekten

Kapitel 3 Bilder farblich verändern - Arbeiten mit Objekten Nahezu auf jedem Buchcover, CD Hülle oder auf den Werbeseiten in Zeitschriften und Magazinen, sehen Sie fast ausschließlich Bilder, die mit einem EBV Programm einen sogenannten künstlerischen Touch erhalten

Mehr

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren Lineargleichungssysteme: Additions-/ Subtraktionsverfahren W. Kippels 22. Februar 2014 Inhaltsverzeichnis 1 Einleitung 2 2 Lineargleichungssysteme zweiten Grades 2 3 Lineargleichungssysteme höheren als

Mehr

Zwischenablage (Bilder, Texte,...)

Zwischenablage (Bilder, Texte,...) Zwischenablage was ist das? Informationen über. die Bedeutung der Windows-Zwischenablage Kopieren und Einfügen mit der Zwischenablage Vermeiden von Fehlern beim Arbeiten mit der Zwischenablage Bei diesen

Mehr

4. BEZIEHUNGEN ZWISCHEN TABELLEN

4. BEZIEHUNGEN ZWISCHEN TABELLEN 4. BEZIEHUNGEN ZWISCHEN TABELLEN Zwischen Tabellen können in MS Access Beziehungen bestehen. Durch das Verwenden von Tabellen, die zueinander in Beziehung stehen, können Sie Folgendes erreichen: Die Größe

Mehr

Flyer, Sharepics usw. mit LibreOffice oder OpenOffice erstellen

Flyer, Sharepics usw. mit LibreOffice oder OpenOffice erstellen Flyer, Sharepics usw. mit LibreOffice oder OpenOffice erstellen Wir wollen, dass ihr einfach für eure Ideen und Vorschläge werben könnt. Egal ob in ausgedruckten Flyern, oder in sozialen Netzwerken und

Mehr

Erstellen einer GoTalk-Auflage

Erstellen einer GoTalk-Auflage Erstellen einer GoTalk-Auflage 1. Bei dem Startbild Vorlage öffnen wählen 2. In dem folgenden Fenster Geräte Schablonen doppelt anklicken. - und schon öffnet sich der gesamte Katalog der verfügbaren Talker-Auflagen...eigentlich

Mehr

Zahlen auf einen Blick

Zahlen auf einen Blick Zahlen auf einen Blick Nicht ohne Grund heißt es: Ein Bild sagt mehr als 1000 Worte. Die meisten Menschen nehmen Informationen schneller auf und behalten diese eher, wenn sie als Schaubild dargeboten werden.

Mehr

Delphi eine Einführung

Delphi eine Einführung Delphi eine Einführung 1. Die Entwicklungsumgebung Delphi ist ein sogenanntes RAD Werkzeug. RAD = Rapid Application Development = schnelle Anwendungsentwicklung Merkmale: - es gibt vorgefertigte Komponenten

Mehr

Kreatives Gestalten mit Flash 5.0

Kreatives Gestalten mit Flash 5.0 Kreatives Gestalten mit Flash 5.0 Animationen, Effekte und Anwendungen für das WWW Bearbeitet von Isolde Kommer 1. Auflage 2000. Buch. 444 S. Hardcover ISBN 978 3 446 21463 7 Format (B x L): 20,1 x 23,6

Mehr

Informatik Kurs Simulation. Hilfe für den Consideo Modeler

Informatik Kurs Simulation. Hilfe für den Consideo Modeler Hilfe für den Consideo Modeler Consideo stellt Schulen den Modeler kostenlos zur Verfügung. Wenden Sie sich an: http://consideo-modeler.de/ Der Modeler ist ein Werkzeug, das nicht für schulische Zwecke

Mehr

Lizenzierung von SharePoint Server 2013

Lizenzierung von SharePoint Server 2013 Lizenzierung von SharePoint Server 2013 Das Lizenzmodell von SharePoint Server 2013 besteht aus zwei Komponenten: Serverlizenzen zur Lizenzierung der Serversoftware und CALs zur Lizenzierung der Zugriffe

Mehr

5 DATEN. 5.1. Variablen. Variablen können beliebige Werte zugewiesen und im Gegensatz zu

5 DATEN. 5.1. Variablen. Variablen können beliebige Werte zugewiesen und im Gegensatz zu Daten Makro + VBA effektiv 5 DATEN 5.1. Variablen Variablen können beliebige Werte zugewiesen und im Gegensatz zu Konstanten jederzeit im Programm verändert werden. Als Variablen können beliebige Zeichenketten

Mehr

In diesem Thema lernen wir die Grundlagen der Datenbanken kennen und werden diese lernen einzusetzen. Access. Die Grundlagen der Datenbanken.

In diesem Thema lernen wir die Grundlagen der Datenbanken kennen und werden diese lernen einzusetzen. Access. Die Grundlagen der Datenbanken. In diesem Thema lernen wir die Grundlagen der Datenbanken kennen und werden diese lernen einzusetzen. Access Die Grundlagen der Datenbanken kurspc15 Inhaltsverzeichnis Access... Fehler! Textmarke nicht

Mehr

Grundlagen verteilter Systeme

Grundlagen verteilter Systeme Universität Augsburg Insitut für Informatik Prof. Dr. Bernhard Bauer Wolf Fischer Christian Saad Wintersemester 08/09 Übungsblatt 3 12.11.08 Grundlagen verteilter Systeme Lösungsvorschlag Aufgabe 1: a)

Mehr

Enigmail Konfiguration

Enigmail Konfiguration Enigmail Konfiguration 11.06.2006 Steffen.Teubner@Arcor.de Enigmail ist in der Grundkonfiguration so eingestellt, dass alles funktioniert ohne weitere Einstellungen vornehmen zu müssen. Für alle, die es

Mehr

Erweiterung der Aufgabe. Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen:

Erweiterung der Aufgabe. Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen: VBA Programmierung mit Excel Schleifen 1/6 Erweiterung der Aufgabe Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen: Es müssen also 11 (B L) x 35 = 385 Zellen berücksichtigt

Mehr

EinfÅhrung in die objektorientiere Programmierung (OOP) unter Delphi 6.0. EDV Kurs 13/2

EinfÅhrung in die objektorientiere Programmierung (OOP) unter Delphi 6.0. EDV Kurs 13/2 EinfÅhrung in die objektorientiere Programmierung (OOP) unter Delphi 6.0 EDV Kurs 13/2 Inhaltsverzeichnis 1 Objekte... 1 2 Klassen... 3 2.1 Beziehungen zwischen Klassen... 4 2.1.1 Vererbung... 4 2.1.2

Mehr

Professionelle Seminare im Bereich MS-Office

Professionelle Seminare im Bereich MS-Office Serienbrief aus Outlook heraus Schritt 1 Zuerst sollten Sie die Kontakte einblenden, damit Ihnen der Seriendruck zur Verfügung steht. Schritt 2 Danach wählen Sie bitte Gerhard Grünholz 1 Schritt 3 Es öffnet

Mehr

Inhalt. Allgemeine Einführung. Argumentationsvermögen. Räumliches Vorstellungsvermögen. Begabungen und Fähigkeiten messen

Inhalt. Allgemeine Einführung. Argumentationsvermögen. Räumliches Vorstellungsvermögen. Begabungen und Fähigkeiten messen Beispielheft Inhalt Allgemeine Einführung Test Eins: Test Zwei: Test Drei: Test Vier: Test Fünf: Argumentationsvermögen Auffassungsvermögen Zahlenvermögen Sprachverständnis Räumliches Vorstellungsvermögen

Mehr

Kennen, können, beherrschen lernen was gebraucht wird www.doelle-web.de

Kennen, können, beherrschen lernen was gebraucht wird www.doelle-web.de Inhaltsverzeichnis Inhaltsverzeichnis... 1 Grundlagen... 2 Hyperlinks innerhalb einer Datei... 2 Verweisziel definieren... 2 Einen Querverweis setzen... 3 Verschiedene Arten von Hyperlinks... 3 Einfache

Mehr

Das sogenannte Beamen ist auch in EEP möglich ohne das Zusatzprogramm Beamer. Zwar etwas umständlicher aber es funktioniert

Das sogenannte Beamen ist auch in EEP möglich ohne das Zusatzprogramm Beamer. Zwar etwas umständlicher aber es funktioniert Beamen in EEP Das sogenannte Beamen ist auch in EEP möglich ohne das Zusatzprogramm Beamer. Zwar etwas umständlicher aber es funktioniert Zuerst musst du dir 2 Programme besorgen und zwar: Albert, das

Mehr

Virtuelle COM-Schnittstelle umbenennen

Virtuelle COM-Schnittstelle umbenennen Virtuelle COM-Schnittstelle umbenennen COM-Nummer eines USB/Seriell-Wandlers verändern Wenn man ein Gerät mit einem USB/Seriell-Wandler neu anschließt, wird meist eine neue virtuelle COM- Schnittstelle

Mehr

Anleitung über den Umgang mit Schildern

Anleitung über den Umgang mit Schildern Anleitung über den Umgang mit Schildern -Vorwort -Wo bekommt man Schilder? -Wo und wie speichert man die Schilder? -Wie füge ich die Schilder in meinen Track ein? -Welche Bauteile kann man noch für Schilder

Mehr

FuxMedia Programm im Netzwerk einrichten am Beispiel von Windows 7

FuxMedia Programm im Netzwerk einrichten am Beispiel von Windows 7 FuxMedia Programm im Netzwerk einrichten am Beispiel von Windows 7 Die Installation der FuxMedia Software erfolgt erst NACH Einrichtung des Netzlaufwerks! Menüleiste einblenden, falls nicht vorhanden Die

Mehr

1. Adressen für den Serienversand (Briefe Katalogdruck Werbung/Anfrage ) auswählen. Die Auswahl kann gespeichert werden.

1. Adressen für den Serienversand (Briefe Katalogdruck Werbung/Anfrage ) auswählen. Die Auswahl kann gespeichert werden. Der Serienversand Was kann man mit der Maske Serienversand machen? 1. Adressen für den Serienversand (Briefe Katalogdruck Werbung/Anfrage ) auswählen. Die Auswahl kann gespeichert werden. 2. Adressen auswählen,

Mehr

4 Vererbung, Polymorphie

4 Vererbung, Polymorphie 4 Vererbung, Polymorphie Jörn Loviscach Versionsstand: 21. März 2014, 22:57 Die nummerierten Felder sind absichtlich leer, zum Ausfüllen beim Ansehen der Videos: http://www.j3l7h.de/videos.html This work

Mehr

Handbuch Fischertechnik-Einzelteiltabelle V3.7.3

Handbuch Fischertechnik-Einzelteiltabelle V3.7.3 Handbuch Fischertechnik-Einzelteiltabelle V3.7.3 von Markus Mack Stand: Samstag, 17. April 2004 Inhaltsverzeichnis 1. Systemvorraussetzungen...3 2. Installation und Start...3 3. Anpassen der Tabelle...3

Mehr

Lieferschein Dorfstrasse 143 CH - 8802 Kilchberg Telefon 01 / 716 10 00 Telefax 01 / 716 10 05 info@hp-engineering.com www.hp-engineering.

Lieferschein Dorfstrasse 143 CH - 8802 Kilchberg Telefon 01 / 716 10 00 Telefax 01 / 716 10 05 info@hp-engineering.com www.hp-engineering. Lieferschein Lieferscheine Seite 1 Lieferscheine Seite 2 Inhaltsverzeichnis 1. STARTEN DER LIEFERSCHEINE 4 2. ARBEITEN MIT DEN LIEFERSCHEINEN 4 2.1 ERFASSEN EINES NEUEN LIEFERSCHEINS 5 2.1.1 TEXTFELD FÜR

Mehr

Produktschulung WinDachJournal

Produktschulung WinDachJournal Produktschulung WinDachJournal Codex GmbH Stand 2009 Inhaltsverzeichnis Einleitung... 3 Starten des Programms... 4 Erfassen von Notizen in WinJournal... 6 Einfügen von vorgefertigten Objekten in WinJournal...

Mehr

Java Kurs für Anfänger Einheit 4 Klassen und Objekte

Java Kurs für Anfänger Einheit 4 Klassen und Objekte Java Kurs für Anfänger Einheit 4 Klassen und Ludwig-Maximilians-Universität München (Institut für Informatik: Programmierung und Softwaretechnik von Prof.Wirsing) 13. Juni 2009 Inhaltsverzeichnis klasse

Mehr

Flashfragen in ILIAS Test & Assessment. Helmut Schottmüller

Flashfragen in ILIAS Test & Assessment. Helmut Schottmüller Flashfragen in ILIAS Test & Assessment Helmut Schottmüller Flashfragen in ILIAS Test & Assessment Helmut Schottmüller Veröffentlicht Januar 2009 Copyright 2009 Helmut Schottmüller Inhaltsverzeichnis 1.

Mehr

Primzahlen und RSA-Verschlüsselung

Primzahlen und RSA-Verschlüsselung Primzahlen und RSA-Verschlüsselung Michael Fütterer und Jonathan Zachhuber 1 Einiges zu Primzahlen Ein paar Definitionen: Wir bezeichnen mit Z die Menge der positiven und negativen ganzen Zahlen, also

Mehr

Dokumentation IBIS Monitor

Dokumentation IBIS Monitor Dokumentation IBIS Monitor Seite 1 von 16 11.01.06 Inhaltsverzeichnis 1. Allgemein 2. Installation und Programm starten 3. Programmkonfiguration 4. Aufzeichnung 4.1 Aufzeichnung mitschneiden 4.1.1 Inhalt

Mehr

Kontakte Dorfstrasse 143 CH - 8802 Kilchberg Telefon 01 / 716 10 00 Telefax 01 / 716 10 05 info@hp-engineering.com www.hp-engineering.

Kontakte Dorfstrasse 143 CH - 8802 Kilchberg Telefon 01 / 716 10 00 Telefax 01 / 716 10 05 info@hp-engineering.com www.hp-engineering. Kontakte Kontakte Seite 1 Kontakte Seite 2 Inhaltsverzeichnis 1. ALLGEMEINE INFORMATIONEN ZU DEN KONTAKTEN 4 2. WICHTIGE INFORMATIONEN ZUR BEDIENUNG VON CUMULUS 4 3. STAMMDATEN FÜR DIE KONTAKTE 4 4. ARBEITEN

Mehr

E Mail Versand mit der Schild NRW Formularverwaltung

E Mail Versand mit der Schild NRW Formularverwaltung -Seite 1- E Mail Versand mit der Schild NRW Formularverwaltung Seit der Version 1.12.3.97 der Reportverwaltung ist die Möglichkeit integriert, E Mails direkt, d.h. ohne Umweg über einen externen Mailclient

Mehr

Erweitertes Kalkulationsfenster

Erweitertes Kalkulationsfenster Erweitertes Kalkulationsfenster Inhaltsverzeichnis 1. Bereich "Kalkulation" (Fokussierung: Ctrl-F2)... 3 2. Bereich "Kennzahlen"... 4 3. Bereich "Positionswerte"... 5 4. Bereich "Vorhandene Analysen" /

Mehr

S/W mit PhotoLine. Inhaltsverzeichnis. PhotoLine

S/W mit PhotoLine. Inhaltsverzeichnis. PhotoLine PhotoLine S/W mit PhotoLine Erstellt mit Version 16.11 Ich liebe Schwarzweiß-Bilder und schaue mir neidisch die Meisterwerke an, die andere Fotografen zustande bringen. Schon lange versuche ich, auch so

Mehr

Datensicherung. Beschreibung der Datensicherung

Datensicherung. Beschreibung der Datensicherung Datensicherung Mit dem Datensicherungsprogramm können Sie Ihre persönlichen Daten problemlos Sichern. Es ist möglich eine komplette Datensicherung durchzuführen, aber auch nur die neuen und geänderten

Mehr

Zählen von Objekten einer bestimmten Klasse

Zählen von Objekten einer bestimmten Klasse Zählen von Objekten einer bestimmten Klasse Ziel, Inhalt Zur Übung versuchen wir eine Klasse zu schreiben, mit der es möglich ist Objekte einer bestimmten Klasse zu zählen. Wir werden den ++ und den --

Mehr

Computeranwendung und Programmierung (CuP)

Computeranwendung und Programmierung (CuP) Computeranwendung und Programmierung (CuP) VO: Peter Auer (Informationstechnologie) UE: Norbert Seifter (Angewandet Mathematik) Organisatorisches (Vorlesung) Vorlesungszeiten Montag 11:15 12:45 Freitag

Mehr

1 topologisches Sortieren

1 topologisches Sortieren Wolfgang Hönig / Andreas Ecke WS 09/0 topologisches Sortieren. Überblick. Solange noch Knoten vorhanden: a) Suche Knoten v, zu dem keine Kante führt (Falls nicht vorhanden keine topologische Sortierung

Mehr

Erstellen einer Collage. Zuerst ein leeres Dokument erzeugen, auf dem alle anderen Bilder zusammengefügt werden sollen (über [Datei] > [Neu])

Erstellen einer Collage. Zuerst ein leeres Dokument erzeugen, auf dem alle anderen Bilder zusammengefügt werden sollen (über [Datei] > [Neu]) 3.7 Erstellen einer Collage Zuerst ein leeres Dokument erzeugen, auf dem alle anderen Bilder zusammengefügt werden sollen (über [Datei] > [Neu]) Dann Größe des Dokuments festlegen beispielsweise A4 (weitere

Mehr

Gruppenrichtlinien und Softwareverteilung

Gruppenrichtlinien und Softwareverteilung Gruppenrichtlinien und Softwareverteilung Ergänzungen zur Musterlösung Bitte lesen Sie zuerst die gesamte Anleitung durch! Vorbemerkung: Die Begriffe OU (Organizational Unit) und Raum werden in der folgenden

Mehr

Über Arrays und verkettete Listen Listen in Delphi

Über Arrays und verkettete Listen Listen in Delphi Über Arrays und verkettete Listen Listen in Delphi Michael Puff mail@michael-puff.de 2010-03-26 Inhaltsverzeichnis Inhaltsverzeichnis 1 Einführung 3 2 Arrays 4 3 Einfach verkettete Listen 7 4 Doppelt verkettete

Mehr

Objektorientierte Programmierung OOP

Objektorientierte Programmierung OOP Objektorientierte Programmierung OOP Objektorientierte Programmierung OOP Ronja Düffel WS2012/13 08. Oktober 2013 Objektorientierte Programmierung OOP Objektorientierte Programmierung Objektorientierte

Mehr

Leitfaden zur ersten Nutzung der R FOM Portable-Version für Windows (Version 1.0)

Leitfaden zur ersten Nutzung der R FOM Portable-Version für Windows (Version 1.0) Leitfaden zur ersten Nutzung der R FOM Portable-Version für Windows (Version 1.0) Peter Koos 03. Dezember 2015 0 Inhaltsverzeichnis 1 Voraussetzung... 3 2 Hintergrundinformationen... 3 2.1 Installationsarten...

Mehr

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom 21.10.2013b

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom 21.10.2013b AGROPLUS Buchhaltung Daten-Server und Sicherheitskopie Version vom 21.10.2013b 3a) Der Daten-Server Modus und der Tresor Der Daten-Server ist eine Betriebsart welche dem Nutzer eine grosse Flexibilität

Mehr

Erstellen von x-y-diagrammen in OpenOffice.calc

Erstellen von x-y-diagrammen in OpenOffice.calc Erstellen von x-y-diagrammen in OpenOffice.calc In dieser kleinen Anleitung geht es nur darum, aus einer bestehenden Tabelle ein x-y-diagramm zu erzeugen. D.h. es müssen in der Tabelle mindestens zwei

Mehr

Stand: 28.11.2012. Adressnummern ändern Modulbeschreibung

Stand: 28.11.2012. Adressnummern ändern Modulbeschreibung Seite 1 Inhalt Allgemein...3 Installation...3 manuelle Eingabe von alten und neuen Adressnummern...4 Vorbereiten von Adressnummern-Änderungen in Tabellen...5 Seite 2 Allgemein Das INKS-Modul ermöglicht

Mehr

Matrix42. Use Case - Sicherung und Rücksicherung persönlicher Einstellungen über Personal Backup. Version 1.0.0. 23. September 2015 - 1 -

Matrix42. Use Case - Sicherung und Rücksicherung persönlicher Einstellungen über Personal Backup. Version 1.0.0. 23. September 2015 - 1 - Matrix42 Use Case - Sicherung und Rücksicherung persönlicher Version 1.0.0 23. September 2015-1 - Inhaltsverzeichnis 1 Einleitung 3 1.1 Beschreibung 3 1.2 Vorbereitung 3 1.3 Ziel 3 2 Use Case 4-2 - 1 Einleitung

Mehr

Verschlüsseln von Dateien mit Hilfe einer TCOS-Smartcard per Truecrypt. T-Systems International GmbH. Version 1.0 Stand 29.06.11

Verschlüsseln von Dateien mit Hilfe einer TCOS-Smartcard per Truecrypt. T-Systems International GmbH. Version 1.0 Stand 29.06.11 Verschlüsseln von Dateien mit Hilfe einer TCOS-Smartcard per Truecrypt T-Systems International GmbH Version 1.0 Stand 29.06.11 Impressum Herausgeber T-Systems International GmbH Untere Industriestraße

Mehr

Objektorientierte Programmierung. Kapitel 12: Interfaces

Objektorientierte Programmierung. Kapitel 12: Interfaces 12. Interfaces 1/14 Objektorientierte Programmierung Kapitel 12: Interfaces Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester 2012/13 http://www.informatik.uni-halle.de/ brass/oop12/

Mehr

Access 2010. für Windows. Ricardo Hernández García 1. Ausgabe, 1. Aktualisierung, Dezember 2011. Automatisierung, Programmierung ACC2010P

Access 2010. für Windows. Ricardo Hernández García 1. Ausgabe, 1. Aktualisierung, Dezember 2011. Automatisierung, Programmierung ACC2010P Ricardo Hernández García 1. Ausgabe, 1. Aktualisierung, Dezember 2011 Access 2010 für Windows Automatisierung, Programmierung ACC2010P 4 Access 2010 für Windows - Automatisierung, Programmierung 4 Mit

Mehr

Diese Anleitung wurde erstellt von Niclas Lüchau und Daniel Scherer. Erste Anmeldung. Schritt 1: Anmeldung..2. Schritt 2: Passwort setzen 3

Diese Anleitung wurde erstellt von Niclas Lüchau und Daniel Scherer. Erste Anmeldung. Schritt 1: Anmeldung..2. Schritt 2: Passwort setzen 3 Diese Anleitung wurde erstellt von Niclas Lüchau und Daniel Scherer Inhalt Erste Anmeldung. Schritt 1: Anmeldung..2 Schritt 2: Passwort setzen 3 Schritt 3: Nachträgliches Ändern des Passworts..4 Schreiben

Mehr

Informatik GK 12 Klassen Klassen programmieren in Delphi am Beispiel der konkreten Klasse Auto

Informatik GK 12 Klassen Klassen programmieren in Delphi am Beispiel der konkreten Klasse Auto programmieren in Delphi am Beispiel der konkreten Klasse Auto Auto -Baujahr -Typ -Besitzer -Farbe -Kilometerstand -Fahren() -Bremsen() Objekt1: Auto Typ: Golf Baujahr: 1998 Besitzer: Peter Farbe: rot Kilometerstand:

Mehr

Handbuch für Redakteure

Handbuch für Redakteure Handbuch für Redakteure Erste Schritte... 1 Artikel erstellen... 2 Artikelinhalt bearbeiten... 3 Artikel bearbeiten... 3 Grunddaten ändern... 5 Weitere Artikeleigenschaften... 5 Der WYSIWYG-Editor... 6

Mehr

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag Ludwig-Maximilians-Universität München WS 2015/16 Institut für Informatik Übungsblatt 9 Prof. Dr. R. Hennicker, A. Klarl Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung:

Mehr

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen Binäre Bäume 1. Allgemeines Binäre Bäume werden grundsätzlich verwendet, um Zahlen der Größe nach, oder Wörter dem Alphabet nach zu sortieren. Dem einfacheren Verständnis zu Liebe werde ich mich hier besonders

Mehr

Wie Sie mit Mastern arbeiten

Wie Sie mit Mastern arbeiten Wie Sie mit Mastern arbeiten Was ist ein Master? Einer der großen Vorteile von EDV besteht darin, dass Ihnen der Rechner Arbeit abnimmt. Diesen Vorteil sollten sie nutzen, wo immer es geht. In PowerPoint

Mehr

Lizenzierung von SharePoint Server 2013

Lizenzierung von SharePoint Server 2013 Lizenzierung von SharePoint Server 2013 Das Lizenzmodell von SharePoint Server 2013 besteht aus zwei Komponenten: Serverlizenzen zur Lizenzierung der Serversoftware und CALs zur Lizenzierung der Zugriffe

Mehr

Handbuch für Redakteure

Handbuch für Redakteure Handbuch für Redakteure Erste Schritte... 1 Artikel erstellen... 2 Artikelinhalt bearbeiten... 3 Artikel bearbeiten... 3 Grunddaten ändern... 5 Weitere Artikeleigenschaften... 5 Der WYSIWYG-Editor... 6

Mehr

Fachgebiet Informationssysteme Prof. Dr.-Ing. N. Fuhr. Programmierung Prof. Dr.-Ing. Nobert Fuhr. Übungsblatt Nr. 6

Fachgebiet Informationssysteme Prof. Dr.-Ing. N. Fuhr. Programmierung Prof. Dr.-Ing. Nobert Fuhr. Übungsblatt Nr. 6 Gudrun Fischer Sascha Kriewel programmierung@is.informatik.uni-duisburg.de Anmeldung zur Klausur! Übungsblatt Nr. 6 Um an der Klausur teilzunehmen, müssen sich Studierende der angewandten Informatik in

Mehr

Handbuch für Redakteure

Handbuch für Redakteure Handbuch für Redakteure Erste Schritte... 1 Artikel erstellen... 2 Artikelinhalt bearbeiten... 3 Artikel bearbeiten... 3 Trennen der Druck- und der Online-Version.. 4 Grunddaten ändern... 5 Weitere Artikel-eigenschaften...

Mehr

Zeichen bei Zahlen entschlüsseln

Zeichen bei Zahlen entschlüsseln Zeichen bei Zahlen entschlüsseln In diesem Kapitel... Verwendung des Zahlenstrahls Absolut richtige Bestimmung von absoluten Werten Operationen bei Zahlen mit Vorzeichen: Addieren, Subtrahieren, Multiplizieren

Mehr

Ist Excel das richtige Tool für FMEA? Steve Murphy, Marc Schaeffers

Ist Excel das richtige Tool für FMEA? Steve Murphy, Marc Schaeffers Ist Excel das richtige Tool für FMEA? Steve Murphy, Marc Schaeffers Ist Excel das richtige Tool für FMEA? Einleitung Wenn in einem Unternehmen FMEA eingeführt wird, fangen die meisten sofort damit an,

Mehr

Wo möchten Sie die MIZ-Dokumente (aufbereitete Medikamentenlisten) einsehen?

Wo möchten Sie die MIZ-Dokumente (aufbereitete Medikamentenlisten) einsehen? Anleitung für Evident Seite 1 Anleitung für Evident-Anwender: Einbinden der MIZ-Dokumente in Evident. Wo möchten Sie die MIZ-Dokumente (aufbereitete Medikamentenlisten) einsehen? Zunächst müssen Sie entscheiden,

Mehr

MINDMAP. HANDREICHUNG (Stand: August 2013)

MINDMAP. HANDREICHUNG (Stand: August 2013) MINDMAP HANDREICHUNG (Stand: August 2013) Seite 2, Mindmap Inhalt Eine Mindmap anlegen... 3 Einstellungen für die Mindmap... 3 Inhalte in der Mindmap voranlegen... 4 Inhalte in der Mindmap anlegen... 5

Mehr

Hilfedatei der Oden$-Börse Stand Juni 2014

Hilfedatei der Oden$-Börse Stand Juni 2014 Hilfedatei der Oden$-Börse Stand Juni 2014 Inhalt 1. Einleitung... 2 2. Die Anmeldung... 2 2.1 Die Erstregistrierung... 3 2.2 Die Mitgliedsnummer anfordern... 4 3. Die Funktionen für Nutzer... 5 3.1 Arbeiten

Mehr

Hilfe Bearbeitung von Rahmenleistungsverzeichnissen

Hilfe Bearbeitung von Rahmenleistungsverzeichnissen Hilfe Bearbeitung von Rahmenleistungsverzeichnissen Allgemeine Hinweise Inhaltsverzeichnis 1 Allgemeine Hinweise... 3 1.1 Grundlagen...3 1.2 Erstellen und Bearbeiten eines Rahmen-Leistungsverzeichnisses...

Mehr

Microsoft Visual Studio Community 2015

Microsoft Visual Studio Community 2015 Microsoft Visual Studio Community 2015 Visual Studio Community 2015 ist eine kostenlose IDE mit leistungsfähigen Programmier- und Entwicklungswerkzeugen für Windows, ios und Android. Sie ist für einzelne

Mehr

Programmierkurs Java

Programmierkurs Java Programmierkurs Java Konstruktor, Statische Methoden Packages Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer Initialisierung von Datenstrukturen

Mehr

Handbuch ECDL 2003 Professional Modul 3: Kommunikation Kalender freigeben und andere Kalender aufrufen

Handbuch ECDL 2003 Professional Modul 3: Kommunikation Kalender freigeben und andere Kalender aufrufen Handbuch ECDL 2003 Professional Modul 3: Kommunikation Kalender freigeben und andere Kalender aufrufen Dateiname: ecdl_p3_02_03_documentation.doc Speicherdatum: 08.12.2004 ECDL 2003 Professional Modul

Mehr

Bedienungsanleitung Anlassteilnehmer (Vereinslisten)

Bedienungsanleitung Anlassteilnehmer (Vereinslisten) Bedienungsanleitung Anlassteilnehmer Dieses Programm ist speziell für Vereine entworfen. Es ist lizenzfrei verwendbar und gratis. Das Programm ist mit Excel 2010 erstellt worden und enthält VBA Programmierungen,

Mehr

Wie man Registrationen und Styles von Style/Registration Floppy Disketten auf die TYROS-Festplatte kopieren kann.

Wie man Registrationen und Styles von Style/Registration Floppy Disketten auf die TYROS-Festplatte kopieren kann. Wie man Registrationen und Styles von Style/Registration Floppy Disketten auf die TYROS-Festplatte kopieren kann. Einleitung Es kommt vor, dass im Handel Disketten angeboten werden, die Styles und Registrationen

Mehr

3. Die tägliche E-Mail-Flut effizient verwalten

3. Die tägliche E-Mail-Flut effizient verwalten 3. Es ist wie im normalen Leben: Wenn man etwas vernünftig einsortiert, findet man es auch rasch wieder. In Outlook ist das ähnlich. Denn mit der Zeit sammeln sich sehr viele E-Mails an. Wer da keine logische

Mehr

Dokumentenverwaltung im Internet

Dokumentenverwaltung im Internet Dokumentenverwaltung im Internet WS 09/10 mit: Thema: Workflow und Rollenverteilung im Backend Gruppe: DVI 10 Patrick Plaum und Kay Hofmann Inhalt 1. Benutzer und Benutzergruppen erstellen...2 1.1. Benutzergruppen...2

Mehr