Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!
Werbeanzeige
Zitat
Oder wie wenn ich von einer Zahl z.B. den Cosinus berechnen lassen will.
Zitat
transponierte Matrix eine Eigenschaft einer Matrix ist.
Zitat
Also in C# gibt's auch "Templates" aber da heißen sie "Generics"
Zitat
Würdet ihr die Matrix-Klasse im Namensbereich Math, Math.Matrix oder Math.Matrices definieren?
Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »Spiele Programmierer« (03.08.2013, 00:37)
Das sehe ich nicht so, im Gegenteil. Aber da scheiden sich eh die Geister. Ich bin nur der Meinung ein Auto kann blinken, ich kann ein Auto aber nicht Blinken sondern nur blinken lassen … bzw. Fahren. Der Sinus einer Zahl ist eine Zahl und keine Eigenschaft einer Zahl. Der Sinus selbst ist aber eine Bedeutung und als Bedeutung somit eigenständig. Aber ich bitte zu entschuldigen wenn meine Beispiele nicht sonderlich toll sind, mir ist zum Denken zu warmAus rein objektorientierter Sicht, müsste der Kosinus eine Memberfunktion sein und keine statische Funktion irgendwo Anders.
Quellcode |
|
1 |
Typ::Matrix |
Quellcode |
|
1 |
Math::Matrix::Transpose |
C-/C++-Quelltext |
|
1 2 |
template<unsigned m, unsigned n> auto Transpose( const Type::Matrix<m, n>& matrix) -> Type::Matrix<n, m> |
C#-Quelltext |
|
1 2 3 4 5 |
... Int32 var1 = 11; var var2 = var1.Cos(); // Kosinus ist eine Memberfunktion des int Datentyps ... |
Zitat
Ich finde aber nicht (Achtung! Nur meine Meinung ), dass der Kosinus direkt eine Eigenschaft einer Zahl ist...
Gleich vor weg, dies soll keine Belehrung sein. Jeder soll so Programmieren wie er es mochte oder wie seine Vorgaben sind. Ich spreche hier nur für mich.EDIT:
@h5::
Aber wieso man da nicht einfach einen Memberfunktion machen kann, verstehe ich nicht.
Das ist eigentlich von der Bedeutung für den Maschinencode exakt das Selbe, aber doch eigentlich schöner verpackt.
(Schon für kontextbezogene Syntaxvervollständigung)
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
namespace Type { class Matrix; class Quaternion; class TypeXYZ; } namespace Math { namespace Matrix { template<unsigned m, unsigned n> auto Transpose( const Type::Matrix<m, n>& matrix) -> Type::Matrix<n, m>; // Funktionen } namespace Quaternion { // Funktionen } ... } |
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »H5::« (03.08.2013, 03:38)
Zitat
und diesen im Bezug darauf, dass es bei Objekten (hier der Zahl) nicht mehr Funktion sondern ausdrücklich Methode genannt wird. Auch das ein Operator ein Operator ist und keine Methode (Auch wenn Technisch wenig Unterschied besteht) sollte man nicht ignorieren.
Zitat
Also du wärst dafür, dass int-Variablen eine Memberfunktion besitzen sollten, die den Kosinus zurück liefert?
Zitat
Aber in der Mathematik ist es ja auch nicht so, das der Kosinus quasi ein Operator für eine Zahl ist.
Zitat
Eine Matrix ist imo kein einfacher Werttyp mehr (so wie er in C# definiert ist (jede struct-Definition erbt implizit von der System.ValueType-Klasse)), sondern ein Komplexer Datentyp, der mehrere Wertetypen, auf "besondere" Art und Weise kapselt
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Spiele Programmierer« (03.08.2013, 13:32)
Einen Unterschied macht die Semantik. Man kann sich an diese halten, muss es aber nicht. Sie ist quasi das impliziete "bitte nicht betreten Schild" an einer Blumenwiese. Wohingegen die technischen Möglichkeiten eher eine Mauer darstellen... aber dafür gibts ja am Ende auch noch Panzer.Ich verstehe nicht, wieso man da einen Unterschied machen sollte. Wie du schon sagtest, sollte man Paradigmen möglichst treu bleiben. Also auch dem objektorientierten Paradigma. Nach dem Gesetzt der Einfachheit sollten jegliche Art der Funktionen/Methoden oder wie auch immer du es nennen magst, gleich behandelt werden. Die Unterscheidung zwischen diesen, ist im Prinzip nur syntactic sugar.
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 |
/// <summary>++ Generiert einen neuen bloeden Kommentar</summary> Integer& Integer::operator++() { std::cout << "Haha Ueberraschung :P" << std::endl; return *this; }; |
Werbeanzeige