Wenn ich ganz ehrlich bin, verstehe ich es auch jetzt noch nicht. es gibt sicher schlecht designte Klassen, daran ist aber nicht das OOP Konzept schuld. Es ist richtig, dass Programme, die Vererbung intensiv nutzen, unter Umständen dann schwerer lesbar sind. Aber deshalb Unmengen ähnlichen Code immer wieder neu zu scheiben, scheint mir dann doch nicht die optimale Lösung für das Problem zu sein.
Von neu schreiben hat ja keiner was gesagt... In Rust, wird es so gelöst, laut Wikipedia:
Zitat von Wikipedia:
https://de.wikipedia.org/wiki/Rust_(Pro ... #Typsystem
Die sonst für objektorientierte Programmierung übliche Vererbung gibt es in Rust allerdings nicht, Polymorphie wird stattdessen durch Traits und generische Programmierung ermöglicht
Es wird halt in der EDV-Welt wie in vielen anderen Bereichen auch alle paar Monate eine neue Sau durchs Dorf getrieben.
Dies ist jetzt aber keine neue Erkenntnis... Rust z.b. wird z.b. seit 2010 entwickelt, ob die Sache mit der Vererbung dort schon von Anfang an anders gelöst wurde, weiß ich nicht...
Verstehe ich nicht. Wenn ich in meinem Programm Edit-Felder haben will , die sich auf eine bestimmte Art verhalten, was das Standard edit nicht kann, dann schreibe ich eine Komponente mit der Eigenschaft.
Das ist wäre dann eine Art Container... wenn ich diesen "Container" mehrfach verwenden möchte oder es plane...
arum soll ich mich bei jedem neuen Edit-Feld, das ich ins Formular einfüge, darum kümmern müssen, dass es das macht, was ich haben will?
Auch hierfür gibt es allgemeine Lösungen.... Angenommen, du möchtest, alle Felder prüfen, ob die Eingaben den regeln entsprechen....
Dann brauchst du bloß eine Funktion schreiben, die alle Felder durchgeht(allgemein, auch für andere Projekte) und in dieser Funktion prüfen, ob die Felder den Regeln entsprechend gefüllt worden sind oder nicht.... dafür jetzt eine extra Komponente zu schreiben, ist doch etwas übertrieben oder?
Wenn es dir jetzt darum gehen würde....
Und die Parameter kann ich dann über den OI setzen, statt das "von Hand" zu programmieren. Natürlich kann man alles immer wieder neu machen, man kann aber auch in Assembler programmieren.
Das immer gleich alles Drastisch Falsch verstanden wird und sich alle Persönlich angegriffen fühlen....verstehe ich nicht...
Es gibt mehr zwischen "Vererbung" und ASM, ob du es glaubst oder nicht....
Der Punkt ist: Es ist doch nicht mehr Aufwand, die gewünschten Features in eine abgeleitete Komponente zu packen, als andersrum.
Es geht immer darum wie man es schreiben... Es gibt bestimmt ZIG Möglichkeiten, ein Problem zu lösen ohne gleich auf die Vererbung nutzen zu müssen....
Mit Lösungen meine ich jetzt, die, die sich wiederverwenden lassen....
Irgendwie machst du es ja genauso so, wenn du die Komponente ableitest. Nur eben in einer Methode der Komponente (wo es ja hingehört), statt in eine frei "schwebende" Prozedur des Programms. Und vor allem: wenn du das an mehreren Stellen brauchst, dann nimmst du einfach überall deine abgeleitete Komponente und brauchst dich um nichts weiter kümmern.
Oder du schreibst dir eine allgemeine Funktion, der du ein TLabel übergeben kannst, wo ist das Problem?
Ich selbst habe Programmieren NIE von A bis Z gehabt. Ich habe es NIE in der Schule gehabt.... daher kenne ich viele Details nicht bzw. noch nicht...
Es gibt immer mehr als EINE Lösung, für ein Problem, eine Lösung, die vielleicht sogar noch besser ist...
Bleiben wir bei den Blink Beispiel, dass ist eine gute Idee...
1. Einfach per "Timer" lösen, für eine Label Komponente.
2. per Timer Lösen für Mehrer Komponenten. Z.B. mit der Tag Eigenschaft(ist zwar unschön, geht aber).
3. Eine eigene Methode/procedure schreiben, die mit einem TLabel aufgerufen wird...
4. Es kann ausgelagert werden in eine eigene Unit.
Es gibt bestimmt noch viel mehr Möglichkeiten....
..... Als gleich eine neue Klasse ableiten und es dort einbauen. Aber es kommt immer darauf an, was ihr wollt und wie ihr es umsetzten wollt....
Wenn ihr unbedingt per Vererbung machen, wollt bitte... kann aber den allgemeinen Regeln der Vererbung widersprechen, auch wenn es Funktionieren wird.