Aber bitte, schau dir doch bitte einfach noch mal dein Tischbeispiel an: Lustigerweise steht hier direkt neben mir ein Tisch mit einem Bein, das in drei Füßen endet. Würdest du jetzt abstreiten, dass es ein Tisch ist, weil ein Tisch deiner Definition nach vier Beine hat? Kannst du natürlich machen, aber dann ist deine Definition leider nicht alltagstauglich.
Nochmal:
Vielleicht ist die Definition nicht alltagstauglich. Diese Kritik würde ich beim Tisch-Beispiel sogar akzeptieren und mir eine alltagstauglichere Definition überlegen.
Aber es ging hier nicht um Alltagstauglichkeit von Definitionen. Es ging um die Frage, ob es ein Zirkelschluss ist, wenn man Eigenschaften der Definition verwendet. Und dafür ist es vollkommen irrelevant, ob die Definition nun alltagstauglich ist oder nicht.
Aber bitteschön. Nehmen wir eine alltagstauglichere Definition von Tisch: "Ein Tisch ist eine erhöhte ebene Fläche, die den Zweck hat, dass Sachen auf ihr abgestellt werden."
Und aus dieser Definition kann man folgern: Weil die Fläche eben ist, eignen sich Tische besonders gut dazu, Sachen auf ihnen abzustellen.
Das ist
kein Zirkelschluss.
Und ebenso ist es kein Zirkelschluss, wenn man Klassen als einschränkend definiert und anschließend damit argumentiert, dass sie einschränkend sind.
bzgl. gleicher Funktion von Klassen und TemplatesVon mir aus: Ja, Templates und Klassen haben die gleiche Funktion. Sie erfüllen beide den gleichen Zweck.
Das heißt aber nicht, dass ihre Mittel gleich sind.
Ein Zug und ein Flugzeug erfüllen auch beide die gleiche Funktion: Sie bringen dich von A nach B. Trotzdem sind es zwei verschiedene Verkehrsmittel.
Und ebenso ist es mit Templates und Klassen: Sie erfüllen die gleiche Funktion. Die Art und Weise, wie sie das tun, ist aber unterschiedlich. Und daraus resultieren unterschiedliche Eigenschaften.
bzgl. Klare DefinitionenOhne klare Definitionen kann man nicht klar diskutieren und redet aneinander vorbei.
Klare Definitionen helfen dem vorzubeugen. Und wie du meinem Post vielleicht entnommen hast, halte ich meine eigene Definition nicht zwangsläufig für die einzig Wahre. Im Gegenteil, ich habe sogar explizit nach deiner Definition von Klasse gefragt.
Wieso ich es allerdings nicht als funktional ansehe, Templates als Klasse anzusehen:
Templates kann man in jedem System erstellen. (Ausgenommen vielleicht absolutes Freeforming.) Das würde bedeuten, dass jedes System ein Klassensystem wäre. Damit bringt es aber relativ wenig, über Unterschiede zwischen Klassensystemen und klassenlosen Systemen zu reden.