AGB  ·  Datenschutz  ·  Impressum  







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

Pointer beim Komponentenprogrammieren

Ein Thema von F.W. · begonnen am 5. Dez 2004 · letzter Beitrag vom 6. Dez 2004
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von Jens Schumann
Jens Schumann

Registriert seit: 27. Apr 2003
Ort: Bad Honnef
1.644 Beiträge
 
Delphi 2009 Professional
 
#11

Re: Pointer beim Komponentenprogrammieren

  Alt 6. Dez 2004, 13:03
Hallo,
dem kann ich nur zustimmen
Zitat von dizzy:
Sauber wäre es dann, wenn du innerhalb der Implementierung der Klasse ihre private-Variable "FGrid" ansprichst, aus allen anderen Klassen heraus aber die Property "Grid". Auch wenn sie in der selben Unit liegen!
Das ist dem OOP-Konzept imho am besten zuträglich.
Damit mein Posting auch etwas Mehrwert enthält hier eine Gegenfrage:
Hast die Methode Notification des Vorfahren überschrieben?
Wenn nein kann es innerhalb der IDE zu schweren Schutzverletzungen kommen ein TStringGrid,
dass mit Komponente verlinkt ist, gelöscht wird.
I come from outer space to save the human race
  Mit Zitat antworten Zitat
Benutzerbild von dizzy
dizzy

Registriert seit: 26. Nov 2003
Ort: Lünen
1.932 Beiträge
 
Delphi 7 Enterprise
 
#12

Re: Pointer beim Komponentenprogrammieren

  Alt 6. Dez 2004, 13:11
Zitat von teebee:
Zitat von dizzy:
Sauber wäre es dann, wenn du innerhalb der Implementierung der Klasse ihre private-Variable "FGrid" ansprichst
Ganz sauber wird es erst, wenn das private Feld nur in den Get/Set-Methoden der Property angesprochen wird und an allen anderen Stellen in der Klasse über die Property gegangen wird.

Gruß, teebee
Das fordert meines Wissens nach die OOP nicht so strikt. Es ist imho nur so geregelt dass man von ausserhalb einer Klasse keinen direkten Zugriff auf die Felder haben soll. Wie man in der Klasse selbst zugreift ist frei, und direkt auch noch einiges performanter als mit Umweg über Getter/Setter (die in Delphi dank der Properties ja nichtmal zwingend sind).
Zumal mit deiner Variante die Getter/Setter ihrer Existenzberechtigung enthoben würden (wenn es nur um einfache Wertzuweisung geht!). Dann kann ich genau so gut ein public-Feld nehmen .

[ot] Ich frage mich ohnehin warum das Geheimnisprinzip bei der OOP so überaus wichtig sein soll. Wenn es um Felder geht denen einfach zugewiesen wird, und die auch weiter vererbt werden sollen, warum dann nicht public? Ich mach's zwar auch nicht, aber warum ist das so? Nur damit die armen C'ler und Javaisten (C# mal ausgenommen) die von Properties nur träumen können immer schön einheitlich "SetXXX()" schreiben können, und nicht mal "SetVar(Wert)" und mal "Var = Wert"?
Irgendwie doof
[/ot]

Der Propertyzugriff ist imho ohnehin eines der tollsten Features der DL!
Fabian K.
INSERT INTO HandVonFreundin SELECT * FROM Himmel
  Mit Zitat antworten Zitat
Benutzerbild von nailor
nailor

Registriert seit: 12. Dez 2002
Ort: Karlsruhe
1.989 Beiträge
 
#13

Re: Pointer beim Komponentenprogrammieren

  Alt 6. Dez 2004, 13:22
meiner meinung nach die daten direkt nur da wo unabdinglich (bei der implementation der property) verwenden und an allen anderen stellen die property zu nutzen. die einzige mir bekannt ausnahme besteht da, wo es _wirklich_ auf speed ankommt, und der property-overhead stören würde. das ist aber bei 08/15 fällen nie der fall.
Michael N.
http://nailor.devzero.de/code/sharpmath/testing/ --- Tests, Feedback, Anregungen, ... aller Art sehr willkommen!
::: don't try so hard - it'll happen for a reason :::
  Mit Zitat antworten Zitat
Benutzerbild von F.W.
F.W.

Registriert seit: 28. Jul 2003
Ort: Zittau
636 Beiträge
 
#14

Re: Pointer beim Komponentenprogrammieren

  Alt 6. Dez 2004, 16:26
Zitat:
Hast die Methode Notification des Vorfahren überschrieben?
Wenn nein kann es innerhalb der IDE zu schweren Schutzverletzungen kommen ein TStringGrid,
dass mit Komponente verlinkt ist, gelöscht wird.
Nööö hab ich nicht!
Und ja, du hast recht, es kommt zu Zugriffsverletzungen.
In der Kompo stekt noch ein propery, dass die Spaltenzahlen angibt, allerdings nicht nur für die Grid, die Grid ist ja nur zusätzlich zur Ausgabe. Wenn also das Property in der Designtime verändert wird, wird auf die Grid zugegriffen, ihre Spaltenzahl verändert und sie wird mit nullen gefüllt (in jede Zelle eine "0").
Das Spaltenändern macht er noch, das sieht man ja, aber mit nullen füllen scheint nicht zu funktionieren, ich kann nichts genaueres sagen,
[ot]
ich nicht weiß wie oder besser nicht weiß ob überhaupt: man bei Komponenten in der Designtime Haltepunkte setzt oder so was in der Art, wie kann ich rausbekommen, was das für ein Fehler ist oder welcher? Zugriffsverletzung an Adresse xxx sagt mir nicht viel! Kann man da irgendwie nachgucken?
[/ot]
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 09:02 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