AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi In eigener Klasse properties oder public variablen ??
Thema durchsuchen
Ansicht
Themen-Optionen

In eigener Klasse properties oder public variablen ??

Ein Thema von etom291272 · begonnen am 18. Aug 2005 · letzter Beitrag vom 18. Aug 2005
Antwort Antwort
Seite 1 von 2  1 2      
etom291272

Registriert seit: 16. Feb 2004
Ort: ---
232 Beiträge
 
#1

In eigener Klasse properties oder public variablen ??

  Alt 18. Aug 2005, 07:57
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
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: In eigener Klasse properties oder public variablen ??

  Alt 18. Aug 2005, 08:02
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.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von Sanchez
Sanchez

Registriert seit: 24. Apr 2003
Ort: Neumarkt Stmk
892 Beiträge
 
Delphi XE6 Enterprise
 
#3

Re: In eigener Klasse properties oder public variablen ??

  Alt 18. Aug 2005, 08:04
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
Daniel
Testen ist feige!
  Mit Zitat antworten Zitat
etom291272

Registriert seit: 16. Feb 2004
Ort: ---
232 Beiträge
 
#4

Re: In eigener Klasse properties oder public variablen ??

  Alt 18. Aug 2005, 08:07

@Sanchez

Das das Tastenkürzel bei Properties geht wusste ich nicht Danke !!!
Damit hat sich die Frage erledigt.
  Mit Zitat antworten Zitat
Benutzerbild von Speedmaster
Speedmaster

Registriert seit: 4. Mär 2005
Ort: Karlsruhe
535 Beiträge
 
Delphi 2005 Personal
 
#5

Re: In eigener Klasse properties oder public variablen ??

  Alt 18. Aug 2005, 08:15
Zitat von Sanchez:
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
Schwachsinn, warum sollte man keine Variable auf public setzen. Warum eine extra property anlegen oder eine Funktion damit du den Wert dieser bekommst.

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 )!
Felix K.
Zitat:
Siehst du diesen Park da unten?
Jeden Tag lernen sich leute kennen und verlassen einander, und du hast dein ganzes Leben Zeit darin zu gehen!
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#6

Re: In eigener Klasse properties oder public variablen ??

  Alt 18. Aug 2005, 09:08
och menno Speedmaster...
Zitat:
Schwachsinn, warum sollte man keine Variable auf public setzen. Warum eine extra property anlegen oder eine Funktion damit du den Wert dieser bekommst.
Dass du der Held bist wissen wir ja, aber das war so ein peinlicher Auftritt...
Eine Property abstahiert Zugriffe.
property X : Y read fX write fX; Das ist nicht langsamer als
X : Y; AABER:
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 von Speedmaster:
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 )!
Dann kannst du sicher auch ein Beispiel nennen, right?
  Mit Zitat antworten Zitat
Benutzerbild von malo
malo

Registriert seit: 19. Sep 2004
2.115 Beiträge
 
#7

Re: In eigener Klasse properties oder public variablen ??

  Alt 18. Aug 2005, 09:14
Zitat von Sanchez:
Einfach die Property (z.B. property Irgendwas : EinTyp hinschreiben und Strg-Shift-C drücken.
Dann haben Personal-Nutzer aber verloren
  Mit Zitat antworten Zitat
Benutzerbild von Speedmaster
Speedmaster

Registriert seit: 4. Mär 2005
Ort: Karlsruhe
535 Beiträge
 
Delphi 2005 Personal
 
#8

Re: In eigener Klasse properties oder public variablen ??

  Alt 18. Aug 2005, 09:32
Zitat von Robert_G:
Zitat von Speedmaster:
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 )!
Dann kannst du sicher auch ein Beispiel nennen, right?
Selbstverständlich, die ganzen Env. Variablen( z.b. DateTime, oder TickCount ) sind Global( Abgesehen vom Namenspace ). Und hier noch ein kleines Codebeispiel( Was mit Spontan einfiel, und meine nicht das das nicht zählt! ):
Code:
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";
        }
        .
        .
        .
    }
    .
    .
    .
}
Ach ja: Das es langsammer ist hat ja niemand gesagt!

mfg

Speedmaster
Felix K.
Zitat:
Siehst du diesen Park da unten?
Jeden Tag lernen sich leute kennen und verlassen einander, und du hast dein ganzes Leben Zeit darin zu gehen!
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#9

Re: In eigener Klasse properties oder public variablen ??

  Alt 18. Aug 2005, 09:57
Zitat von Speedmaster:
Zitat von Robert_G:
Dann kannst du sicher auch ein Beispiel nennen, right?
Selbstverständlich, die ganzen Env. Variablen( z.b. DateTime, oder TickCount ) sind Global( Abgesehen vom Namenspace ).
Sehen für mich nach statischen properties aus.
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:
Und hier noch ein kleines Codebeispiel( Was mit Spontan einfiel, und meine nicht das das nicht zählt! ):
Code:
...
public class CreateDevice : Form
{
  ...
  // Our global variables for this project
  Device device = null; // Our rendering device
  ...
}
Wo siehst du da eine globale Variable, oder auch nur ein öffentliches Feld?
Ich sehe nur ein privates Feld...
Und bevor du dir noch weitere nicht hinterfragte Argumente vorbringst: Überlege dochmal für was für ein sinnloses Unterfangen, du hier plädierst...
  Mit Zitat antworten Zitat
Benutzerbild von Sanchez
Sanchez

Registriert seit: 24. Apr 2003
Ort: Neumarkt Stmk
892 Beiträge
 
Delphi XE6 Enterprise
 
#10

Re: In eigener Klasse properties oder public variablen ??

  Alt 18. Aug 2005, 10:16
Zitat von malo:
Dann haben Personal-Nutzer aber verloren
Funktioniert das etwa in Personal-Editionen nicht?

@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?
Daniel
Testen ist feige!
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 12:21 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