Aspekte objektorientierter Programmierung. mit Delphi

Größe: px
Ab Seite anzeigen:

Download "Aspekte objektorientierter Programmierung. mit Delphi"

Transkript

1 IFB-Veranstaltungen : / A und weitere Von Pascal nach Delphi Aspekte objektorientierter Programmierung mit Delphi Ulrich Mayr, Trier

2 Inhaltsverzeichnis OOP-Konzepte von Delphi verstehen und anwenden 1. Projekte mit vielen Komponenten gleichen Typs / Projekt Nim-Spiel ( Version 1 ) Mehrere Komponenten in einem Feld zusammenfassen Prozeduren zur Ereignisbehandlung variabel formulieren Ereignisse einer Komponente verstehen Ergänzende Betrachtungen Übungsphase : Projekt Lottozahlen1 2. Projekte mit vielen Komponenten gleichen Typs / Projekt Nimspiel (Version 2 ) Erzeugen von Komponenten zur Laufzeit Verwenden von Konstruktoren Ergänzende Betrachtungen Übungsphase : Projekt Lottozahlen2 3. Einige Delphi Grundbegriffe Klassen, Instanzen, Vererbung, VCL Instanzen sind Zeigervariable Zuweisungskompatibilität von Instanzen Eigenschaften (Properties) Ereignisse 4. Entwicklung neuer Komponenten für die VCL Die Komponente TLabel1 ( Definition / Registrierung) Die Sichtbarkeitsstufen private, protected, public, published Verwendung von TLabel1 5. Anhang : Botschaften U. Mayr : Aspekte objektorientierter Programmierung mit Delphi S. 2

3 1. Das Projekt Nim-Spiel (Version 1) Wir wollen eine einfache Version eines Nim-Spiels realisieren. Der Nutzer spielt gegen den Computer. Spielregeln : Es werden zufällig 10 bis 14 Hölzchen bereitgestellt. Abwechselnd zieht der Nutzer und der Computer ein oder zwei Hölzchen. Wer das letzte Hölzchen nehmen muss hat verloren. Übung : Laden Sie das Programm Nimm1.exe und spielen Sie einige Runden um mit dem Ablauf vertraut zu werden. Mit Hilfe der visuellen Programmierung lässt sich schnell ein Formular erstellen auf dem 14 schmale Rechtecke als Hölzchen und drei Knöpfe zu finden sind. unit Nim; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,StdCtrls, ExtCtrls; const N = 14; type TForm1 = class(tform) Label_Anzahl: TLabel; Label_Status: TLabel; Shape1 : TShape;... Shape14: TShape; Button_Nehmen : TButton; Button_Neu : TButton; Button_Rechnerzug : TButton; public var Form1: TForm1; U. Mayr : Aspekte objektorientierter Programmierung mit Delphi S. 3

4 Das Projekt soll nun schrittweise ergänzt werden, sodass folgender Aufbau entsteht : unit Nim; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,StdCtrls, ExtCtrls; const N = 14; type TForm1 = class(tform) Label_Anzahl: TLabel; Label_Status: TLabel; Shape1 : TShape;... Shape14: TShape; Button_Nehmen : TButton; Button_Neu : TButton; Button_Rechnerzug : TButton; var procedure FormCreate(Sender: TObject); procedure Shape1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure Button_NehmenClick(Sender: TObject); procedure Button_NeuClick(Sender: TObject); procedure Button_RechnerzugClick(Sender: TObject); public Holz : array[1..n] of TShape; function Anzahl(Farbe:TColor):integer; { Anzahl der sichtbaren Hölzer mit bestimmter Farbe } Form1: TForm1; Für die Verwaltung der 14 Rechtecke wäre es komfortabel, diese in einem Feld zu haben etwa Holz : array[1..n] of TShape. Das lässt sich auf folgendem Weg erreichen. Man deklariert im Formular ein solches Feld. Damit ist aber noch nicht festgelegt, dass mit dem Feld Holz die Formen U. Mayr : Aspekte objektorientierter Programmierung mit Delphi S. 4

5 Shape1 bis Shape14 gemeint sind. Deshalb müssen entsprechende Zuweisungen formuliert werden. Dies erfolgt am besten beim Erzeugen des Formulars also in der Methode Formcreate. procedure TForm1.FormCreate(Sender: TObject); var s : string; i : integer; { Es geht auch weniger elegant } for i:= 1 to N do s:= 'Shape'+IntToStr(i); Holz[i] := TShape(findcomponent(s)); Dabei wird für Shape1 bis Shape14 zuerst der Name des Shapes in s gespeichert. Danach sucht die Funktion findcomponent die Komponente mit dem Namen s und diese wird der Variablen Holz[1].. Holz[14] zugeordnet. Der Funktionswert hat allerdings den Typ TObject. Deshalb muss noch eine Typumwandlung in den Typ TShape stattfinden. Holz[i] := TShape(findcomponent(s)); Interpretation : Suche die Komponente mit dem Namen s. Diese ist vom Typ TShape. Weise sie der Variablen Holz[i] zu. Mit dieser Maßnahme lassen sich die Hölzchen leicht verwalten. Zum Beispiel kann eine Funktion Anzahl formuliert werden, die zählt wieviele Hölzer einer vorgegebenen Farbe sichtbar sind. function TForm1.Anzahl(Farbe:TColor):integer; var i : integer; result:= 0; for i:= 1 to N do with Holz[i] do if visible and brush.color=farbe then result:= result + 1; U. Mayr : Aspekte objektorientierter Programmierung mit Delphi S. 5

6 Das Verhalten der Hölzchen beim Anklicken muss noch festgelegt werden. Lästig wäre es für jedes der 14 Hölzchen eine eigene Ereignisbehandlungsprozedur für das Ereignis OnMouseDown zuzuweisen wie etwa für Shape1 im folgenden Beispiel. procedure TForm1.Shape1MouseDown(Sender: TObject; --- ); if Button_Nehmen.enabled then if Shape1.brush.color = clred then Shape1.brush.color:= clwhite else if Anzahl(clred)< 2 then Shape1.brush.color:= clred; Label_Anzahl.caption := IntToStr(Anzahl(clwhite)); Eine Vereinfachung lässt sich erreichen, indem man diese Prozedur so allgemein schreibt, dass sie für alle Hölzchen gültig ist und dann diese Prozedur jedem Hölzchen für die Behandlung des Mouse-Down-Ereignis im Objektinspektor zuweist. procedure TForm1.Shape1MouseDown(Sender: TObject; --- ); var Shape : TShape; if Button_Nehmen.enabled then Shape:= TShape(Sender); if Shape.brush.color = clred then Shape.brush.color:= clwhite else if Anzahl(clred)< 2 then Shape.brush.color:= clred; Label_Anzahl.caption := IntToStr(Anzahl(clwhite)); U. Mayr : Aspekte objektorientierter Programmierung mit Delphi S. 6

7 Mit dem Parameter Sender vom Typ TObject bekommt die Prozedur die Komponente genannt, auf die geklickt wurde, also das angeklickte Hölzchen. Wenn wir dieses nun rot oder weiß färben wollen, können wir nicht einfach auf Sender.brush.color zugreifen, da Sender als eine Instanz vom Typ TObject diese Eigenschaft nicht besitzt. Wir müssen dem System erst mitteilen, dass Sender sogar den Nachfolgertyp TShape hat, bevor wir solche Eigenschaften ansprechen, die nicht in TObject zu finden sind. Statt Sender wird TShape(Sender) benutzt, was soviel bedeutet wie die Instanz Sender, die eigentlich vom Nachfolgertyp TShape ist. Man spricht von Typumwandlung. An dieser Stelle kann auf die Zuweisungskompatiblität von Instanzen verschiedener Typen eingegangen werden, die von TObject abgeleitet sind. Übung : Projekt Lottozahlen1 Es soll eine Lottoziehung simuliert werden. Laden Sie die Anwendung Lotto1.exe und machen Sie sich mit dem Vorgehen vertraut. Entwickeln Sie diese Anwendung. Sie können das halbfertige Projekt Lotto1.dpr vervollständigen oder das Projekt von Anfang an erzeugen. Die Felder zum Ankreuzen haben den Typ TCheckBox. Beim Anklicken erhalten sie ein Häkchen, das beim erneuten Anklicken wieder verschwindet. In der Eigenschaft checked ( boolean) wird festgehalten ob das Feld ausgewählt ist. U. Mayr : Aspekte objektorientierter Programmierung mit Delphi S. 7

