Pure Property Klasse & pure Methoden Klassen



  • Heya Leute!

    Ich hab mich ein wenig mit Projekt-Management befasst und auch Software Architektur befasst.

    Dort wurde mir an einer Stelle ans Herz gelegt Klasse in reine Property & Methoden Klassen zu splitten.

    Ich würde gerne mal eine kleine Argumentation zu dem Thema hören, da ich leider nichts brauchbares oder spezifisches im I-Net finden konnte.

    gruß Charlie



  • Falke88 schrieb:

    Dort wurde mir an einer Stelle ans Herz gelegt Klasse in reine Property & Methoden Klassen zu splitten.

    Versteh ich nicht so ganz, hört sich aber irgendwie so an, als ob es die Kapselung unmöglich machen würde, was wohl kaum gut sein kann.
    Quelle?



  • Mich würde interessieren an welcher Stelle dir das ans Herz gelegt wurde.

    MfG SideWinder



  • Ich schätze er spricht von C# oder sowas und meint eine Klasse in 2 Dateien zu splitten.
    Keine Ahnung ob 'man' das so macht.



  • @Falke88
    Du musst schon das konkrete Beispiel beschreiben.

    Es gibt nämlich konkrete Fälle wo das Sinn macht. z.B. wenn die Properties gar keine Eigenschaften des Objekts sind sondern Eigenschaften "des Systems". Ein Wink mit dem Zaunpfahl ist dabei normalerweise dass alle Properties static sind. In dem Fall kann es Sinn machen eine eigene Klasse für diese Properties zu machen.

    So ganz allgemein klingt es aber eher nach Blödsinn.



  • Jockelx schrieb:

    Ich schätze er spricht von C# oder sowas und meint eine Klasse in 2 Dateien zu splitten.
    Keine Ahnung ob 'man' das so macht.

    Da trennt man eigentlich nie aus Spaß Fields und Methoden, und schon gar nicht Properties und Methoden. Das ist eher für Klassen gedacht die großteils generiert werden und dann noch um ein oder zwei Methoden erweitert werden können/sollen.

    MfG SideWinder



  • Meine Quelle ist Microsoft Virtual Academy. Dort gibt es ein Kurs "moderne Software Entwicklung".

    Dort werden Dinge wie agile Entwicklung, SOLID, uvm. näher gebracht und relativ gut erklärt.

    Auch dort wurde das Thema mit der reinen Property und Methoden Klasse beschrieben.
    Ich würde das Ganze jetzt gerne zitieren, leider ist mein Datenvolumen aufgebraucht und kann daher heute nicht mehr auf das Video zugreifen.

    Also ich rede hier von OOProgrammierung.

    Ein konkretes Beispiel kann ich nicht wirklich nennen, da mir selber nur eine Theorie dargelegt wurde, daher auch das Thema im Forum um es für mich irgendwie konkret erklären zu lassen.

    Ich als Neuling hätte eigentlich ein Anwendungsbereich im Kopf. Wobei ich nicht weiss ob das Problem durch eine Architektur auf höherer Ebene schon behoben werden könnte.

    Zum Beispiel habe ich in meinem 2D Game Project eine Spieler-Klasse.
    Dort habe ich etliche Properties aber auch ne Menge an Methoden.

    Vielleicht könnte ich die Properties in eine Klasse namens "SpielerEigenschaften" und die Methoden "SpielerMethoden".
    Leider wird mir beim Schreiben auch wieder eine gewisse Redundanz klar. Eigentlich ziemlich überflüssig. Oder?

    Wie gesagt ich habe halt kaum Plan von Architektur Paradigmen und somit versuche ich halt das Unverständliche zu verstehen :3



  • Ich wette Geld dass du das bloss falsch verstanden hast.



  • Okay Chef, das kann natürlich sein 😉

    Ich werde in den nächsten Tagen den Videoabschnitt mal verlinken. Vielleicht könnt ihr mich dann mal einnorden 🙂



  • Falke88 schrieb:

    Ich werde in den nächsten Tagen den Videoabschnitt mal verlinken.

    Ja, bitte tu das! 🙂



  • http://www.microsoftvirtualacademy.com/training-courses/moderne-softwareentwicklung

    Hier der Link.

    Es geht hierbei um Video/Modul -5- bzw. Erweiterbare Architektur. Die genaue Minute wann der werte Herr das Thema anspricht ist bei ca. 06:10min.

    Es geht um das Thema Entkopplung. Er spricht dort über den Unterbereich Trennung(Daten, Orchestierung, Logik). Er deutet sehr konkret darauf hin das er (und seine Firma) Klassen benutzen die entweder Properties haben oder Methoden.

    Zitat: "...Wir verwenden nur Klassen, die entweder nur Properties haben oder Methoden...Vorteile Entkopplung und Testbarkeit".

    Was sind nun eure Gedanken?



  • Reine Property-Klassen kenne ich eigentlich nur als sogenannte Datentransferobjekte. Reine Methodenklassen mögen manchmal vorkommen (gerade wenn die Sprache nur Methoden und keine Funktionen zulässt). Was durchaus vorkommen kann ist aber das eine Klasse ein Datentransferobjekt intern zur Datenhaltung verwendet.

    Aber das man inhaltlich zusammengehörige Daten und Methoden absichtlich trennt kenne ich nicht, und hat auch nicht viel mit Entkopplung und Testbarkeit zu tun. Bei der Entkopplung für die Testbarkeit werden eigentlich nur die Zugriffe auf andere Elemente über Schnittstellen (die man z.B. mittels IOC austauschen kann) entkoppelt (z.B. Datenbankzugriffe).



  • Hallo zusammen,

    ich habe mir gerade das Video angeschaut.
    Ich denke, die Aussage bezieht sich auf den Part "Komponentenorientierte Architektur" (ab 8:22min), d.h. auf die Benutzung von DataContracts (reine Property-Klassen) und OperationContracts (Schnittstelle mit Methoden) - ab 9:30min sieht man ein Beispiel dazu.



  • Ok das sind einzige Begrifflichkeiten die ich demnach erstmal kennen und verstehen sollte, bevor ich das Thread Thema nachvollziehen kann.

    Kann mir jemand Video/Lese-Quellen offenbaren damit ich mich mit "DataContracts", "OperationContracts" auseinander setzen kann? Also gute Empfehlungen, ansonsten such ich nach dem ersten besten hit bei Google 😉



  • Falke88 schrieb:

    Kann mir jemand Video/Lese-Quellen offenbaren damit ich mich mit "DataContracts", "OperationContracts" auseinander setzen kann? Also gute Empfehlungen, ansonsten such ich nach dem ersten besten hit bei Google 😉

    Kurz gesagt kommen DataContracts und OperationContracts in SOA und Webschnittstellen zum Einsatz. Da hast du tatsächlen den Fall das es Datentransferobjekte gibt, die nur aus Properties bestehen, da diese z.B. als JSON, XML... übergeben werden, und die andere Seite nicht zwangsweise .Net ist. Die OperationContracts entsprechen wiederum der Serviceschnittstelle (z.B. abgebildet auf einen Link in der Form

    http://.../artikel/4711
    

    für die Abfrage eines Artikels mit der Id 4711).



  • @Falke88
    Ein etwas allgemeinerer Begriff zu dem Thema wäre "anemic domain model". Das beschreibt mehr oder weniger genau das was man bei Webservices macht - allerdings ohne die Einschränlung auf eine spezielle Technologie.

    http://en.wikipedia.org/wiki/Anemic_domain_model

    Dabei hat man auch reine Datenklassen ("nur Properties" -- wobei es auch genau so gut nur "public fields" sein könnten), und dann "Arbeiterklassen" (Serviceklassen) mit Methoden die irgendwas mit den in den Datenklassen enthaltenen Daten machen.

    Das hat bestimmte Vorteile aber eben auch Nachteile - im Wikipediaartikel steht dazu auch ein bisschen was.



  • Alles klar, danke euch für den Deutschuss!



  • @Falke88: Meintest du jetzt wirklich Deutschuss? 😕



  • Th69 schrieb:

    @Falke88: Meintest du jetzt wirklich Deutschuss? 😕

    Ha...ja.

    Bin zZt. Fallschirmjäger und somit ist der Deutschuss im übertragenen Sinn zu verstehen wie "Aufklärung" 😛

    Wohin der Schütze seinen Deutschuss hinzaubert, dort sitzt auch meist der Feind - somit habt ihr mir 'nen Deutschuss zum Verständnis gegeben 😉


Anmelden zum Antworten