liebe wissende,
gibt es konventionen, wann man statische methoden und wann man objektmethoden verwendet?
ich habe eine kleine klasse für matrizen (mathematische) und ihre grundrechenarten geschrieben. dabei habe ich für die matrizenmultiplikation eine static-methode geschrieben, die als rückgabewert eine neue matrix hat. dann dachte ich mir, ich schreibe auch noch eine methode für die multiplikation einer matrix mit einem skalar.
sollte ich jetz hier eine statische methode (Matrix.product(Matrix a, Double b)) oder eine objektmethode (public Matrix multiply(int b)) schreiben?
falls die zweite variante gewählt werden soll, soll man dann die werte der Matrix a (bei a.multiply(b)) verändern, oder eine NEUE matrix erzeugen, die das produkt von a und b darstellt?
gibt es da konventionen /regeln wann man welche variante wählen sollte?
lg
niemand
Moin moin,
liebe wissende,
gibt es konventionen, wann man statische methoden und wann man
objektmethoden verwendet?
Da es hier um die Klasse Math geht, kannst du dir es ja auch gleich durchlesen .
http://dev.usw.at/manual/java/javainsel/javainsel_06…
hi
nein, es geht nicht um die klasse „math“. es ist eine eigene von grund auf neue klasse. („class Matrix {…“)
bei deinem link habe ich aber keinen hinweise auf irgend eine regel oder konvention gefunden, die sagt, wann man statische methoden, und wann man objektmethoden verwenden soll.
könntest du mir den abschnitt nennen?
lg niemand
Moin moin,
nein, es geht nicht um die klasse „math“. es ist eine eigene
von grund auf neue klasse. („class Matrix {…“)
schon mal was von transfer denken gehöhrt.
du willst das gleiche machen , hat nur ein anderen namen.
bei deinem link habe ich aber keinen hinweise auf irgend eine
regel oder konvention gefunden, die sagt, wann man statische
methoden, und wann man objektmethoden verwenden soll.
Dann hast du einfach nicht begriffen was du da liest.
könntest du mir den abschnitt nennen?
lg niemand
z.b.
6.4.1 Warum statische Eigenschaften sinnvoll sind
6.4.2 Statische Eigenschaften mit static
6.4.3 Statische Eigenschaften als Objekteigenschaften nutzen
mit Beispiel :
DiskoMitStatics d = new DiskoUtensilien();
System.out.println( d.PLATZ\_PRO\_PERSON ); // keine gute Idee
System.out.println( DiskoUtensilien.PLATZ\_PRO\_PERSON ); // das ist gut so
Und dann gibts da noch das Thema der vererbung , da muss man dann auch nochmal klarstellen was man an methoden überschreiben will und wie der zugriff geregelt wird.
Das eine ist halt statisch immer gleich , das andere individuell für das objekt.
Beides ist Möglich in verschiedenen Fällen . Und beides hat seinen Sinn.
Sorry aber Programmieren ist nicht Physik . Jeder kann sich seinen eigenen weg zur lösung basteln. Wenn es dann später hinderlich ist die eine variante genommen zu haben wird man das schon festellen.
hi
Dann hast du einfach nicht begriffen was du da liest.
doch habe ich:
z.b.
6.4.1 Warum statische Eigenschaften sinnvoll sind
6.4.2 Statische Eigenschaften mit static
6.4.3 Statische Eigenschaften als Objekteigenschaften nutzen
mit Beispiel :DiskoMitStatics d = new DiskoUtensilien();
System.out.println( d.PLATZ_PRO_PERSON ); //
keine gute Idee
System.out.println( DiskoUtensilien.PLATZ_PRO_PERSON ); // das
ist gut so
ich fragte nicht nach den grundlegenden ideen der statischen eigenschaften, sondern nach den konventinen statischer methoden/objektmethoden. bei deinem link wird darüber nichts ausgesagt.
Und dann gibts da noch das Thema der vererbung , da muss man
dann auch nochmal klarstellen was man an methoden
überschreiben will und wie der zugriff geregelt wird.
ich will eine von grund auf neue klasse schreiben, ohne etwas zu erben. da die matrizenmultiplikation sowie auch die bildung des produktes aus skalar und matrix eine mathematische operation ist, für die es keine standartmässigen operatoren in java gibt, will ich jeweils eine methode dafür schreiben. dabei bin ich mir nicht sicher ob ich dafür nun eine objektmethode oder eine statische methode wählen soll. beides sind mathematische operationen mit „gleichwertigen“ operanden.
ich bitte dich - falls du mir weiterhelfen kannst - diese fragestellung zu beantworten, und nicht das was du dir vorstellst was ich eigentlich tun möchte und mir sagst was ich deiner meinung an dieser stelle tun sollte.
gruss niemand
Hallo niemand,
soll man dann die werte der Matrix a (bei a.multiply(b)) verändern, oder eine NEUE matrix erzeugen, die das produkt von a und b darstellt?
Im prinzip beantwortest du damit deine Frage: Objektmethoden macht man dann, wenn auf einem Objekt gearbeitet werden soll. Bei der Objektmethode multiply(double) würde ich zum Beispiel erwarten, dass das Objekt manipuliert wird. Eine Rückgabe würde ich in diesem fall eigentlich gar nicht erwarten.
Wenn du aus einer Matrix durch die multiplikation eine weitere Matrix erzeugen willst, würde ich die statische Methode bevorzugen, welche dann Matrix und Faktor übergeben bekommt, und das Ergebnis zurückliefert.
LG Stefan
hi
vielen dank für deine antwort, genau nach diesen infos habe ich gesucht! (und sie erscheinen mir eignetlich ziemlich logisch, wenn es einfach so lese:smile:
lg niemand