8 2. Das Projekt Nim-Spiel (Version 2) Erzeugung von Komponenten zur Laufzeit In der ersten Version des Nimspiels haben wir gesehen, wie man 14 Komponenten Shape1 bis Shape14 in ein Feld Holz[1] bis Holz[14] bringt und eine einzige Ereignisbehandlungsprozedur für alle 14 Komponenten formulieren kann. Ein Schönheitsfehler dabei ist das doppelte Auftreten von Variablen für die 14 Komponenten. Wir werden die 14 Hölzchen in einer 2. Version nicht durch Entwurf mit Hilfe des Objektinspektors erzeugen, sondern zur Laufzeit beim Start des Programms. In der Deklaration von TForm1 entfallen dann die Variablen Shape1 bis Shape14. Wenn wir das Feld Holz im Typ TForm1 deklarieren mit : ' Holz : array[1..14] of TShape ' sind damit nur 14 Zeigervariable festgelegt die den Wert nil haben. Bevor man auf das Feld Holz zugreifen kann, müssen die Instanzen erzeugt und die nötigen Eigenschaften wie Größe und Position gesetzt werden. Beim Visuellen Programmieren wird die Erzeugung der Instanzen automatisch durchgeführt, die Einstellung der Eigenschaften beim Entwurf über den Objektinspektor. Die Vereinbarungen für TForm1 haben dann folgende Gestalt : type TForm1 = class(tform) Label_Anzahl: TLabel; Label_Status: TLabel; Shape1 :TShape; { kann nach Erstellen der Prozedur Shape1MouseDown gelöscht werden } Button_Nehmen: TButton; Button_Neu: TButton; U. Mayr : Aspekte objektorientierter Programmierung mit Delphi S. 8

9 Button_Rechnerzug: TButton; procedure FormCreate(Sender: TObject); procedure Button_NehmenClick(Sender: TObject); procedure Button_NeuClick(Sender: TObject); procedure Button_RechnerzugClick(Sender:TObject); procedure Shape1MouseDown(Sender: TObject; --- ); public Holz : array[1..n] of TShape; function Anzahl(Farbe:TColor):integer; Die Prozedur Shape1MouseDown bleibt erhalten. Bei ihrer Erstellung müssten wir eigentlich ohne die Hilfe des Objektinspektors auskommen und die richtige Parameterliste für die Behandlung des Ereignisses OnMouseDown von Hand eintragen. Mit einem Trick kann der Inspektor uns doch behilflich sein. Wir ziehen eine Figur Shape1 auf das Formular und schreiben für sie die Ereignisbehandlungsprozedur Shape1MouseDown wie bei Version 1. Anschließend löschen wir Shape1 wieder. Die Prozedur Shape1MouseDown bleibt aber erhalten. Diese Prozedur wird nun allen Hölzchen Holz[1] bis Holz[14] als Behandlungsroutine für das Ereignis OnMouseDown zugewiesen. Zuerst müssen die Instanzen Holz[1] bis Holz[14] erzeugt werden. Das geschieht am besten wenn das Formular erschaffen wird in der Prozedur FormCreate. procedure TForm1.FormCreate(Sender: TObject); var i : integer; for i:= 1 to N do Holz[i] := TShape.create(self); with Holz[i] do Parent := self; Top := 104+(i-1)*25; Height := 15; Left := 30; Width := 120; U. Mayr : Aspekte objektorientierter Programmierung mit Delphi S. 9

10 OnMouseDown:= Shape1MouseDown; randomize; Jede Figur Holz[i] wird zuerst mit dem Aufruf des Konstruktors Create der Klasse TShape erzeugt. Der Parameter self gibt hier an, dass das Formular Besitzer der Figur Holz[i] ist. In dieser Anweisung steckt das Reservieren von Speicherplatz ( Prozeduraufruf new ) und das anschließende Initialisieren einiger Eigenschaften. Nach dem Erzeugen müssen die Eigenschaften von Holz[i] angepasst werden. Das sind vor allem Position im Formular und Ausdehnung. Dann wird dem Ereignis OnMouseDown die bereits erstellte Prozedur Shape1MouseDown zugeordnet. Somit bekommen alle Hölzer das gewünschte Verhalten. Shape1 Holz[1] Holz[14] OnMouseDown OnMouseDown OnMouseDown procedure TForm1.Shape1MouseDown (Sender: TObject; - ); var Shape : TShape; if Button_Nehmen.enabled then Shape:= TShape(Sender); if Shape.brush.color = clred then Shape.brush.color:= clwhite else if Anzahl(clred)< 2 then Shape.brush.color:= clred; Label_Anzahl.caption := IntToStr(Anzahl(clwhite)); U. Mayr : Aspekte objektorientierter Programmierung mit Delphi S. 10

11 Anmerkungen : 1) Wird eine Komponente innerhalb des Entwurfsmodus gelöscht, so verbleiben Methoden, die für die Ereignisbehandlung dieser Komponenten geschrieben wurden, im Quelltext. Begründung : Die Methoden können auch von anderen Komponenten benutzt werden. Soll die Methode gelöscht werden, so löscht man den Anweisungsteil und den Deklarationsteil der Methode. Bei der nächsten Übersetzung erkennt das System, dass die Methode überflüssig ist und löscht sie und alle Zeuger, die von Komponenten auf die Methode zeigen. 2) Die Verbindung von einer Komponente zu einer Ereignisbehandlungsprozedur ist nur lose über einen Zeiger geregelt. Wir hätten statt für Shape1 auch eine Methode TForm1.Form1MouseDown(sender:TOject; --- ) für das Formular schreiben können mit demselben Inhalt wie TForm1.Shape1MouseDown und diese Methode allen Shapes Holz[1] bis Holz[14] als Ereignis OnMouseDown zuweisen. Allerdings hätten wir dann Form1.OnMouseDown löschen müssen. Da diese Methode nicht für das Klicken auf das Formular geeignet ist. 3) Bei einer Zuweisung wie Holz[i].OnMOuseDown := Shape1MouseDown; muss die rechte Seite eine Methode einer Klasse sein deren Parameterliste festgelegt ist. Bei OnMouseDown ist eine Parameterliste (Sender: TObject; --- ) erforderlich. Eine Prozedur mit dieser Parameterliste, die nicht zu einer Klassendefinition gehört ist ungeeignet. Begründung : Methoden sind verschieden von gewöhnlichen Prozeduren. Zwar ist die Deklaration einer Methode und die einer gewöhnlichen Prozedur gleich. Sie unterscheiden sich aber beim Aufruf. Beim Aufruf einer Methode z.b. Memo1.clear wird als Parameter die Variable Memo1 mit übergeben. Übung : Projekt Lottozahlen2 Ändern Sie die Anwendung Lottozahlen1 so ab, dass die Ankreuzfelder dynamisch zur Laufzeit erzeugt werden. Speichern Sie die Projekt- und die Unit des Formulars in einem neuen Ordner. So verlieren Sie nicht Version1. U. Mayr : Aspekte objektorientierter Programmierung mit Delphi S. 11

12 3. Erläuterung einiger Konzepte von Delphi ( Object Pascal) Klassen, Objekte (Instanzen), Vererbung, VCL Delphi stellt eine Fülle von Komponenten zur Gestaltung der grafischen Benutzeroberfläche von Anwendungen bereit. Die zugehörigen Datentypen ( Klassen ) sind in der Visual Component Library festgelegt. Die VCL ist streng objektorientiert aufgebaut. Variable solcher Datentypen werden Objekte oder Klasseninstanzen genannt. Instanzen einer Klasse enthalten Attribute ( wie Records ) und Methoden zur Bearbeitung der Attribute. Beispiel : VAR Shape1 : TShape; { Shape1 ist eine Instanz der Klasse TShape } Die Definition der Klasse TShape im Quellcode ( unit ExtCtrls ) : TShapeType = (strectangle, stsquare, stroundrect, stroundsquare, stellipse, stcircle); TShape = class(tgraphiccontrol) private FPen : TPen; Vorgänger von TShape FBrush : TBrush; FShape : TShapeType; procedure SetBrush(Value: TBrush); procedure SetPen(Value: TPen); procedure SetShape(Value: TShapeType); protected procedure Paint; override; public constructor Create(AOwner: TComponent); override; destructor Destroy; override; published procedure StyleChanged(Sender: TObject); property Align; property Anchors; property Brush: TBrush read FBrush write SetBrush; property DragCursor; property DragKind; property DragMode; property Enabled; property Constraints; property ParentShowHint; property Pen: TPen read FPen write SetPen; Erweiterungen, die zu der Funktionalität von TGraphicControl hinzukommen property Shape: TShapeType read FShape write SetShape default strectangle; property ShowHint; property Visible; property OnContextPopup; property OnStartDrag; U. Mayr : Aspekte objektorientierter Programmierung mit Delphi S. 12

13 Vererbung Die Klasse TShape ist abgeleitet von der Klasse TGraphicControl. Eine Instanz von TShape erbt die gesamte Funktionalität, die zur Klasse TGraphicControl gehört. Darüber hinaus kommt weitere Funktionalität ( Methoden, Eigenschaften,...) hinzu. Wird eine Methode (beispielsweise paint), die bereits existiert hat, nochmals definiert (Überschrieben), so gilt für eine Instanz der Nachfolgerklasse nur die neue Definition. Durch Vererbung entstehen Klassen, die immer komplexer werden. Der Urahn aller Klassen ist TObject. Die Funktionalität von TObject ist daher in allen anderen Klassen enthalten. TShape Der Programmentwickler kann die VCL durch Ableiten neuer Klassen erweitern. So gibt es für die verschiedensten Zwecke maßgerecht veränderte Komponenten. Wir behandeln später ein solches Beispiel, indem wir die Klasse TLabel zu TLabel1 erweitern, Darüberhinaus kann der algorithmische Kern einer Anwendung mit Hilfe der VCL objektorientiert gestaltet werden ( objektorientierte Modellierung ). Man formuliert die eigenen Variablen als Instanzen von Klassen, die man von TObject direkt ableitet. U. Mayr : Aspekte objektorientierter Programmierung mit Delphi S. 13

