Ein anderes Beispiel:
(Graphics)g.draw(new Rectangle(...))
Das Rectangle selbst beinhaltet keine Zeichenlogik und das ist auch gut so.
Es erfüllt aber einen Interface-Standard (Shape), der von g gezeichnet werden kann.
Das amüsante daran, dass du
@mihe7 zustimmst, dann aber genau das Gegenteil ergänzt und ihr auch noch quasi das gleiche Beispiel für gegenteilige Argumente bringt, seh grad wohl nur ich?
Ich würde bei allen drei Punkten nur bedingt zustimmen, dass da die zu dem Objekt gehörende Login von den Daten getrennt wird.
Die ersten zwei Punkte sind je nach Sichtweise Trennung UI - Model.
Beim zweiten Punkt ist es außerdem einfach sinnvolles Refactoring. Es gibt im Zeichnen keine Unterscheid zwischen allen "normalen" Objekten, von daher ist das völlig logisch, das auszulagern.
Zinsen berechnen ist für mich auch nur in Teilen Aufgabe eines Kontos, und da es vermutlich nicht "die eine" Zinsberechnung geben wird, würde man das auch auslagern und einfach das Strategypattern nutzen.
Das "sich selber zeichnen" habe ich jahrelang so praktiziert - bis das Ausgabeziel ein anderes wurde, dann ging der Schuss nach hinten los. Auch sollten die Elemente sich selbst anhand von Parametern verarbeiten, selbst dafür sorgen, dass die Zieldaten erzeugt wurden - das hat sich im Nachhinein ebenfalls als Fehler erwiesen.
Man verliert enorm viel Flexibilität, wenn komplexe Vorgänge innerhalb der Datenklassen passieren und das Ganze wird sehr schwer zu warten, die Schnittstellen werden zu unübersichtlich. Einfache Vorgänge, welche wirklich nur die Daten selbst betreffen, können natürlich rein. Aber die Verarbeitung der Daten - vor allem mit verschiedenen Zielen - sollte außerhalb passieren.
Das Thema passt besser hierzu:
OO ist gescheitert
Das was du beschreibst, hat nicht mehr viel mit OO zu tun - was nicht ohne Grund ziemlich verbreitet ist. Die Probleme die du beschreibst, klingen eher nach Architekturproblemen, die man mit besserem, und trotzdem Objekt-Orientiertem, Design besser hätte lösen können.