BlackBoard » Design, Programmierung & Entwicklung » Programmieren » Java Operatoren überladen » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen Operatoren überladen
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
Compuholic Compuholic ist männlich
knows where he wants to go tomorrow


images/avatars/avatar-552.jpg

Dabei seit: 19.10.2002
Beiträge: 819
Herkunft: München

Operatoren überladen       Zum Anfang der Seite springen

Hallo,

ich schreibe gerade an einer Java-Klasse die Matrizenoperationen durchführen kann. Daher wäre es sehr bequem, wenn ich z.B. den Multiplikationsoperator überladen könnte. Leider habe ich noch nie gesehen, wie das in Java funktioniert und habe auch nichts entsprechendes gefunden.

Vielleicht kann mir jemand von euch helfen.

Danke
06.03.2006 15:50 Compuholic ist offline E-Mail an Compuholic senden Homepage von Compuholic Beiträge von Compuholic suchen
Champus Champus ist männlich
BlackBoarder


images/avatars/avatar-2272.png

Dabei seit: 24.03.2002
Beiträge: 1.649
Herkunft: Karlsruhe

RE: Operatoren überladen       Zum Anfang der Seite springen

Zitat:
Original von Google
"In Java ist daher das Überladen der Operatoren bisher nicht möglich."
"Im Gegensatz zu C++ können in Java keine Operatoren überladen werden."
"kurz und knapp Nein, in Java kann man nur Methoden überladen."


__________________
CorvusCorone -> Champus
06.03.2006 16:33 Champus ist offline Homepage von Champus Beiträge von Champus suchen
Misel Misel ist männlich
Hüter des Kitkat


images/avatars/avatar-2084.png

Dabei seit: 02.11.2002
Beiträge: 1.203
Herkunft: live://home.berlin.d e

erstaunt       Zum Anfang der Seite springen

Hab eben auch mal nen Kommilitonen gefragt, der kann sich auch nicht erinnern, das jemals gehabt zu haben. :o

__________________
LAUFT! Ich spiele KILLERSPIELE!
06.03.2006 17:21 Misel ist offline E-Mail an Misel senden Homepage von Misel Beiträge von Misel suchen
Compuholic Compuholic ist männlich
knows where he wants to go tomorrow


images/avatars/avatar-552.jpg

Dabei seit: 19.10.2002
Beiträge: 819
Herkunft: München

Themenstarter Thema begonnen von Compuholic
      Zum Anfang der Seite springen

@Corvus

Das wichtige Wort hier lautet: "bisher". Da Wikipedia nicht immer auf dem laufenden ist und wir auch schon lange über Java 1.3 hinaus sind, hätte sich da mitlerweile einiges tun können.
06.03.2006 17:46 Compuholic ist offline E-Mail an Compuholic senden Homepage von Compuholic Beiträge von Compuholic suchen
Champus Champus ist männlich
BlackBoarder


images/avatars/avatar-2272.png

Dabei seit: 24.03.2002
Beiträge: 1.649
Herkunft: Karlsruhe

      Zum Anfang der Seite springen

Es sind aber recht aktuelle Zitate die ich oben zusammen gefasst habe, das von dir zitierte ist auch nicht aus der Wikipedia sondern aus einem E-Book was auch recht aktuell ist.

__________________
CorvusCorone -> Champus
06.03.2006 17:51 Champus ist offline Homepage von Champus Beiträge von Champus suchen
phlox81 phlox81 ist männlich
Bote des Lichts und Moderator


images/avatars/avatar-2264.jpg

Dabei seit: 19.10.2002
Beiträge: 3.028
Herkunft: Irgendwo im Nirgendwo

      Zum Anfang der Seite springen

Das wird sich so schnell nicht ändern,
da man im Javaumfeld sowas lieber mit Methoden macht.
Eines der Argumente die gegen das Überladen spricht
aus sicht der Javaianer ist, das man dadurch eine Mehrdeutigkeit
erzeugt. Man kann z.b. den +operator als -operator implementieren
etc. Das man das mit Methoden auch kann, ist ein anderes Thema *g*

phlox

__________________
Intelligenz ist eine Illusion des Menschen

phlox81.de | codenode.de
06.03.2006 17:53 phlox81 ist offline E-Mail an phlox81 senden Homepage von phlox81 Beiträge von phlox81 suchen
Compuholic Compuholic ist männlich
knows where he wants to go tomorrow