14 Instanzen sind Zeigervariable Holz[1] Shape1 Shape : visible : Height : StRectangle true Anmerkungen : 1. Bei Zuweisungen wie Holz[1] := Shape1 wird lediglich der Zeiger aus Shape1 in die Zeigervariable Holz[i] gebracht. Eine Duplizierung aller Daten der Instanz Shape1 findet nicht statt. Eine Veränderung in den Eigenschaften von Holz[i] gilt auch für Shape1. 2. Die Schreibweise beim Zugriff auf Eigenschaften einer Instanz ist gegenüber dem klassischen Pascal geändert. Die Derefenzierung entfällt. Shape1.visible := true statt Shape1^.visible:= true 3. Instanzen müssen erzeugt werden bevor man auf eine Eigenschaft zugreifen kann. Beim visuellen Entwerfen eines Formulars geschieht das automatisch. Instanzen, die nicht über den Objektinspektor, sondern allein über den Quellcode in der Anwendung auftreten, müssen erzeugt werden. Dazu dienen besondere Methoden, die Konstruktoren. Der Konstruktor Create ist bereits in TObject enthalten und wird in den Nachfolgerklassen überschrieben. Daher wechseln die Parameterlisten je nach Klasse. Holz[I] := TShape.Create(Form1); U. Mayr : Aspekte objektorientierter Programmierung mit Delphi S. 14

15 Zuweisungskompatibilität bei Instanzen A := B ist erlaubt, wenn die Klasse von B ein Nachfolger der Klasse von A ist. Beispiel : var Objekt : TObject; Komponente : TComponent; Shape : TShape; Erlaubt ist Objekt := Komponente; Objekt := Shape; Komponente:= Shape; Nicht erlaubt ist z.b. TShape Shape := Komponente; Komponente:= Objekt; Anmerkungen : 1) Diese Regelung ist möglich, weil jeder Quellcode, der für eine Instanz der Vorgängerklasse geschrieben wurde auch für eine Instanz der Nachfolgerklasse sinnvoll ist, da die gesammte Funktionalität vererbt wird. 2) Da TObject keinen Vorgänger hat und alle Klassen von TObject abstammen, kann einer Instanz A der Klasse TObject jede Instanz B einer beliebigen Klasse zugeordnet werden. Bei der Zuweisung bleiben alle Eigenschaften des erweiterten Typs erhalten. Angesprochen können diese verborgenen Eigenschaften dadurch, dass man eine Typumwandlung durchführt. U. Mayr : Aspekte objektorientierter Programmierung mit Delphi S. 15

16 Typumwandlung Hinter einer Instanz kann sich durch Wertzuweisung auch eine Instanz einer Nachfolgerklasse verbergen (s. o.). In Ereignisbehandlungsprozeduren können sogar Instanzen von unterschiedlichem Typ als Sender auftreten. Dann kann in der Prozedur der Typ von Sender abgefragt und je nach Typ unterschiedlich reagiert werden. Z.B. : if sender is TShape then TShape(Sender).brush.color:= clred ; Der Typ der Instanz Sender wird abgefragt. Ist Sender eine Instanz der Klasse TShape, so kann auf die Farbe zugegriffen werden. TShape(sender) bedeutet anschaulich übersetzt : Die Instanz Sender, hinter der sich sogar eine Instanz des Nachfolgertyps TShape verbirgt. U. Mayr : Aspekte objektorientierter Programmierung mit Delphi S. 16

17 Eigenschaften ( Properties ) Eigenschaften sind besondere Attribute einer Klasse - auf die durch einen speziellen Schreib-, Lesemechanismus zugegriffen werden kann - denen man im Objektinspektor Werte zuweisen kann ( bei registrierten Komponenten ) Beispiel : var Shape1 : TShape; Die Zuweisung Shape1.Shape := StCircle; bewirkt, dass das Attribut Shape von Shape1 auf StCircle gesetzt wird. Zusätzlich wird die Figur Shape1 am Bildschirm als Kreis gezeichnet. Das Projekt Eigenschaft.dpr verdeutlicht dies. procedure TForm1.Button1Click(Sender: TObject); if Shape1.Shape=StCircle then Shape1.Shape:=STRectangle else Shape1.Shape:= succ(shape1.shape); U. Mayr : Aspekte objektorientierter Programmierung mit Delphi S. 17

18 Die Definition der Klasse TShape im Quellcode ( unit ExtCtrls ) : TShapeType = (strectangle, stsquare, stroundrect, stroundsquare, stellipse, stcircle); TShape = class(tgraphiccontrol) private FPen : TPen; FBrush : TBrush; FShape : TShapeType; procedure SetBrush(Value: TBrush); procedure SetPen(Value: TPen); procedure SetShape(Value: TShapeType); protected procedure Paint; override; public constructor Create(AOwner: TComponent); override; destructor Destroy; override; published procedure StyleChanged(Sender: TObject); property Align; property Anchors; property Brush: TBrush read FBrush write SetBrush; property Pen: TPen read FPen write SetPen; property Shape: TShapeType read FShape write SetShape default strectangle; property ShowHint; property Visible; property OnContextPopup; property OnStartDrag; In der Zeile FShape : TShapeType; { TShapeType = (strectangle, ---, stellipse, stcircle); } ist das Attribut FShape deklariert, in dem die Form der Figur festgehalten wird. FShape ist im Private-Abschnitt vereinbart. Das bedeutet, dass FShape bei der Verwendung der Unit ExtCtrls nicht direkt angesprochen werden kann. In der Zeile property Shape: TShapeType read FShape write SetShape default strectangle; wird nun vereinbart, wie der Nutzer auf die Form der Figur, die Eigenschaft Shape zugreifen kann. Beim lesenden Zugriff auf Shape soll der Inhalt des Attributs FShape genommen werden. Beim schreibenden Zugriff auf Shape soll die Methode SetShape benutzt werden. Als Anfangswert (default) für FShape soll strectangle genommen werden. Die Methode SetShape ist im Implementationsteil der Unit ExtCtrls folgendermaßen deklariert. : U. Mayr : Aspekte objektorientierter Programmierung mit Delphi S. 18

19 procedure TShape.SetShape(Value: TShapeType); if FShape <> Value then FShape ändern FShape := Value; Invalidate; Veranlasst, dass die Figur neu gezeichnet wird Sichtbarkeitsattribute bei der Vereinbarung von Klassen Bei der Definition eines Klassentyps in einer unit1 können die Attribute und Methoden der Klasse in 4 Sichtbarkeitsstufen eingeteilt werden. Diese Sichtbarkeitsattribute haben erst dann eine Bedeutung, wenn man den Klassentyp in eine andere Unit ( z.b.unit2 ) importiert und dort verwenden will. private - die hier vereinbarten Attribute und Methoden dürfen in unit2 nicht verwendet werden. Sie sind in unit2 unbekannt. protected - die hier vereinbarten Attribute und Methoden dürfen in unit2 nur beim Ableiten einer Nachfolgerklasse verwendet werden. ( Der Entwickler neuer Komponenten kann sie verwenden, der Anwender von unit1 nicht ) public - die hier vereinbarten Attribute und Methoden dürfen in Unit2 ohne Einschränkung verwendet werden. Dieselbe Verfügbarkeit erhält man, wenn keine Sichtbarkeitsstufe genannt ist. published - Wird bei der Definition neuer Komponenten verwendet, die in die Komponentenpalette aufgenommen werden sollen. Die Bedeutung ist wie bei public. Aber zusätzlich werden die hier genannten Eigenschaften, falls sie nicht zu komplex sind, im Objektinspektor angezeigt. Sie können auch im Objektinspektor zur Entwurfszeit gesetzt werden. Bemerkungen : Bei allen Projekten, in denen nicht daran gedacht ist, die Unit1 des Hauptformulars in einer anderen Unit zu verwenden, spielen die Sichtbarkeitsstufen bei den Klassendefinitionen in Unit1 keine Rolle. Man kann sie unter private oder public eintragen. Wichtig werden die Sicherheitsattribute wenn man neue Komponenten entwickeln will bzw. objektorintiertes Modellieren bei der Erstellung eigener Anwendungen verwenden will. Eigenschaften der Stufe protected sind für den Anwender nicht sichtbar. Der Entwickler kann diese aber in einem Nachfolger als public bereitstellen. U. Mayr : Aspekte objektorientierter Programmierung mit Delphi S. 19

