fragnichmich Geschrieben 10. Dezember 2010 Geschrieben 10. Dezember 2010 hallo alle, ich habe bisher vornehmlich mit java gearbeitet und versuche nun mich mit vb.net anzufreunden. kann mir bitte jemand den sinn des property-konstrukts erklären, oder anders: wo ist hier der unterschied zwischen a und b? Private _a As Integer Public Property a() As Integer Get Return _a End Get Set(ByVal Value As Integer) _a = Value End Set End Property und Private _b As Integer Public get_b() As Integer Return _b End get_b Public set_b(ByVal value As Integer) _b = value End set_b gruß ich Zitieren
Guybrush Threepwood Geschrieben 10. Dezember 2010 Geschrieben 10. Dezember 2010 Ich kenn mich mit der VB Syntax nicht aus deswegen bin ich mir nicht sicher ob das erste so richtig ist. Wenn es aber so stimmt dann hast du beim ersten getter und setter für a und beim zweiten einfach nur Funktionen um b zu setzten bzw. zurückzugeben. Also Pseudo getter/setter wie in Java. Beim ersten schreibst du dann zum Beispiel Instanz.a = 5; und beim zweiten Instanz.set_b(5); Zitieren
Gateway_man Geschrieben 10. Dezember 2010 Geschrieben 10. Dezember 2010 Die Lesbarkeit wird erhöht und man muss nichtmehr 2 Funktionen schreiben, sondern kann alles bequem in eine schreiben. Den Zugriff kannst du über die Modify's Readonly oder Writeonly setzten.... lg Gateway Zitieren
fragnichmich Geschrieben 10. Dezember 2010 Autor Geschrieben 10. Dezember 2010 naja, ich bin mir nicht sicher, ob man wirklich in getter / setter und pseudo-getter / -setter differenzieren kann? der compiler macht doch aus beidem das gleiche, oder gibt es da einen unterschied? die unterschiedliche schreibweise beim aufruf ist klar. aber ich frage mich, ob die schreibweise die einführung eines neuen programmier-konstruktes (erhöhung der komplexität) rechtfertigt? die lesbarkeit ist natürlich sehr von der gewöhnung abhängig. mich irritiert das mit den properties im moment mehr. auch das mit den modifikatoren löse ich dadurch, dass ich den entsprechenden modifikator einfach weg lasse. dann wird er mir über intellisense auch nicht angeboten. worauf ich hinaus will: ich finde es intuitiv, dass ich eine variable habe, die ich über eine funktion schreiben oder lesen kann. punkt - aus - fertig. das ist einfach und von geringer komplexität. mich irritiert, dass diese funktionen in vb in ein property-konstrukt verpackt werden. das erhöht aus meiner sicht die komplexität ohne (einen für mich) erkennbaren mehrwert. macht der compiler etwas anderes daraus? gruß ich Zitieren
Klotzkopp Geschrieben 10. Dezember 2010 Geschrieben 10. Dezember 2010 die unterschiedliche schreibweise beim aufruf ist klar. aber ich frage mich, ob die schreibweise die einführung eines neuen programmier-konstruktes (erhöhung der komplexität) rechtfertigt?Neu für wen? Properties gab's in VB schon immer, wenn auch nicht für eigenen Code. Getter und Setter sind in anderen Sprachen nicht so allgegenwärtig wie in Java, wo öffentliche Instanzvariablen mehr oder weniger verteufelt werden. Du kannst natürlich VB.NET so wie Java benutzen, es zwingt dich ja niemand, Properties zu verwenden. worauf ich hinaus will: ich finde es intuitiv, dass ich eine variable habe, die ich über eine funktion schreiben oder lesen kann. punkt - aus - fertig. das ist einfach und von geringer komplexität. Ich habe bei Java gelegentlich den Eindruck, dass reflexartig für jede private Instanzvariable Getter und Setter bereitgestellt werden, ohne über den Nutzen nachzudenken. Hinterher ist dann die öffentliche Schnittstelle einer Klasse ein ziemlich exaktes Abbild der internen Struktur. Aber das ist auch nur mein C++-geprägter Eindruck von Java. In anderen Sprachen macht man eben manche Dinge anders. Darüber, ob das besser oder schlechter ist, sollte man erst dann urteilen, wenn man beide Sprachen gut kennt. mich irritiert, dass diese funktionen in vb in ein property-konstrukt verpackt werden. das erhöht aus meiner sicht die komplexität ohne (einen für mich) erkennbaren mehrwert. Ich bin ziemlich sicher, dass das in deiner Java-geprägten Sichtweise begründet liegt. macht der compiler etwas anderes daraus? Nein. Zitieren
fragnichmich Geschrieben 10. Dezember 2010 Autor Geschrieben 10. Dezember 2010 Neu für wen? Properties gab's in VB schon immer, wenn auch nicht für eigenen Code. Getter und Setter sind in anderen Sprachen nicht so allgegenwärtig wie in Java, wo öffentliche Instanzvariablen mehr oder weniger verteufelt werden. ja, das stimmt. neu gilt in diesem fall für mich. aber mit dem teufel habe ich es eigentlich nicht so... Du kannst natürlich VB.NET so wie Java benutzen, es zwingt dich ja niemand, Properties zu verwenden. meine frage war, ob es unabhängig von der für mich ungewohnten schreibweise einen mehrwert (z.b. besondere funktionalitäten für properties) durch das property-konstrukt gibt, den ich einfach nicht erkannt / übersehen habe? gruß ich Zitieren
dr.dimitri Geschrieben 10. Dezember 2010 Geschrieben 10. Dezember 2010 Also ich kenne Properties noch aus der C++Builder Zeit (in Delphi/Kylix war es genauso). Dort waren properties spezielle getter/setter Methoden, die die Eigenschaft besaßen, dass diese im Properties Editor der Entwicklungsumgebung auftauchten. Also z.B. hatte ein Butten die Properties Text, Color etc. die per Mausklick geändert werden konnte und sich dann auch sofort im Design wiederspiegelten. Evtl. ist das bei vb.net ähnlich. Dim Zitieren
Klotzkopp Geschrieben 10. Dezember 2010 Geschrieben 10. Dezember 2010 meine frage war, ob es unabhängig von der für mich ungewohnten schreibweise einen mehrwert (z.b. besondere funktionalitäten für properties) durch das property-konstrukt gibt, den ich einfach nicht erkannt / übersehen habe?Gegenüber Getter/Setter haben Properties den Vorteil, dass sie immer direkt beieinander stehen, und dass sie die in VB gewohnte Zugriffssyntax bieten. Gegenüber öffentlichen Instanzvariablen haben sie den Vorteil der Kapselung und der Möglichkeit der Validierung. Zitieren
Guybrush Threepwood Geschrieben 10. Dezember 2010 Geschrieben 10. Dezember 2010 Außerdem ist der große Vorteil das es ein Sprachelement ist das zur Syntax gehört. Bei Java ist das nur eine Namenskonvention das die Methode mit get oder set anfangen muss und bestimmte Frameworks oder ähnliches dann halt nach Funktionen suchen die so heißen. Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.