images/avatars/avatar-552.jpg

Dabei seit: 19.10.2002
Beiträge: 819
Herkunft: München

Themenstarter Thema begonnen von Compuholic
      Zum Anfang der Seite springen

Passt zwar nicht so wirklich in diesen Thread:

Ich habe da ein seltsames Problem mit dem Überladen von Konstruktoren. Beim Kompilieren bekomme ich den folgenden Fehler:
Zitat:
dMatrix.java:132: cannot find symbol
symbol : constructor dMatrix(int,int)
location: class dMatrix
result = new dMatrix(getDimension('M'), B.getDimension('
N'));
^
1 error


So wie ich diese Meldung verstehe, findet er keinen Konstruktor mit den Parametern (int, int). Den habe ich aber wie folgt definiert:

code:
1:
2:
3:
4:
5:
6:
	public void dMatrix(int N, int M)
	{
		//If Dimension of the Array is given, create a correspondig Null-Matrix
		m = new double[N][M];
		DimensionN = N;
		DimensionM = M;


Ich habe schon die Klammerung gecheckt. Die sollte stimmen. Der Compiler zeigt mir auch sonst keinen Fehler an. Ich habe keine Ahnung woran das liegen könnte. Jemand eine Idee?
07.03.2006 12:09 Compuholic ist offline E-Mail an Compuholic senden Homepage von Compuholic Beiträge von Compuholic suchen
Romanticus Romanticus ist männlich
Member


images/avatars/avatar-1944.jpg

Dabei seit: 08.03.2003
Beiträge: 280
Herkunft: ein Land, das in Deutschland nur wenige kennen

      Zum Anfang der Seite springen

Worauf wendest du denn die erste getDimension() an? Ist B ein Object der Klasse dMatrix? es ist ein bißchen zu wenig Code vorhanden, um dir sagen zu können woran das liegt. Un eins kann ich mit sicherheit sagen - es liegt nicht am construktor, sondern an den Parametern, die du übergibst. Überprüfe mal, was die Methoden returnen.

mfg
Romanticus

P.S. hab gerade die Prüfung in Info3 geschrieben - alles nur Java smile

__________________
Heute sterben die meisten Leute an einer Art schleichenden Menschenverstandes und entdecken zu spät, dass das Einzige, was wir nie bereuen, unsere Fehler sind. Oscar Wilde

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Romanticus: 07.03.2006 14:02.

07.03.2006 14:01 Romanticus ist offline E-Mail an Romanticus senden Homepage von Romanticus Beiträge von Romanticus suchen
phlox81 phlox81 ist männlich
Bote des Lichts und Moderator


images/avatars/avatar-2264.jpg

Dabei seit: 19.10.2002
Beiträge: 3.028
Herkunft: Irgendwo im Nirgendwo

      Zum Anfang der Seite springen

Er findet den Konstruktor nicht.
Was du da hast ist ne Methode, Konstruktoren haben
keinen Rückgabetypen.
Korrekt wäre also:
code:
1:
public dMatrix(int N, int M){....


phlox

__________________
Intelligenz ist eine Illusion des Menschen

phlox81.de | codenode.de
07.03.2006 14:50 phlox81 ist offline E-Mail an phlox81 senden Homepage von phlox81 Beiträge von phlox81 suchen
Romanticus Romanticus ist männlich
Member


images/avatars/avatar-1944.jpg

Dabei seit: 08.03.2003
Beiträge: 280
Herkunft: ein Land, das in Deutschland nur wenige kennen

      Zum Anfang der Seite springen

fuck smile wieso ist mir das nicht aufgefallen? smile )

__________________
Heute sterben die meisten Leute an einer Art schleichenden Menschenverstandes und entdecken zu spät, dass das Einzige, was wir nie bereuen, unsere Fehler sind. Oscar Wilde
07.03.2006 14:57 Romanticus ist offline E-Mail an Romanticus senden Homepage von Romanticus Beiträge von Romanticus suchen
Compuholic Compuholic ist männlich
knows where he wants to go tomorrow


images/avatars/avatar-552.jpg

Dabei seit: 19.10.2002
Beiträge: 819
Herkunft: München

Themenstarter Thema begonnen von Compuholic
      Zum Anfang der Seite springen

@phlox81: Ich bin mir nicht ganz sicher, was Du meinst. Ich habe doch geschrieben "public void dMatrix" void ist ja kein Rückgabewert. Es funktioniert ja auch bei allen anderen Konstrukturen. Ich habe es auch mal ausprobiert und es weggelassen. Das ändert nichts am Fehler.

@Romanticus: das erste getDimension bezieht sich auf die aktuelle Instanz. Korrekt wäre also this.getDimension. Aber da man das nicht hinschreiben muß, habe ich das mal getrost weggelassen. Und B ist natürlich auch vom Typ dMatrix.

Ich habe mal den Code der Klasse angehängt:

Dateianhang:
txt dMatrix.txt (3 KB, 3 mal heruntergeladen)
07.03.2006 19:50 Compuholic ist offline E-Mail an Compuholic senden Homepage von Compuholic Beiträge von Compuholic suchen
Black Star Black Star ist männlich
Der Pate [Admin]


images/avatars/avatar-2158.jpg

Dabei seit: 11.12.2001
Beiträge: 2.282
Herkunft: /dev/stderr

      Zum Anfang der Seite springen

Die voids muessen bei allen Konstruktoren weg.
Und die Methode isWithinBounds muss ein return-Statement ausserhalb des if-else haben.
Danach kompiliert er bei mir fehlerfrei.

__________________
vescere bracis meis

07.03.2006 20:33 Black Star ist offline E-Mail an Black Star senden Homepage von Black Star Beiträge von Black Star suchen
Compuholic Compuholic ist männlich
knows where he wants to go tomorrow


images/avatars/avatar-552.jpg

Dabei seit: 19.10.2002
Beiträge: 819
Herkunft: München

Themenstarter Thema begonnen von Compuholic
      Zum Anfang der Seite springen

Danke an alle.

War mir vollkommen neu, daß es einen Unterschied macht, ob man void schreibt oder einfach keinen Rückgabetyp angibt. Bisher hat es immer funktioniert.
07.03.2006 20:44 Compuholic ist offline E-Mail an Compuholic senden Homepage von Compuholic Beiträge von Compuholic suchen
Misel Misel ist männlich
Hüter des Kitkat


images/avatars/avatar-2084.png

Dabei seit: 02.11.2002
Beiträge: 1.203
Herkunft: live://home.berlin.d e

      Zum Anfang der Seite springen

Zitat:
Original von Compuholic
Danke an alle.

War mir vollkommen neu, daß es einen Unterschied macht, ob man void schreibt oder einfach keinen Rückgabetyp angibt. Bisher hat es immer funktioniert.


naja, void ist Rückgabetyp vom Typ "nichts". Während gar nix eben überhaupt kein Rückgabetyp ist. großes Grinsen

__________________
LAUFT! Ich spiele KILLERSPIELE!
07.03.2006 21:47 Misel ist offline E-Mail an Misel senden Homepage von Misel Beiträge von Misel suchen
Romanticus Romanticus ist männlich
Member


images/avatars/avatar-1944.jpg

Dabei seit: 08.03.2003
Beiträge: 280
Herkunft: ein Land, das in Deutschland nur wenige kennen

      Zum Anfang der Seite springen

Zitat:
Original von Misel
Zitat:
Original von Compuholic
Danke an alle.

War mir vollkommen neu, daß es einen Unterschied macht, ob man void schreibt oder einfach keinen Rückgabetyp angibt. Bisher hat es immer funktioniert.


naja, void ist Rückgabetyp vom Typ "nichts". Während gar nix eben überhaupt kein Rückgabetyp ist. großes Grinsen


Void ist gar kein Rückgabetyp, deswegen muss man bei methoden mit void eben kein return benutzen. Es liegt viel mehr an der Syntax, Konstruktoren-definitionen dürfen eben keine Angabe über den Rückgabetyp haben, weil sie nie eine Rückgabe haben.

mfg
ich

__________________
Heute sterben die meisten Leute an einer Art schleichenden Menschenverstandes und entdecken zu spät, dass das Einzige, was wir nie bereuen, unsere Fehler sind. Oscar Wilde
09.03.2006 10:03 Romanticus ist offline E-Mail an Romanticus senden Homepage von Romanticus Beiträge von Romanticus suchen
Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
BlackBoard » Design, Programmierung & Entwicklung » Programmieren » Java Operatoren überladen

Forensoftware: Burning Board 2.3.6, entwickelt von WoltLab GmbH