20 Ereignisse ( Events ) Beispiel : Ereignisse sind besondere Eigenschaften einer Klasse Es handelt sich dabei um Zeiger auf Ereignisbehandlungsmethoden. In TControl ist das Ereignis OnMouseDown als protected deklariert und kann in allen Nachfolgern veröffentlicht werden ( published ). Ein Auszug aus dem Delphi-Quelltext : type TMouseEvent = procedure (Sender: TObject; Button: TMouseButton; Shift: TShiftState; X,Y: Integer) of object; TControl = class(tcomponent)... private FOnMouseDown : TMouseEvent;... protected property OnMouseDown : TMouseEvent read FOnMouseDown write FOnMouseDown;... In den Nachfolgern von TControl ist OnMouseDown veröffentlicht, d.h. in die Stufe published übernommen worden. Die Eigenschaft kann daher im Objektinspektor gesetzt werden. Das bedeutet, dass in FOnMouseDown ein Zeiger (Adresse) auf eine Methode gespeichert wird, deren Parameterliste im Typ TMouseEvent festgelegt ist : (Sender:TObject; Button:TMouseButton; Shift:TShiftState; X,Y:Integer) Der Hinweis 'of object' besagt, dass die zugewiesene Prozedur Methode eines Objekts sein muss. Die Zuweisung einer isolierten Prozedur mit derselben Parameterliste ist nicht erlaubt, da sich Aufrufe von Klassenmethoden und Prozeduren unterscheiden. Beim Aufruf einer Methode wird zusätzlich zu den Parametern der Zeiger self auf die aktuelle Klasseninstanz mit übergeben. Die Zuweisung für ein veröffentlichtes Ereignis wie z.b. OnMouseDown ist bequem über den Objektinspektor zu bewerkstelligen. Wählt man das Ereignis OnMouseDown an, so erstellt der Editor bereits eine Lehrprozedur (in TForm1) mit der passenden Parameterliste und speichert einen Zeiger auf diese Methode in FOnMouseDown ab. Der Anwender muss nur noch den passenden Qellcode eintragen. Sind bereits Methoden vom Typ TMouseEvent vorhanden, so bietet der Objektinspektor, diese zur Auswahl für FOnMouseDown an. U. Mayr : Aspekte objektorientierter Programmierung mit Delphi S. 20

21 Drückt der Nutzer des Programms die linke Maustaste wenn der Cursor auf der Komponente steht, für die das OnMouseDown festgelegt wurde, so wird schließlich die Methode ausgeführt, auf die FOnMouseDown zeigt. Will man das Verhalten beim Ereignis OnMouseDown zur Laufzeit ändern, so kann man OnMouseDown eine andere Methode vom Typ TMouseEvent zuordnen. Diese Methode muss natürlich bereits (auf Vorrat) vereinbart und implementiert sein. Ebenso muss beim Erzeugen einer Komponente zur Laufzeit vorgegangen werden. U. Mayr : Aspekte objektorientierter Programmierung mit Delphi S. 21

22 4. Entwicklung neuer Komponenten für die VCL Beispiel : Eine Überschrift (TLabel) soll so mit einem Speicherplatz Zahl kombiniert werden, dass bei Änderung der Zahl, diese auch sofort angezeigt wird. Die neue Komponente TLabel1 wird durch Ableitung aus TLabel gewonnen. Delphi bietet im Menue: Datei -> neu -> Komponente das Gerüst einer Unit in der die Eigenschaften der neuen Komponente festgelegt werden. unit Label1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TLabel1 = class(tlabel) private FZahl : integer; procedure setzahl(x:integer); published Property Zahl:integer read FZahl write setzahl; procedure Register; implementation procedure TLabel1.setZahl(x:integer); FZahl := x; Caption := IntToStr(x); procedure Register; TLabel1 wird in die Palette 'Beispiele' als Komponente aufgenommen RegisterComponents('Beispiele', [TLabel1]); end. TLabel1 besitzt die Eigenschaft Zahl mit FZahl als Speicherplatz und der Methode setzahl zum Ändern der Eigenschaft. Durch das Registrieren wird TLabel1 in die Komponentenpalette übernommen und kann in Anwendungen benutzt werden. U. Mayr : Aspekte objektorientierter Programmierung mit Delphi S. 22

23 Verwendung der Komponente TLabel1 in einem Programm Beim Drücken von - Button_Vor wird die Zahl von Label_Zahl im 1 erhöht - Button_Null wird Zahl von Label_Zahl auf 0 gesetzt. unit Zaehlen; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Label1; type TForm1 = class(tform) Button_Vor : TButton; Button_Null : TButton; Label_Zahl : TLabel1; procedure Button_VorClick(Sender: TObject); procedure Button_NullClick(Sender: TObject); var Form1: TForm1; implementation {$R *.DFM} procedure TForm1.Button_VorClick(Sender: TObject); with Label_Zahl do Label_Zahl.setZahl ( FZahl + 1); zahl:= zahl+1; if Zahl > 20 then Zahl:=0; procedure TForm1.Button_NullClick(Sender: TObject); Label_Zahl.zahl:=0; end. Label_Zahl.setZahl (0); Anmerkung : In Button_VorClick und Button_NullClick dürfen Label_Zahl.FZahl und Label_Zahl.setZahl selbst nicht benutzt werden. Da sie in der Vereinbarung für TLabel1 ( unit Label1 ) im private-abschnitt deklariert wurden. U. Mayr : Aspekte objektorientierter Programmierung mit Delphi S. 23

24 5. Anhang : Botschaften ( Messages ) Der Begriff Ereignis im vorherigen Kapitel wird in mehrfacher Bedeutung gebraucht. Einmal ist damit eine besondere Eigenschaft gemeint, die einen Zeiger auf eine Methode beinhaltet. Außerdem wird als Ereignis ein Vorfall (z.b. Eingaben des Benutzers durch Tastatur, Maus) bezeichnet, den das Betriebssystem Windows wahrnimmt und daraufhin die betreffende Anwendung informiert, damit diese adäquat reagieren kann. Zur Information erhält die betreffende Anwendung ( Instanz Application vom Typ TApplication ) eine Botschaft (Message) in ihre Botschaftsschlange (Messagequeue) gelegt. Die Botschaft ist ein Datensatz, in dem alle nötigen Informationen über das Ereignis im Sinne von Geschehnis zusammengefasst sind. Der Instanz Application obliegt es nun, an erster Stelle für die Entnahme der eingetroffenen Botschaft und ihre Beantwortung, durch Auslösen einer entsprechenden Maßnahme (Botschaftsbehandlungsmethode) zu sorgen. Der Mechanismus zur Reaktion auf Ereignisse ist kompliziert. Zum einen sind dabei viele Instanzen beteiligt von Windows über Application, bis hin zu den einzelnen Komponenten. Außerdem nimmt Delphi dem Anwender wie auch dem Programmierer die Arbeit weitgehend ab, indem es die Mechanismen in den Instanzen Application und den Komponenten verbirgt. Wenn aber in einigen Fällen ein Eingreifen in den Botschaftsverteilungs- und -beantwortungsmechanismus nötig ist, fällt eine zutreffende Diagnose und die Behebung von Fehlern um so schwerer. Im Folgenden soll der Weg der Botschaftsbehandlung skizziert werden. 1. Wir betrachten zuerst wie die Instanz Application in einer Schleife (Messageloop) die Botschaften bearbeitet. Application.Run; { Aufruf der Messageloop in der Projektdatei } Die folgenden Fragmente aus dem Quellcode des Delphisystems folgen dem Weg den Vearbeitung der Botschaften. U. Mayr : Aspekte objektorientierter Programmierung mit Delphi S. 24

Delphi DLL Tutorial Wie exportiere ich Komponenten aus einer DLL?

Delphi DLL Tutorial Wie exportiere ich Komponenten aus einer DLL? Delphi DLL Tutorial Wie exportiere ich Komponenten aus einer DLL? Von Padmalcom (20.03.2009) www.jofre.de Nach dem Tutorial 1 von Leonardo M. Ramé 1 Ja, es geht wirklich! Im Internet sind tausende Forenbeinträge

Mehr

Delphi Grundkurs Seite 31

Delphi Grundkurs Seite 31 Delphi Grundkurs Seite 31 Beispiel 9 Notenanalyse Problem: Programm P09 Schulnoten in Editfeld eingeben: bei wird Text in Zahl x umgewandelt; Bei Eingabefehler (x < 1 oder x > 5 oder x nicht numerisch)

Mehr

LWB VIII. Programmieren mit Delphi Zur Laufzeit verwaltete Objekte. Zur Laufzeit verwaltete Objekte. Am Beispiel des bekannten Memory-Spieles

LWB VIII. Programmieren mit Delphi Zur Laufzeit verwaltete Objekte. Zur Laufzeit verwaltete Objekte. Am Beispiel des bekannten Memory-Spieles Am Beispiel des bekannten Memory-Spieles Warum Spiele? fragen Sie. Ich antworte: um die Kunst der Erfindung zu vervollkommnen. (Leibniz) Mit seinen einfachen und unzweideutigen Regeln ist ein Spiel immer

Mehr

2 Programmentwicklung mit Delphi

2 Programmentwicklung mit Delphi 2.1 Arbeiten mit Delphi 26 2 Programmentwicklung mit Delphi Die Programmentwicklung mit Delphi wird in drei Schritten eingeführt: Zuerst wird die prinzipielle Arbeitsweise geschildert, danach wird das

Mehr

Inhaltsverzeichnis. 4.1 Programme compilieren und starten 4.2 Arbeiten mit dem Editor 4.3 Der Objekt-Inspektor

