AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Grundsätzliche Frage zu Klassen/ objektorientierter Progra.
Thema durchsuchen
Ansicht
Themen-Optionen

Grundsätzliche Frage zu Klassen/ objektorientierter Progra.

Ein Thema von fapsons · begonnen am 6. Mär 2007 · letzter Beitrag vom 6. Mär 2007
Antwort Antwort
fapsons

Registriert seit: 29. Jan 2007
Ort: Berlin
65 Beiträge
 
#1

Grundsätzliche Frage zu Klassen/ objektorientierter Progra.

  Alt 6. Mär 2007, 09:39
Hallo Leute,
bin der totale Anfänger, was objektorientierte Programmierung angeht.

Delphi-Quellcode:
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;
So weit bin ich bisher gekommen. Die einzelnen Proceduren schreiben alle auf das TIntArray Software.
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--
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Grundsätzliche Frage zu Klassen/ objektorientierter Prog

  Alt 6. Mär 2007, 09:48
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;
...
Markus Kinzler
  Mit Zitat antworten Zitat
Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#3

Re: Grundsätzliche Frage zu Klassen/ objektorientierter Prog

  Alt 6. Mär 2007, 09:57
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:
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;
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.
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:
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
Gruß Der Unwissende

[Roter Kasten]
Ja, da ich nichts anderes geschrieben habe, aber etwas ausführlicher lasse ich es mal als Ergänzung stehen
[/Roter Kasten]
  Mit Zitat antworten Zitat
IngoD7

Registriert seit: 16. Feb 2004
464 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Grundsätzliche Frage zu Klassen/ objektorientierter Prog

  Alt 6. Mär 2007, 09:59
Zitat von mkinzler:
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;
...
Genau.
Und dann erfolgt der Zugriff auch nicht so ...
Zitat von fapsons:
TSoftwarePaket.Set.Mitarbeiter5
[...]
und
TSoftwarePaket.Get.Mitarbeiter5
[...]
... sondern so
TSoftwarePaket.Mitarbeiter5 := ...
und
... := TSoftwarePaket.Mitarbeiter5
  Mit Zitat antworten Zitat
fapsons

Registriert seit: 29. Jan 2007
Ort: Berlin
65 Beiträge
 
#5

Re: Grundsätzliche Frage zu Klassen/ objektorientierter Prog

  Alt 6. Mär 2007, 10:09
Super, danke für eure Antworten. Werde es direkt mal ausprobieren...
  Mit Zitat antworten Zitat
fapsons

Registriert seit: 29. Jan 2007
Ort: Berlin
65 Beiträge
 
#6

Re: Grundsätzliche Frage zu Klassen/ objektorientierter Prog

  Alt 6. Mär 2007, 10:26
Vielen Dank an Der_Unwissende und IngoD7, ihr habt mir super weitergeholfen!!!
Schön, dass ihr euch so viel Zeit genommen habt...

LG
fapsons
  Mit Zitat antworten Zitat
IngoD7

Registriert seit: 16. Feb 2004
464 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: Grundsätzliche Frage zu Klassen/ objektorientierter Prog

  Alt 6. Mär 2007, 12:20
Zitat von fapsons:
Vielen Dank an Der_Unwissende und IngoD7, ihr habt mir super weitergeholfen!!!
Schön, dass ihr euch so viel Zeit genommen habt...
... und mkinzler.
Ich habe seine Ausführungen nur ergänzt.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:56 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz