![]() |
In eigener Klasse properties oder public variablen ??
Hallo zusammen :!:
Eine Frage an die OOP Spezialisten unter euch :?: :?: :?: Wann man eine eigene Klasse definiert wan sollte man Properties einsetzen und wann genügt es einfach public variablen zu definieren :?: Wenn ich zum Beispiel ein Klasse habe (nehmen wir an die Klasse diehnt dazu uber die Serielle Schnittstelle Daten zu empfangen) brauch ich zum Beispiel die fünf Werte für die Serielle Kommunikation (Schnittstelle, Baudrate,..) Es war doch viel Schreibarbeit die 5 Properties zu tipseln ich hätte imho das selbe erreicht hätte ich einfach die 5 variablen im Public Teil definiert. Mir erscheint der Einsatz von Properties imho eigentlich nur Sinnvoll wenn dahinter eine komplexe Methode Steckt um den Wert zu manipulieren. :?: :?: :?: :?: Bitte um Eure Werte Meinung :warn: |
Re: In eigener Klasse properties oder public variablen ??
Properties müssen immer dann verwendet werden wenn:
- Wertüberprüfungen erfolgen müssen (z.B. eine Bautrate von 142 ist mit sicherheit nicht gültig). - Nicht alle Werte eine Datentyps gültig sind (z.B. ein String maximal 300 Zeichen behinhalten darf aber mindestens 6 Zeichen) - Zusätzliche Aktionen erfolgen müssen (z.B. Active-Property) - Wenn es per DFM-Streaming gesichert werden muss (Puplished-Property) Nach der reinen Lehre darf es keine public Variablen gehben. |
Re: In eigener Klasse properties oder public variablen ??
Hallo,
Variablen sollte niemals public sein, das würde der OOP widersprechen. Wenn du wirklich Variablen direkt von außen setzen möchtest, ohne weiter Aktionen auszulösen, dann ist doch die Property auch nicht mehr Schreibarbeit als eine Variable. Einfach die Property (z.B. property Irgendwas : EinTyp;) hinschreiben und Strg-Shift-C drücken. Außerdem kannst du per Property z.B. den Zugriff aufs auslesen der Variable einschränken. Bei einer Public-Variable darf jeder alles damit machen. grüße, daniel |
Re: In eigener Klasse properties oder public variablen ??
:cheers:
@Sanchez Das das Tastenkürzel bei Properties geht wusste ich nicht Danke !!! Damit hat sich die Frage erledigt. |
Re: In eigener Klasse properties oder public variablen ??
Zitat:
Selbst Microsoft hält sich nicht an diesen "Angeblichen" Grundsatz der OOP, auch nicht in .NET ( Dort gibts mehr Globale Variablen als du an einer Hand aufzählen kannst )! |
Re: In eigener Klasse properties oder public variablen ??
och menno Speedmaster...
Zitat:
Eine Property abstahiert Zugriffe.
Delphi-Quellcode:
Das ist nicht langsamer als
property X : Y read fX write fX;
Delphi-Quellcode:
AABER:
X : Y;
Wenn du nur noch lesenden Zugriff erlauben willst: wirf die write clause raus. Willst du Dirty state management für die Klase betreiben, kannst du Änderungen im Setter abfangen. Du kannst im Setter auch Voraussetzungen prüfen, und eine Zuweisung eines dummen Wertes in einer dummen Situation abweisen. Ntürlich alles ohne das öffentliche Interface der Klasse zu verändern (bis auf read write -> read) Als "Schwachsinn" empfinde ich, dass manche lieber total verkrüppelten Code schreiben, weil sie es für zu aufwenig halten vernünftig zu planen und/oder überhaupt nachzudenken. btw: Zitat:
|
Re: In eigener Klasse properties oder public variablen ??
Zitat:
|
Re: In eigener Klasse properties oder public variablen ??
Zitat:
Code:
Ach ja: Das es langsammer ist hat ja niemand gesagt!
using System;
using System.Drawing; using System.Windows.Forms; using Microsoft.DirectX; using Microsoft.DirectX.Direct3D; namespace DeviceTutorial { public class CreateDevice : Form { // Our global variables for this project Device device = null; // Our rendering device public CreateDevice() { // Set the initial size of our form this.ClientSize = new System.Drawing.Size(400,300); // And its caption this.Text = "D3D Tutorial 01: CreateDevice"; } . . . } . . . } mfg Speedmaster |
Re: In eigener Klasse properties oder public variablen ??
Zitat:
Zum Beispiel Environment.CurrentDirectory würde in einer Hochsprache so aussehen:
Code:
public static string CurrentDirectory
{ get { return Directory.GetCurrentDirectory(); } set { Directory.SetCurrentDirectory(value); } } Zitat:
Ich sehe nur ein privates Feld... :wall: Und bevor du dir noch weitere nicht hinterfragte Argumente vorbringst: Überlege dochmal für was für ein sinnloses Unterfangen, du hier plädierst... :roll: |
Re: In eigener Klasse properties oder public variablen ??
Zitat:
@Speedmaster: Warum sollte ich auf biegen und brechen unsauberen Code produzieren, der mir Änderungen stark erschwert und ein unkontrolliertes Nutzen eines Objektes zulässt, wenn es mit dem Mehraufwand eines Shortcuttes auch besser geht? |
Re: In eigener Klasse properties oder public variablen ??
Zitat:
D7 PE: Strg+Shift+C - Kein Ergebnis D2005 PE: Strg+Shift+C - Kein Ergebnis Und um zu überprüfen, ob das vielleicht an der Tastatur oder an irgendwelchen Treibern/Viren etc. liegt, einmal ein Gegenbeispiel. D5 Pro: Strg+Shift+C - Siehe da! Die Klassen sind vervollständigt :firejump: Von daher... ;) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:58 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 by Thomas Breitkreuz