Inhaltsverzeichnis. 4.1 Programme compilieren und starten 4.2 Arbeiten mit dem Editor 4.3 Der Objekt-Inspektor Inhaltsverzeichnis Vorwort 1 Was ist Delphi? 1.1 Die Wurzeln von Delphi 1.2 Der Konkurrent - Visual Basic 1.3 Die komponentenbasierte Entwicklung 1.4 Object-Pascal 2 Programmieren mit Delphi 2.1 Das ))visuelle((

Mehr

Informatik Kurs 12 André Hoffmann. Delphi. Einführung in die Windows- Programmierung

Informatik Kurs 12 André Hoffmann. Delphi. Einführung in die Windows- Programmierung Informatik Kurs 12 André Hoffmann Delphi Einführung in die Windows- Programmierung Grundlagen Entwicklung von Windows-Programmen Relativ unkompliziert durch typische, vorgefertigte Elemente Programmiertechnische

Mehr

Programmierkurs: Delphi: Einstieg

Programmierkurs: Delphi: Einstieg Seite 1 von 6 Programmierkurs: Delphi: Einstieg Aus Wikibooks Inhaltsverzeichnis 1 Einstieg Einstieg Was ist Delphi Borland Delphi ist eine RAD-Programmierumgebung von Borland. Sie basiert auf der Programmiersprache

Mehr

Objektorientierte Programmierung

Objektorientierte Programmierung 1. Begriffe Objektorientierte Programmierung mit C++ Prozedurale Programmierung Sprachen: C, Pascal, Cobol, Basic,... Objektorientierte Programmierung Sprachen: C++, C#, Java... Methode: - Gesamtproblem

Mehr

5.2 Variablenkonzept und elementare Datentypen

5.2 Variablenkonzept und elementare Datentypen bertram.hafner@t-online.de Informatik 11 Seite 10 5.2 Variablenkonzept und elementare Datentypen Der aktuelle Zustand des Karol-Systems ist festgelegt durch: - Länge, Breite, Höhe der Welt - Position,

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

Kapitel 6. Vererbung

Kapitel 6. Vererbung 1 Kapitel 6 2 Ziele Das sprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen Subtyping Überschreiben

Mehr

Kapitel 6. Vererbung

Kapitel 6. Vererbung 1 Kapitel 6 2 Ziele Das sprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen Subtyping Überschreiben

Mehr

Installation und Benutzung AD.NAV.ZipTools

Installation und Benutzung AD.NAV.ZipTools Installation und Benutzung AD.NAV.ZipTools Version 1.0.0.0 ALTENBRAND Datentechnik GmbH Am Gelicht 5 35279 Neustadt (Hessen) Tel: 06692/202 290 Fax: 06692/204 741 email: support@altenbrand.de Die Komponente

Mehr

Memory 33. 1.2 Memory

Memory 33. 1.2 Memory Memory 33 1.2 Memory Der Umgang mit selbst definierten Objektklassen lässt sich am einfachsten an einem Beispiel verstehen, bei dem auftretende Fehler am Bildschirm direkt zu sehen sind, z. B. dadurch,

Mehr

Einführung in Delphi. Komponenten regeln die Dateneingabe und Datenausgabe.

Einführung in Delphi. Komponenten regeln die Dateneingabe und Datenausgabe. Einführung in Delphi Komponenten regeln die Dateneingabe und Datenausgabe. Datenverarbeitung Computer sind Geräte zur Datenverarbeitung. Grundprinzip: EVA Eingabe Verarbeitung Ausgabe Beispiel: Minirechner

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

Delphi-Grundlagen Hn 26.4.2010

Delphi-Grundlagen Hn 26.4.2010 Delphi Grundlagen Ein Delphiprogramm besteht aus 3 Teilen: - dem Formular (*.dfm) - dem Quelltext oder der Unit (*.pas) und - der Projektdatei (*.dpr), die Quelltext und Formular zusammenfügt. Änderungen

Mehr

Einführung in VisualBasic for Applications. Stefan Mahlitz

Einführung in VisualBasic for Applications. Stefan Mahlitz Einführung in VisualBasic for Applications Stefan Mahlitz Stefan Mahlitz Einführung in VBA 27.08.00 Inhaltsverzeichnis 1. Grundlagen der VisualBasic for Applications (VBA) Programmierung...2 1.1 Variablen,

Mehr

Objektorientierte Programmierung. Objektorientierte Programmierung. Klasse. Objekt. Beispiel: Sportfest1. Methode. Eine Einführung mit BlueJ

Objektorientierte Programmierung. Objektorientierte Programmierung. Klasse. Objekt. Beispiel: Sportfest1. Methode. Eine Einführung mit BlueJ Objektorientierte Programmierung Objektorientierte Programmierung Eine Einführung mit BlueJ stellt die Daten, ihre Struktur und ihre Beziehungen zueinander in den Vordergrund. Weniger im Blickpunkt: die

Mehr

3. Nun kann auf das Symbol von Stylebook1 geklickt werden. Im mittleren Fenster ist nun das Formular veschwunden. Stattdessen erscheint oben

3. Nun kann auf das Symbol von Stylebook1 geklickt werden. Im mittleren Fenster ist nun das Formular veschwunden. Stattdessen erscheint oben Informatik App-Projekte Delphi XE7 ist eines der mächtigsten Programmierpakete, die es weltweit gibt. Mit diesem Paket können Windows Fenster-Anwendungen, Server-Anwendungen, Datenbank-Anwendungen und

Mehr

Objektorientierte Programmierung

Objektorientierte Programmierung Objektorientierte Programmierung Ein Computerprogramm besteht aus Funktionen (Programmabschnitten, die etwas tun) und Variablen (Speicherplätzen für Informationen). Werden Funktionen aktiviert, verändern

Mehr

Übersicht. Informatik 2 Teil 3 Anwendungsbeispiel für objektorientierte Programmierung

Übersicht. Informatik 2 Teil 3 Anwendungsbeispiel für objektorientierte Programmierung Übersicht 3.1 Modell Konto 3.2 Modell Konto - Erläuterungen 3.3 Benutzer Ein- und Ausgabe mit Dialogfenster I 3.4 Benutzer Ein- und Ausgabe mit Dialogfenster II 3.5 Klassen- und Objekteigenschaften des

Mehr

Grundkurs Programmieren mit Delphi

Grundkurs Programmieren mit Delphi Wolf-Gert Matthäus Grundkurs Programmieren mit Delphi Systematisch programmieren lernen mit Turbo Delphi 2006, Delphi 7 und vielen anderen Delphi-Versionen 3., neu bearbeitete Auflage Mit 303 Abbildungen

Mehr

Inhalt: Version 1.7.5

Inhalt: Version 1.7.5 Inhalt: Objekte ohne Methoden Objekte mit einfachen Methoden Objekte und Methoden mit Parametern Objekte und Methoden mit Rückgabewert Objekte mit einem Array als Attribut Beziehungen zwischen Objekten

Mehr

Bedienung von BlueJ. Klassenanzeige

Bedienung von BlueJ. Klassenanzeige Im Folgenden werden wichtige Funktionen für den Einsatz von BlueJ im Unterricht beschrieben. Hierbei wird auf den Umgang mit Projekten, Klassen und Objekten eingegangen. Abgeschlossen wird dieses Dokument

Mehr

PIWIN 1 Übung Blatt 5

PIWIN 1 Übung Blatt 5 Fakultät für Informatik Wintersemester 2008 André Gronemeier, LS 2, OH 14 Raum 307, andre.gronemeier@cs.uni-dortmund.de PIWIN 1 Übung Blatt 5 Ausgabedatum: 19.12.2008 Übungen: 12.1.2009-22.1.2009 Abgabe:

Mehr

Arbeiten mit BlueJ. Objektorientiertes Programmieren in Java mit BlueJ

Arbeiten mit BlueJ. Objektorientiertes Programmieren in Java mit BlueJ Arbeiten mit BlueJ Compilieren, Editieren, Objekte erzeugen, Methoden aufrufen, Objekte inspizieren, vorhandene Klassen benutzen, eigene Klassen und Methoden erstellen In BlueJ geht es einfach BlueJ durch

Mehr

C++ - Einführung in die Programmiersprache Polymorphismus und Vererbung. Eltern

C++ - Einführung in die Programmiersprache Polymorphismus und Vererbung. Eltern C++ - Einführung in die Programmiersprache Polymorphismus und Vererbung Eltern Kind Kind Vererbung Definition von Klassen auf Basis von bestehenden Klassen. Implementierung von ist ein. bildet ein hierarchisches

Mehr

Tutorium Java Ein Überblick. Helge Janicke

Tutorium Java Ein Überblick. Helge Janicke Tutorium Java Ein Überblick Helge Janicke 26. Oktober 2000 1 VORRAUSSETZUNGEN ZUM PROGRAMMIEREN MIT JAVA. 1 1 Vorraussetzungen zum Programmieren mit Java. Was braucht man, wenn man mit Java programmieren

Mehr

8. Fachseminar Informatik Martin Jakobs Einstieg in die Objektorientierte Programmierung (Standard 1 / 3)

8. Fachseminar Informatik Martin Jakobs Einstieg in die Objektorientierte Programmierung (Standard 1 / 3) Ergebnisse der Seminarsitzung vom 19. November 2007 Einstieg in die Objektorientierte Programmierung (Standard 1 und 3) Die Schule - ein Textadventure a) Didaktische Überlegungen Textadventures sind Computerspiele

Mehr

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12. Kapitel 7. Grafische Benutzeroberflächen

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12. Kapitel 7. Grafische Benutzeroberflächen 1 Kapitel 7 Ziele 2 (Graphical User Interfaces) als Anwendungsbeispiel für die objektorientierte Programmierung kennenlernen Benutzung von Vererbung zur Erstellung individueller GUI-Klassen durch Erweiterung

Mehr

16 SQL Server-Zugriff per VBA

16 SQL Server-Zugriff per VBA Leseprobe aus Access und SQL Server http://www.acciu.de/asqllesen 16 SQL Server-Zugriff per VBA Sie werden an verschiedenen Stellen per VBA auf die Tabellen der SQL Server-Datenbank zugreifen müssen sei

Mehr

Windows programmieren mit VisualBasic Einführung in die objektorientierte Programmiersprache

Windows programmieren mit VisualBasic Einführung in die objektorientierte Programmiersprache Dipl. Ing. (FH) Hans-Peter Kiermaier Windows programmieren mit VisualBasic Einführung in die objektorientierte Programmiersprache 1 Allgemeines Die Geschichte von VisualBasic oder kurz VB: 1991 Visual

Mehr

Java Schulung (Java 2 Java Development Kit 5 / 6)

Java Schulung (Java 2 Java Development Kit 5 / 6) 2. Grundlagen der Objektorientierung 2.1 Klassen, Attribute, Methoden Klassen Eine Klasse beschreibt als Bauplan Gemeinsamkeiten einer Menge von Objekten ist also ein Modell, auf dessen Basis Objekte erstellt

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

Objektorientierte Programmierung mit Python Polymorphismus und Vererbung. Eltern

Objektorientierte Programmierung mit Python Polymorphismus und Vererbung. Eltern Objektorientierte Programmierung mit Python Polymorphismus und Vererbung Eltern Kind Kind Kind Kind Prinzipien der objektorientierten Programmierung Vererbung Strukturierung von Klassen. Oberbegriffe beschreiben

Mehr

3 Task-Leiste Ziele des Kapitels:

3 Task-Leiste Ziele des Kapitels: 3 Task-Leiste Ziele des Kapitels: $ Die Task-Leiste ist ein zentrales Element von Windows 95. Dieses Kapitel zeigt Ihnen, wie Sie die Task-Leiste bei Ihrer Arbeit mit Windows 95 sinnvoll einsetzen können.

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

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

Java Einführung Methoden in Klassen

Java Einführung Methoden in Klassen Java Einführung Methoden in Klassen Lehrziel der Einheit Methoden Signatur (=Deklaration) einer Methode Zugriff/Sichtbarkeit Rückgabewerte Parameter Aufruf von Methoden (Nachrichten) Information Hiding

Mehr

Java für Computerlinguisten

Java für Computerlinguisten Java für Computerlinguisten 2. Objektorientierte Programmierung Christian Scheible Institut für Maschinelle Sprachverarbeitung 28. Juli 2009 Christian Scheible Java für Computerlinguisten 28. Juli 2009

Mehr

Kurs 1575, Musterlösung zur Winter Klausur 2002/03

Kurs 1575, Musterlösung zur Winter Klausur 2002/03 1 0 Kurs 1575, Musterlösung zur Klausur im Wintersemester 2002/03 1 Kurs 1575, Musterlösung zur Winter Klausur 2002/03 Aufgabe 1: Warteschlange Wer kennt das Problem nicht? Sie wollen noch schnell im Supermarkt

Mehr

Autor: Michael Spahn Version: 1.0 1/10 Vertraulichkeit: öffentlich Status: Final Metaways Infosystems GmbH

Autor: Michael Spahn Version: 1.0 1/10 Vertraulichkeit: öffentlich Status: Final Metaways Infosystems GmbH Java Einleitung - Handout Kurzbeschreibung: Eine kleine Einführung in die Programmierung mit Java. Dokument: Autor: Michael Spahn Version 1.0 Status: Final Datum: 23.10.2012 Vertraulichkeit: öffentlich

Mehr

Einführung in das Microsoft.NET-Framework. Programmiersprache C# MEF Das Managed Extensibility Framework. André Kunz

Einführung in das Microsoft.NET-Framework. Programmiersprache C# MEF Das Managed Extensibility Framework. André Kunz Einführung in das Microsoft.NET-Framework Programmiersprache C# MEF Das Managed Extensibility Framework André Kunz 21.09.2010 1 In dieser Einführung bekommen Sie einen kurzen Einstieg in das.net-framework

Mehr

Microsoft Access 2010 Bilder

Microsoft Access 2010 Bilder Microsoft Access 2010 Bilder Hyperlinks... arbeiten ähnlich wie ein Link in einer Webseite. sind ein Verweis auf eine Datei (access2010\material\beispiel\tabledevelop\automat.accdb). können ein Verweis

Mehr

6. Zustandsorientierte Modellierung

6. Zustandsorientierte Modellierung bertram.hafner@t-online.de Informatik 11 Seite 25 6. Zustandsorientierte Modellierung Im Alltag benutzen wir vielfältige Automaten: denke an Getränkeautomat, Ampelanlage, Kaffeeautomat, Waschmaschine,

Mehr

Delphi. by www.abyter.de (Martin Monshausen) 1

Delphi. by www.abyter.de (Martin Monshausen) 1 Delphi Einführung in Delphi Bei Delphi handelt es sich um die visuelle Entwicklungsumgebung zu der Programmiersprache Pascal (genauer gesagt: zu Object Pascal). Delphi ist das Konkurrenzprodukt zu Visual

Mehr

2 Programmentwicklung mit Java

2 Programmentwicklung mit Java 26 2 Programmentwicklung mit Java 2 Programmentwicklung mit Java Die Programmentwicklung mit Java wird in drei Schritten eingeführt: Zuerst wird die prinzipielle Arbeitsweise geschildert, danach wird das

Mehr

Diese Anleitung bezieht sich auf FixFoto, V 3.40. In älteren oder neueren Versionen könnte die Arbeitsweise anders sein.

Diese Anleitung bezieht sich auf FixFoto, V 3.40. In älteren oder neueren Versionen könnte die Arbeitsweise anders sein. Pfade einstellen Stand: Dezember 2012 Diese Anleitung bezieht sich auf FixFoto, V 3.40. In älteren oder neueren Versionen könnte die Arbeitsweise anders sein. Diese Anleitung soll zeigen, wie man Pfad-Favoriten

Mehr

Von der UML nach C++

Von der UML nach C++ 22 Von der UML nach C++ Dieses Kapitel behandelt die folgenden Themen: Vererbung Interfaces Assoziationen Multiplizität Aggregation Komposition Die Unified Modeling Language (UML) ist eine weit verbreitete

Mehr

Eine Baumstruktur sei folgendermaßen definiert. Eine Baumstruktur mit Grundtyp Element ist entweder

Eine Baumstruktur sei folgendermaßen definiert. Eine Baumstruktur mit Grundtyp Element ist entweder Programmieren in PASCAL Bäume 1 1. Baumstrukturen Eine Baumstruktur sei folgendermaßen definiert. Eine Baumstruktur mit Grundtyp Element ist entweder 1. die leere Struktur oder 2. ein Knoten vom Typ Element

Mehr

Kapitel 3 Das Projekt Bankkonto Seite 1

Kapitel 3 Das Projekt Bankkonto Seite 1 Kapitel 3 Das Projekt Bankkonto Seite 1 3 Das Projekt Bankkonto Nun wirst du dich etwas gründlicher mit dem Quelltext einer Klasse beschäftigen. Du lernst, wie zwei Objekte eine gemeinsame Aufgabe erledigen.

Mehr

Die Bedeutung abstrakter Datentypen in der objektorientierten Programmierung. Klaus Kusche, September 2014

Die Bedeutung abstrakter Datentypen in der objektorientierten Programmierung. Klaus Kusche, September 2014 Die Bedeutung abstrakter Datentypen in der objektorientierten Programmierung Klaus Kusche, September 2014 Inhalt Ziel & Voraussetzungen Was sind abstrakte Datentypen? Was kann man damit grundsätzlich?

Mehr

LEGO-Mindstorms-Roboter im Informatikunterricht 1 - mit Java-

LEGO-Mindstorms-Roboter im Informatikunterricht 1 - mit Java- Eckart Modrow LEGO-Mindstorms-Roboter S. 1 LEGO-Mindstorms-Roboter im Informatikunterricht 1 - mit Java- Benutzung in einer Programmierumgebung Für die LEGO-Roboter stehen unter allen gängigen Betriebssystemen

Mehr

Übungen zur Android Entwicklung

Übungen zur Android Entwicklung Übungen zur Android Entwicklung Aufgabe 1 Hello World Entwickeln Sie eine Hello World Android Applikation und laden diese auf den Emulator. Leiten Sie hierfür die Klasse android.app.activity ab und entwerfen

Mehr

Objective-C CheatSheet

Objective-C CheatSheet App-Templates: Erstellt automatisch einen Navigation Controller mit editierbarem UITableView und DetailView, der bei Klick auf einzelne UITableViewCell angezeigt wird. Kreiert einen GLKitViewController

Mehr

PIWIN I. Praktische Informatik für Wirtschaftsmathematiker, Ingenieure und Naturwissenschaftler I. Vorlesung 3 SWS WS 2007/2008

PIWIN I. Praktische Informatik für Wirtschaftsmathematiker, Ingenieure und Naturwissenschaftler I. Vorlesung 3 SWS WS 2007/2008 PIWIN I Kap. 7 Objektorientierte Programmierung - Einführung 1 PIWIN I Praktische Informatik für Wirtschaftsmathematiker, Ingenieure und Naturwissenschaftler I Vorlesung 3 SWS WS 2007/2008 FB Informatik

Mehr

Java lernen mit BlueJ

Java lernen mit BlueJ Java lernen mit BlueJ Eine Einführung in die objektorientierte Programmierung David J. Barnes Michael Kölling 4.0 Lernen in Eigenregiegi Vorlesungen Seminare Übungen Bücher Webseiten Diskussionslisten

Mehr

Jetzt sollt ihr von der Vorlage der Grundversion 1.0 ein eigenes Textadventure erstellen.

Jetzt sollt ihr von der Vorlage der Grundversion 1.0 ein eigenes Textadventure erstellen. Teil B: Erweiterungen Jetzt sollt ihr von der Vorlage der Grundversion 1.0 ein eigenes Textadventure erstellen. Die folgenden Aufgaben und Ausführungen geben einige Hilfestellungen, welche (mindestens

Mehr

TYPO3 Redaktoren-Handbuch

TYPO3 Redaktoren-Handbuch TYPO3 Redaktoren-Handbuch Kontakt & Support: rdv interactive ag Arbonerstrasse 6 9300 Wittenbach Tel. 071 / 577 55 55 www.rdvi.ch Seite 1 von 38 Login http://213.196.148.40/typo3 Username: siehe Liste

Mehr

Objektorientiertes Programmieren für Ingenieure

Objektorientiertes Programmieren für Ingenieure Uwe Probst Objektorientiertes Programmieren für Ingenieure Anwendungen und Beispiele in C++ 18 2 Von C zu C++ 2.2.2 Referenzen und Funktionen Referenzen als Funktionsparameter Liefert eine Funktion einen

Mehr

10 Makros. 10.1 Makros aufzeichnen

10 Makros. 10.1 Makros aufzeichnen 10 Makros Ein Makro besteht aus einer Reihe von Befehlen, die gespeichert und dann immer wieder aufgerufen, d.h. durchgeführt werden können. Das dient zur Automatisierung häufig auftretender Aufgaben.

Mehr

Von Pascal zu Delphi. Aufbau eines Delphi-Projektes. Grundlagen von ObjectPascal. Prozeduren und Funktionen. Übungen. Ende

Von Pascal zu Delphi. Aufbau eines Delphi-Projektes. Grundlagen von ObjectPascal. Prozeduren und Funktionen. Übungen. Ende Von Pascal zu Delphi Aufbau eines Delphi-Projektes Aufbau einer Unit Aufbau einer Prozedur Grundlagen von ObjectPascal Schleifen Verzweigungen Array Prozeduren und Funktionen Übungen Ende Entwicklung der

Mehr

Erste Programme mit Lazarus

Erste Programme mit Lazarus Erste Programme mit Lazarus Einführung in die Entwicklungsumgebung (IDE) Grundelemente der Programmiersprache Objekt-Pascal Übungen Helmut Paulus Speyer, 19.04.13 Teil 1 Einführung in die Lazarus-Entwicklungsumgebung

Mehr

Selbstbestimmtes Lernen. Proinformatik III Objektorientierte Programmierung. Format. Inhalt. Buzzwords

Selbstbestimmtes Lernen. Proinformatik III Objektorientierte Programmierung. Format. Inhalt. Buzzwords 4.0 Proinformatik III Objektorientierte Programmierung Michael Kölling University of Kent Canterbury, UK Selbstbestimmtes Lernen Vorlesung Tutorium Übungen Buch Web-Seite Üben, üben, üben! Format Vorlesung:

Mehr

Klassendefinitionen verstehen

Klassendefinitionen verstehen Klassendefinitionen verstehen Java-Programme bestehen aus Klassendefinitionen und sonst nichts! 1 1.0 Konzepte Felder Konstruktoren Methoden Parameter Zuweisungen ( = ) Anweisungen bedingte Anweisungen

Mehr

C# - PROGRAMME MIT PLUGINS ERWEITERN

C# - PROGRAMME MIT PLUGINS ERWEITERN C# - PROGRAMME MIT PLUGINS ERWEITERN Schreibt man ein Programm welches erweiterbar sein soll, dann gibt es häufig mehrere Möglichkeiten dies umzusetzen. Die Objektorientierung ist dabei der erste Schritt,

Mehr

Praktikum ios-entwicklung im Sommersemester 2015 Übungsblatt 3

Praktikum ios-entwicklung im Sommersemester 2015 Übungsblatt 3 Ludwig-Maximilians-Universität München Institut für Informatik Lehrstuhl für Mobile und Verteilte Systeme Prof. Dr. Claudia Linnhoff-Popien Praktikum ios-entwicklung im Sommersemester 2015 Übungsblatt

Mehr

Chair of Software Engineering. Bezieher SUBSCRIBERS Ereignis Erzeuger (zb GUI) Chair of Software Engineering. Save_file ROUTINE

Chair of Software Engineering. Bezieher SUBSCRIBERS Ereignis Erzeuger (zb GUI) Chair of Software Engineering. Save_file ROUTINE 1 2 Letzte Aktualisierung: 27. Mai 2004 Programmierung im Grossen Vorlesung 13: Ereignis-Gesteuertes Design Bertrand Meyer Ereignis-gesteuerte Programmierung 3 Vermeiden von glue code 4 Verbreiter PUBLISHERS

Mehr

C++ Grundlagen. ++ bedeutet Erweiterung zum Ansi C Standard. Hier wird eine Funktion eingeleitet

C++ Grundlagen. ++ bedeutet Erweiterung zum Ansi C Standard. Hier wird eine Funktion eingeleitet C++ Grundlagen ++ bedeutet Erweiterung zum Ansi C Standard Hier wird eine Funktion eingeleitet Aufbau: In dieser Datei stehen die Befehle, die gestartet werden, wenn das Programm gestartet wird Int main()

Mehr

Alexander Niemann. Das Einsteigerseminar Objektorientierte Programmierung in Java. bhv

Alexander Niemann. Das Einsteigerseminar Objektorientierte Programmierung in Java. bhv Alexander Niemann Das Einsteigerseminar Objektorientierte Programmierung in Java G bhv Inhaltsverzeichnis Vorwort 11 Einleitung 13 Lernen - Üben 13 Über dieses Buch 14 Ш11ШШШШ '. ш Ш Java 19 Die Geschichte

Mehr

Programmierung einer Windows Store App mit C# und XAML

Programmierung einer Windows Store App mit C# und XAML Neuer Abschnitt 1 Seite 1 Programmierung einer Windows Store App mit C# und XAML Einleitung In diesem Fachbericht der im Rahmen meines 8 Wochen langem Praktikums entstand geht es um die Programmierung

Mehr

Ein Word-Dokument anlegen

Ein Word-Dokument anlegen 34 Word 2013 Schritt für Schritt erklärt Ein Word-Dokument anlegen evor Sie einen Text in Word erzeugen können, müssen Sie zunächst einmal ein neues Dokument anlegen. Die nwendung stellt zu diesem Zweck

Mehr

5 Projekt Bankverwaltung

5 Projekt Bankverwaltung Kapitel 5 Bankverwaltung (Lösung) Seite 1/7 5 Projekt Bankverwaltung 5.1 Festlegen der Schnittstelle Bevor du mit der Programmierung beginnst, musst du dir einige Gedanken über die Schnittstelle zwischen

Mehr

Loggen Sie sich im App Inventor mit einem Gmail- (Google-) Benutzernamen und Passwort ein.

Loggen Sie sich im App Inventor mit einem Gmail- (Google-) Benutzernamen und Passwort ein. TalkToMe: Ihre erste App mit dem App Inventor Dieses Tutorial wird Ihnen dabei helfen, eine sprechende App zu erstellen, die Sätze auf Anforderung speichern kann. Loggen Sie sich im App Inventor mit einem

Mehr

RÖK Typo3 Dokumentation

RÖK Typo3 Dokumentation 2012 RÖK Typo3 Dokumentation Redakteur Sparten Eine Hilfe für den Einstieg in Typo3. Innpuls Werbeagentur GmbH 01.01.2012 2 RÖK Typo3 Dokumentation Inhalt 1) Was ist Typo3... 3 2) Typo3 aufrufen und Anmelden...

