AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Delphi zählt falsch

Ein Thema von Coder · begonnen am 16. Jan 2005 · letzter Beitrag vom 17. Jan 2005
Antwort Antwort
Robert_G
(Gast)

n/a Beiträge
 
#1

Re: Delphi zählt falsch

  Alt 17. Jan 2005, 00:23
Zitat von Hansa:
Was soll den damit sein ?

Konkretes Beispiel :

Delphi-Quellcode:
  protected
    ArtNr : string;
    ArtGef : boolean;
    VonArtNr,
    BisArtNr : integer;
...
    KommaCols : set of byte;
...
Das ist bei weitem nicht alles. Ungefähr so sieht die class aus, die ich verwende, um einen Artikel zu erfassen. Ob das sich jetzt um den Lagerbestand oder eine Rechnungsposition handelt, das ist völlig egal. Der Artikel muß nur da sein.
Gutes Beispiel wie es nicht gehen sollte.
Warum haben die Nachfahren von Artikel schreibenden Zugriff auf die Artikelnummer?
Im allgemeinen lasse ich Nachfahren nur dann auf Felder zugreifen, wenn ich es für konsistent halte. (Wobei ich auch dann höchsten den Setter als virtual deklariere )
Denn hast du auf einmal einen falschen Schlüssel geht die Sucherei los. Haben die Nachfahren keinen schriebenden Zugriff, kann er nur beim Erzeugen der Instanz oder in TArticle zersägt worden sein.


Zitat von Hansa:
Die Variable "ArtGef" muß also auch dem Lagerbestand zugänglich sein. Ansonsten müßte sie neu definiert und ausgewertet werden, was die vorhandene Form aber so oder so schon macht. Ergo : Rad neu erfinden und zig-fach verwalten.
Wie du unten siehst stellt es kein Problem dar.
Zitat von Hansa:
Es ist schon erschreckend, zu sehen, daß das OOP Konzept so gut wie nirgends berücksichtigt und offensichtlich auch ncht gelehrt wird.
Finde ich auch.
Zitat von Hansa:
Und wie so was mit private gehen soll, das soll mir erst mal einer sagen.
Bitte schön:
Delphi-Quellcode:
type TArticle = class
private
  fArtNr : string;
...
published
  property ArtNr :string read fArtNr;
...
public constructor Create(const aArtNNr :string);
end;

type TSomeDescendant = class(TArticle)
...
public constructor Create(const: aArtNr: string; aSomeProperty :TSomeType);
...
end;
implementation

constructor TArticle.Create(const: aArtNr: string);
begin
  inherited Create();
  fArtNr := aArtNr;
end;

constructor TSomeDescendant.Create(const: aArtNr: string; aSomeProperty :TSomeType);
begin
  inherited Create(aArtNr);
  fSomeProperty := aSomeProperty;
end;
Wobei published properties nur Sinn machen, wenn man auf RTTI-Funktionen zurückgreifen möchte oder das Delphi-Streaming-System verwendet. (zum Beispiel in der Kombi TReader/TWriter & TCollection oder als persistente Einstellungen im OI).
Im Normalfall sollte public reichen. (Oder halt protected, wenn es nur die Nachfahren sehen sollen)

Zitat:
Wobei Leute, die keine Ahnung von Delphi haben, sich hierbei auch Fragen würden, ob das denn wirklich gekapselt ist, da man doch MyInstance.ArtNr := '1234'; schreiben kann und nicht wie in Java ein
Zitat:
MyInstance.setArtNr("1234");
nutzt. (habe ich erst kürzlich gehört).
Hihi Java und seine expliziten Properties. Ohne die wäre Java eine recht hübsche Sache.
  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 00:03 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