Methode / Eigenschaft



  • Wie ist hier die genaue Grenzziehung? Setzt man Eigenschaften nur anstelle der Kombination get/set ein?



  • Erhard Henkes schrieb:

    Wie ist hier die genaue Grenzziehung? Setzt man Eigenschaften nur anstelle der Kombination get/set ein?

    ich würde sagen schon...entweder du weist was zu oder du gibst was aus...was du bei einer zuweisung/ausgabe alles anstellst innerhalb der get/set blöcke liegt bei dir.
    ne Eigenschaft wird bestimmt den Compiler meckern lassen wenn du sie einfach im Raum aufrufst ohne irgendeine zuweisung/ausgabe.



  • Eigenschaften sind einfach Eigenschaften. 🙂
    Wenn du ein Auto hast, ist die Farbe, der Füllstand des Tanks, der Zustand der Reifen, usw. eine Eigenschaft, die ich über ein Proberty getten lassen würde. Evtl. auch setten.
    Natürlich müssen aber Eigenschaften nicht dumme Wrapper um die Datenelemente sein, die Gesamtreparaturkosten zu getten könnte erstmal alles Mögliche zusammenrechnen.

    Demgegenüber gibt es Dinge, die offenkundlich keine Eigenschaften sind, z.B. Methoden wie gibGas(). gibGas() erhöht das Tempo, aber man setzt es damit nicht auf ein bestimmtes Tempo. Wenn man das machen könnte, würd ich vielleicht wieder ein Proberty nehmen:

    myAuto.Tempomat.Einstellung = 100;
    

    Bei einem Bankkonto würde ich den Kontostand als get-Proberty machen und alles andere über Methoden. Kontostand setten macht einfach keinen Sinn, da kann nur was kaputtgehen (lass mal fremde Leute deinen Kontostand setten, hey!!).
    Sowas sollte über einzahlen(betrag) und abbuchen(betrag) geschehen.

    Für mich sind Proberties "dumme" getter und setter. Es sind getter, die keine Parameter nehmen können, sondern wo klar ist, was für einen Wert sie jetzt zurückliefern. Also kein Ersatz für getObjectsAt(x, y).
    Und es sind dumme setter, die keine Parameter nehmen können, außer ihr komisches

    value
    

    . Oft ist es besser, Werte nur zu verändern aber nicht auf einen bestimmten Betrag zu setzen. Da würd ich dann kein Proberty nehmen, auch wenn es schon gehen würde (Konto.Abbuchung = 100).

    Damit ist der Anwendungsbereich von Proberties eh schon massiv eingeschränkt, weil ja direkte getter und setter eh nicht so toll sind. Ich persönlich hab btw. wesentlich mehr getter-only als sonstige Proberties.


Anmelden zum Antworten