Mehr

Druckanpassung von Mahnungen

Druckanpassung von Mahnungen Druckanpassung von Mahnungen Nur wenn Sie die faktura in der Einzelversion nutzen, steht Ihnen für die Druckanpassung der Mahnungen auch der Formularassistent zur Verfügung. Dort können Sie die gewünschten

Mehr

TAFS_SEPA = class(tcomponent)

TAFS_SEPA = class(tcomponent) TAFS_SEPA = class(tcomponent) Funktionsumfang: - SEPA Überweisungen - SEPA Lastschriften (B2C) - SEPA Firmenlastschriften (B2B) erzeugen - IBAN Berechnungen aus Blz und Kontonummern (Länderübergreifend)

Mehr

Objekt-Orientierte Programmierung

Objekt-Orientierte Programmierung Objekt-Orientierte Programmierung Ein OO-Programm modelliert eine Anwendung als eine Welt von Objekten, die miteinander in Beziehung stehen ( später). Ein Objekt kann andere Objekte erzeugen. Ein Objekt

Mehr

VIII: Vererbung. Unterklassen einer Klasse. Vererbung von Methoden und Instanzvariablen. Überschreiben von Methoden

VIII: Vererbung. Unterklassen einer Klasse. Vererbung von Methoden und Instanzvariablen. Überschreiben von Methoden VIII: Vererbung Unterklassen einer Klasse Vererbung von Methoden und Instanzvariablen Überschreiben von Methoden Vererbung als Realisierung einer is-a Beziehung. Informatik I VIII: Vererbung 259 Beispiel:

Mehr

Einführung in die objektorientierte Programmierung mit Java. Klausur am 19. Oktober 2005

Einführung in die objektorientierte Programmierung mit Java. Klausur am 19. Oktober 2005 Einführung in die objektorientierte Programmierung mit Java Klausur am 19. Oktober 2005 Matrikelnummer: Nachname: Vorname: Semesteranzahl: Die Klausur besteht aus drei Frageblöcken zu den Inhalten der

Mehr

C# Tutorial Part 1. Inhalt Part 1. Einleitung. Vorbereitung. Eagle Eye Studios. Einleitung Vorbereitung Das erste Projekt

C# Tutorial Part 1. Inhalt Part 1. Einleitung. Vorbereitung. Eagle Eye Studios. Einleitung Vorbereitung Das erste Projekt Eagle Eye Studios C# Tutorial Part 1 Inhalt Part 1 Einleitung Vorbereitung Das erste Projekt Einleitung Wer sich mit dem Programmieren schon einigermaßen auskennt, kann diesen Abschnitt überspringen. Programmieren,

Mehr

Dokumentation für die software für zahnärzte der procedia GmbH Onlinedokumentation

Dokumentation für die software für zahnärzte der procedia GmbH Onlinedokumentation Dokumentation für die software für zahnärzte der procedia GmbH Onlinedokumentation (Bei Abweichungen, die bspw. durch technischen Fortschritt entstehen können, ziehen Sie bitte immer das aktuelle Handbuch

Mehr

Ich programmier mir eine App

Ich programmier mir eine App Ich programmier mir eine App Erste Schritte Auf diesem Blatt wir eine App mit einer Maschine verglichen. Die Programmierung entspricht dann der Herstellung dieser Maschine in einer Werkstatt. In der linken

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

Vorbereitung zu Praktikum 3

Vorbereitung zu Praktikum 3 Vorbereitung zu Praktikum 3 Menü-Toolkit und Command Pattern Fallstudie zu Vererbung und Polymorphie: "Menü-Toolkit" Anwenderfreundliche Programme werden mit Menüs gesteuert In objektorientierten Anwendungen

Mehr

Objektorientierung: Klassen und Objekte

Objektorientierung: Klassen und Objekte Objektorientierung: Klassen und Objekte Klasse: Beschreibung für eine Menge von Objekten Schablone, Bauplan abstrakte Form Objekt: Instanz einer Klasse konkreter Inhalt (Werte) Klassen bestehen aus Attributen

Mehr

Delphi Starter. Einführung in Embarcadero Delphi. Version 3.5, Dezember 2013

Delphi Starter. Einführung in Embarcadero Delphi. Version 3.5, Dezember 2013 Delphi Starter Einführung in Embarcadero Delphi Version 3.5, Dezember 2013 Dieses Werk darf von jedem unter den Bedingungen der Creative-Commons-Lizenz CC-BY-ND 3.0 (de) genutzt werden. Autoren: Florian

Mehr

Willkommen zur Vorlesung. Objektorientierte Programmierung Vertiefung - Java

Willkommen zur Vorlesung. Objektorientierte Programmierung Vertiefung - Java Willkommen zur Vorlesung Objektorientierte Programmierung Vertiefung - Java Zum Dozenten Mein Name: Andreas Berndt Diplom-Informatiker (TU Darmstadt) Derzeit Software-Entwickler für Web- Applikationen

Mehr

Seminararbeit Ruby Uno Kartenspiel

Seminararbeit Ruby Uno Kartenspiel Seminararbeit Ruby Uno Kartenspiel Autor: Fabian Merki Fabian Merki 05.11.2006 1 von 10 Inhaltsverzeichnis Einleitung... 3 Die Idee... 4 Design und Implementierung in Ruby... 5 Testing... 7 Startbefehle...

Mehr

PARAGON Encrypted Disk

PARAGON Encrypted Disk PARAGON Encrypted Disk Anwenderhandbuch Paragon Technologie, Systemprogrammierung GmbH Copyright Paragon Technologie GmbH Herausgegeben von Paragon Technologie GmbH, Systemprogrammierung Pearl-Str. 1 D-79426

Mehr

Java: Vererbung. Teil 3: super() www.informatikzentrale.de

Java: Vererbung. Teil 3: super() www.informatikzentrale.de Java: Vererbung Teil 3: super() Konstruktor und Vererbung Kindklasse ruft SELBSTSTÄNDIG und IMMER zuerst den Konstruktor der Elternklasse auf! Konstruktor und Vererbung Kindklasse ruft SELBSTSTÄNDIG und

Mehr

1. BlueJ installieren (nach dem Buch Java lernen mit BlueJ von David J. Barnes; Michael Kölling)

1. BlueJ installieren (nach dem Buch Java lernen mit BlueJ von David J. Barnes; Michael Kölling) 1. BlueJ installieren... 1 2. BlueJ auf die deutsche Version umstellen... 1 3. BlueJ Extensions... 2 a. Klassenkarte... 2 i. UML Extension... 2 ii. Klassenkarte zum Schulbuch... 3 b. CNU BlueJ Code Formatter...

Mehr

Im Falle der Neueingabe müssen Sie in dem nachfolgendem Formular die Datenquelle auswählen und die Art der Prüfung festlegen.

Im Falle der Neueingabe müssen Sie in dem nachfolgendem Formular die Datenquelle auswählen und die Art der Prüfung festlegen. Ereignismanager Ereignismanager Ereignismanager - Grundsätzliches Allgemeines Mit Hilfe des Ereignismanagers können Sie Feldeingaben (bei Neueingaben oder Änderungen) überprüfen lassen. Sie können für

Mehr

Virtueller Seminarordner Anleitung für die Dozentinnen und Dozenten

Virtueller Seminarordner Anleitung für die Dozentinnen und Dozenten Virtueller Seminarordner Anleitung für die Dozentinnen und Dozenten In dem Virtuellen Seminarordner werden für die Teilnehmerinnen und Teilnehmer des Seminars alle für das Seminar wichtigen Informationen,

Mehr

Java Desktop Anwendungen

Java Desktop Anwendungen 5 1 Java Desktop Anwendungen das Problem: Desktop-Anwendungen werden mit Hilfe der Swing- Bibliothek programmiert, aber die Swing-Bibliothek ist riesig und unübersichtlich es gab kein Programmiergerüst

Mehr

Prüfungszeuch im Fach Objektorientierte Programmierung WS 2000

Prüfungszeuch im Fach Objektorientierte Programmierung WS 2000 Prüfungszeuch im Fach Objektorientierte Programmierung WS 2000 A. Beschreibung der Projektarbeit. Welche Aufgabe haben Sie im Rahmen der Projektarbeit gelöst? 2. Mit welchen Tools bzw. Programmen (Anwendung,

Mehr

Software-Entwicklung mit Delphi

Software-Entwicklung mit Delphi Software-Entwicklung mit Delphi Eine systematische Einführung von Dieter Orlamünder, Rüdiger Liskowsky, Heinrich Hußmann 1. Auflage Hanser München 2002 Verlag C.H. Beck im Internet: www.beck.de ISBN 978

Mehr

Programmieren I. Strategie zum Entwurf von Klassen. Beispiele. Design von Klassen. Dr. Klaus Höppner. Beispiel: Bibliothek

Programmieren I. Strategie zum Entwurf von Klassen. Beispiele. Design von Klassen. Dr. Klaus Höppner. Beispiel: Bibliothek Programmieren I Dr. Klaus Höppner Hochschule Darmstadt Wintersemester 2008/2009 1 / 22 2 / 22 Strategie zum Entwurf von Klassen Beispiele Objektorientierte Sichtweise: Mit welchen Objekten habe ich es

Mehr