![]() |
Grundsätzliche Frage zu Klassen/ objektorientierter Progra.
Hallo Leute,
bin der totale Anfänger, was objektorientierte Programmierung angeht.
Delphi-Quellcode:
So weit bin ich bisher gekommen. Die einzelnen Proceduren schreiben alle auf das TIntArray Software.
TSoftwarePaket = class
private Software: TIntArray; public constructor Create; procedure Init; function Create_Key :String; procedure Mitarbeiter5(Bool :boolean); procedure ZE(Bool :boolean); procedure BDE(Bool :boolean); procedure PEP(Bool :boolean); procedure ZK(Bool :boolean); procedure AV(Bool :boolean); procedure WebZE(Bool :boolean); procedure AntragsV(Bool :boolean); ... end; Merke allerdings im Nachinein, dass so mein TSoftwarePaket sehr unübersichtlich wird. Ich brauche nämlich ausserdem noch die Möglichkeit die Daten aus dem TIntArray wieder auszulesen. Würde gerne sowas wie TSoftwarePaket.Set.Mitarbeiter5 TSoftwarePaket.Set.ZE TSoftwarePaket.Set.BDE... und TSoftwarePaket.Get.Mitarbeiter5 TSoftwarePaket.Get.ZE TSoftwarePaket.Get.BDE Ich hoffe, ihr könnt mir folgen...;) Wie löse ich das am besten? Gruß --fapsons-- |
Re: Grundsätzliche Frage zu Klassen/ objektorientierter Prog
Löse das doch mit Gettern/Settern und Properties.
Delphi-Quellcode:
TSoftwarePaket = class
private ... procedure setMitarbeiter5( Value: ...); function GetMitarbeiter5: ...; ... published property Mitarbeiter5: ... read getMitarbeiter write setMitarbeiter; ... |
Re: Grundsätzliche Frage zu Klassen/ objektorientierter Prog
Hi,
erstmal vorweg, dein Problem hat so noch nicht viel mit der Objekt Orientierten Programmierung zu tun. Die OOP ist ein Konzept, das weit über das verwenden von Klassen hinaus geht. Eindeutig ein Thema für sich. Die Kernpunkte liegen deutlicher in der Möglichen Abstraktion und Kapselung. Das alles führt dazu, dass Du im Idealfall immer austauschbare Konstrukte bekommst, die zudem leicht wiederverwendet werden können. Das ist aber wie gesagt ein ganz eigenes Thema (einfach mal nach OOP suchen und/oder Bücher und Tutorials bemühen). Was dein Problem angeht, so kannst Du es am einfachsten über die Eigenschaften (Properties) einer Klasse regeln. Ein Property ist eine Eigenschaft, auf die wie auf eine Variable zugegriffen werden kann. Die eigentlichen Lese- bzw. Schreibzugriffe finden jedoch nicht direkt statt, vielmehr kannst Du diese an eine Methode delegieren (der direkte Zugriff auf eine Variable ist natürlich auch möglich).
Delphi-Quellcode:
In diesem einfachen Beispiel siehst Du den Aufbau. Mit dem Schlüsselwort property zeigst Du an, dass es sich hier um eine Eigenschaft handelt. Es folgt der Name und Typ (wie bei einer Variable auch). Danach kannst Du nun Lese- und/oder Schreibzugriffe delegieren. Für die erste Eigenschaft werden dabei zwei Methoden bemüht. Wird der Wert von Variable1 gelesen, dann wird eigentlich die Methode getVar1 aufgerufen. Was in der gemacht wird ist egal, wichtig ist nur, dass die ein TTyp zurückgeben muss. Beim schreiben wird analog setVar1 aufgerufen, ohne dass man das von außen sieht.
type
TClass = class(TObject) private FVariable1: TTyp; FVariable2: TTyp; protected procedure setVar1(const Value: TTyp); function getVar1: TTyp; public // hier die eigentlichen Eigenschaften property Variable1: TTyp read getVar1 write setVar1; property Variable2: TTyp read FVariable2; end; Variable2 hingegen kann nur gelesen werden (write wurde weggelassen). Zudem greift sie direkt auf den Wert von FVariable2 zu. Du kannst das auch beliebig kombinieren (Lesen und Schreiben können direkt auf eine Variable zugreifen). Von außen verhalten die sich wie normale Variablen:
Delphi-Quellcode:
Gruß Der Unwissende
var instanz: TClass;
begin instanz := TClass.Create; instanz.Variable1 := XYZ; // würde jetzt setVar1(XYZ) aufrufen blubb := instanz.Variable2; // liest direkt den Wert FVariable2 // NICHT MÖGLICH: blubb := instanz.FVariable2; // Da Variable privat instanz.Variable2 := XYZ; // da kein write für Variable2 existier [Roter Kasten] Ja, da ich nichts anderes geschrieben habe, aber etwas ausführlicher :wink: lasse ich es mal als Ergänzung stehen [/Roter Kasten] |
Re: Grundsätzliche Frage zu Klassen/ objektorientierter Prog
Zitat:
Und dann erfolgt der Zugriff auch nicht so ... Zitat:
TSoftwarePaket.Mitarbeiter5 := ... und ... := TSoftwarePaket.Mitarbeiter5 |
Re: Grundsätzliche Frage zu Klassen/ objektorientierter Prog
Super, danke für eure Antworten. Werde es direkt mal ausprobieren...
|
Re: Grundsätzliche Frage zu Klassen/ objektorientierter Prog
Vielen Dank an Der_Unwissende und IngoD7, ihr habt mir super weitergeholfen!!!
Schön, dass ihr euch so viel Zeit genommen habt...;) LG fapsons |
Re: Grundsätzliche Frage zu Klassen/ objektorientierter Prog
Zitat:
Ich habe seine Ausführungen nur ergänzt. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:43 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz