Objekte aus 2 Klassen mit compareTo() vergleichen

Amstaff51

Mitglied
Grüzi,

ich habe zur Zeit ein leichtes Problem die Methode compareTo richtig anzuwenden. Es geht um folgendes:
Ich habe 2 Klassen (Dreieck und Kreis) in denen ich jeweils eine Methode inhalt() eingebaut habe, die mir den Flächeninhalt eines Dreiecks und Kreises ausgibt. Das Dreieck wird mit 3 Punkten aus der Klasse Punkt gefiniert und der Kreis aus einem Punkt + Radius.
Jetzt möchte ich in der abstrakten Klasse Figur die beiden Flächeninhalte mit einander vergleichen.

So sieht die vorgegeben Klasse Figur aus:
Java:
abstract class Figur implements Comparable {
abstract double inhalt();
abstract double umfang();
public int compareTo(Object object) {
...
}
}

Wie kann ich die Klasse vervollständigen damit es den Inhalt von Dreieck und Kreis vergleicht?

Java:
public int compareTo(Object object) {
return eck.inhalt().compareto(kreis.inhalt());
klappt leider nicht :eek:
 
Zuletzt bearbeitet:

Timothy Truckle

Top Contributor
ich habe zur Zeit ein leichtes Problem die Methode compareTo richtig anzuwenden. Es geht um folgendes:
Ich habe 2 Klassen (Dreieck und Kreis) in denen ich jeweils eine Methode inhalt() eingebaut habe, die mir den Flächeninhalt eines Dreiecks und Kreises ausgibt. Das Dreieck wird mit 3 Punkten aus der Klasse Punkt gefiniert und der Kreis aus einem Punkt + Radius.
Jetzt möchte ich in der Klasse abstrakten Klasse Figur die beiden Flächeninhalte mit einander vergleichen.
Schon falsch.
[JAPI]Comparable[/JAPI] und damit
Code:
compareTo
sollen die natürliche Ordnung von Objekten widerspiegeln.
Äpfel und Birnen haben aber keine gemeinsame natürliche Ordnung, obwohl beides Obst ist.
Deshalb wir [JAPI]Comparable[/JAPI] nicht von abstracten Klassen, sondern nur von konkreten Klassen implementiert.

Um trotzdem Äpfel und Birnen zusammen mach Gewicht sortieren zu können benötigt man einen "exteren" Vergleich. So auch bei Dir.

Die Lösung heist also nicht [JAPI]Comparable[/JAPI], sondern [JAPI]Comparator[/JAPI].

bye
TT
 
S

SlaterB

Gast
Widerspruch gegen vielleicht allzu deutlich gelesenes Posting:
gegen Comparable spricht hier nicht mehr als allgemein auch,
wie man etwas sortieren will muss jeder selber wissen,

Natürlichkeit einer Ordnung ist auch nichts was man definieren/ festlegen kann,
es zeigt sich vor allem in seinen Eigenschaften, eben dass es direkt in der Klasse steht und nicht einem bestimmten Comparator X

es gibt auch Äpfel X und Y, die sich in Aussehen, Geschmack und sonstigen mehr unterscheiden können als bestimmte Apfel A und Birne B ;)

-----

zum Thema Bäume vor Wald:
> return eck.inhalt().compareto(kreis.inhalt());

double sind primitive Datentypen, da gibts normalerweise kein compareTo() (AutoBoxing aber zu bedenken),
da kann man z.B. mit Minus eine Differenz bilden
 
Zuletzt bearbeitet von einem Moderator:

tschero

Aktives Mitglied
Hi,

z.B.

Java:
@Override
    public int compareTo(Object o) {
//        throw new UnsupportedOperationException("Not supported yet.");
        if((int)FlaecheninhaltRechteck < (int)FlaecheninhaltDreieck)
        {
            return -1;
        
        }
        else if((int)FlaecheninhaltRechteck == (int)FlaecheninhaltDreieck)
        {
            return 0;
        }
        else if((int)FlaecheninhaltRechteck > (int)FlaecheninhaltDreieck)
        {
            return 1;
        }
        
    }

ungetestet :D

Gruß
tschero
 
S

SlaterB

Gast
was genau der Rückgabe der Differenz zwischen den beiden entspricht wenn man sich nicht genau auf -1, 1 festlegt,
wobei es auch noch signum() gibt
 
N

nillehammer

Gast
Grundsätzlich würde ich Comparable auch eher vermeiden und einen Comparator vorziehen. Aber man könnte die Klasse Figur Comparable<Figur> implementieren lassen. Dann bekommst Du in der compareTo-Methode eine Figur als Parameter und kannst dort die Ergebnisse von inhalt() Vergleichen. Das schöne ist, dass in Subklassen keiner dieses Verhalten überschreiben und verfuddeln kann. Kann aber auch ein Nachteil sein...

[EDIT]Raw Comparable mit Object... Leute, Comparable ist nicht umsonst generisch![/EDIT]
 
S

SlaterB

Gast
was genau der Rückgabe der Differenz zwischen den beiden entspricht wenn man sich nicht genau auf -1, 1 festlegt,
wobei es auch noch signum() gibt

ähh, jetzt mal genug der kleinen Hinweise, auch von mir,
also:
> eck.inhalt().compareto(kreis.inhalt());

an Eck und Kreis muss und kann man gar nicht denken,
es gibt nur das eigene Objekt und das andere (Parameter), egal von welcher konkreten Subklasse,
von den beiden den Inhalt bestimmen, double

auf int casten ist nicht so gut wenn vielleicht 1.2 und 1.3 zu 1 gleich gemacht werden,
auch die Differenz nicht auf int runden für Rückgabewert int, sonst wird 0.4 (größer) vielleicht zu 0 (gleich groß)

Math.signum() kann man aber zu einem int machen
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Encera Auf Objekte aus anderer Klassen zugreifen Java Basics - Anfänger-Themen 20
S Objekte von zwei klassen in zwei verschiedene Textdateien schreiben Java Basics - Anfänger-Themen 5
C Fernseher-Aufgabe (Methoden, Klassen und Objekte) Java Basics - Anfänger-Themen 63
Y Klassen Klassen und Objekte Java Basics - Anfänger-Themen 3
Y Klassen Klassen und Objekte mit set und get Java Basics - Anfänger-Themen 0
G Klassen und Objekte Java Basics - Anfänger-Themen 2
M Klassen und Objekte Java Basics - Anfänger-Themen 2
J Objekte und Abstrakte Klassen Java Basics - Anfänger-Themen 2
Orkanson Objekte und Klassen Java Basics - Anfänger-Themen 8
S Objekte mit gleichem Namen in unterschiedlichen Klassen Java Basics - Anfänger-Themen 3
Z OOP Objekte einer Klasse weiteren Klassen zur Verfügung stellen Java Basics - Anfänger-Themen 17
D Methoden Wie können Klassen auf Klassenfremde Objekte zugreifen? Java Basics - Anfänger-Themen 7
C Klassen/Objekte Verständnis Java Basics - Anfänger-Themen 8
Z Wie Objekte anderer Klassen ansprechen? Java Basics - Anfänger-Themen 2
K JUnit: Objekte von eigenen Klassen vergleichen...geht nicht Java Basics - Anfänger-Themen 5
T Klassen Referenzen auf Klassen / Objekte Java Basics - Anfänger-Themen 5
K Methoden Uhr als Übungsaufgabe Klassen/Objekte Java Basics - Anfänger-Themen 3
A OOP Klassen und Objekte - Diagramme Java Basics - Anfänger-Themen 2
K Best Practice In Klassen auf andere Objekte mit variablen Namen zugreifen Java Basics - Anfänger-Themen 6
V Objekte/Klassen erstellen - Erklärung anhand Beispiel Java Basics - Anfänger-Themen 4
D Klassen Klassen, Objekte, Konstruktor - einfach erklärt Java Basics - Anfänger-Themen 12
U Objekte in Array erstellen und Methode in verschiedenen klassen aufrufen Java Basics - Anfänger-Themen 5
S Vererbung Objekte in verwandten Klassen (Kovarianz, Polymorphie) Java Basics - Anfänger-Themen 4
B Objekte aus einer anderen Klasse(in der sich weitere Klassen befinden) erzeugen Java Basics - Anfänger-Themen 24
B Klassen und Objekte Java Basics - Anfänger-Themen 10
J Objekte und Klassen Java Basics - Anfänger-Themen 8
I Objekte an andere Klassen/Methoden übergeben? Java Basics - Anfänger-Themen 5
L Vererbung - Wie Objekte verschiedener Klassen unterscheiden Java Basics - Anfänger-Themen 3
T Klassen, Objekte, Methoden Java Basics - Anfänger-Themen 9
X Klassen & Objekte Java Basics - Anfänger-Themen 6
J Verständniss Frage zu Klassen, Objekte und Methoden Java Basics - Anfänger-Themen 8
J Objekte und Klassen? Java Basics - Anfänger-Themen 12
G Objekte von Klassen die erst zur Laufzeit bekannt sind erstellen Java Basics - Anfänger-Themen 6
B Uni (Klassen und Objekte) verwenden Java Basics - Anfänger-Themen 2
D Objekte und Klassen Java Basics - Anfänger-Themen 15
muchodrinko Auf Objekte anderer Klassen zugreifen? Java Basics - Anfänger-Themen 16
T Klassen und Objekte externer Aufruf. Java Basics - Anfänger-Themen 8
M Klassen und Objekte => richtiges Verständnis? Java Basics - Anfänger-Themen 6
A Objekte von abstrakten Klassen? Java Basics - Anfänger-Themen 6
K Objekte/Klassen erweitern ~ Javascript Prototyp Java Basics - Anfänger-Themen 5
M Objekte zwischen Klassen "handeln" Java Basics - Anfänger-Themen 4
K Objekte erstellen, wenn der Klassen-Name als String vorliegt Java Basics - Anfänger-Themen 4
M Klassen und Objekte (kopieren) Java Basics - Anfänger-Themen 7
L Zusammenhang Methoden, Klassen, Objekte, static - sun doku Java Basics - Anfänger-Themen 4
K Programm in Klassen/Objekte zerlegen - wie? Java Basics - Anfänger-Themen 3
G Was sind Klassen, Objekte und Methoden? Java Basics - Anfänger-Themen 3
N Zugriff auf Objekte von fremden Klassen aus? Java Basics - Anfänger-Themen 4
M Klassen, Objekte, Konstruktor Java Basics - Anfänger-Themen 5
I Zapier -> wie werden Objekte gespeichert? Java Basics - Anfänger-Themen 10
S Java: Wie sortiere ich eine ArrayList benutzerdefinierter Objekte nach einem bestimmten Attribut? Java Basics - Anfänger-Themen 2
K Hab ich dass so richtig erklärt (Objekte und Referenzen)? Java Basics - Anfänger-Themen 5
J Objekte in JSON speichern?? Java Basics - Anfänger-Themen 1
I Objekte in ShareProject speichern um später zu nutzen Java Basics - Anfänger-Themen 4
J Objekte Java Basics - Anfänger-Themen 22
T Objekte mit arrays erstellen Java Basics - Anfänger-Themen 6
Hzrfa Objekte, Referenz Java Basics - Anfänger-Themen 5
T 3D Objekte verarbeiten Java Basics - Anfänger-Themen 2
N Welche Objekte kann man zu einem Set hinzufügen Java Basics - Anfänger-Themen 4
I XML einlesen und Objekte bekommen Java Basics - Anfänger-Themen 2
W Objekte einer ArrayList in txt-datei schreiben mit Paths? Java Basics - Anfänger-Themen 2
Encera Zugriff auf Map-Objekte Java Basics - Anfänger-Themen 3
E Objekte löschen Java Basics - Anfänger-Themen 9
P Array-Objekte-Aufruf Java Basics - Anfänger-Themen 22
P Zähler Variable für mehrere Objekte Java Basics - Anfänger-Themen 6
B Objekte verschwinden beim Übersetzen Java Basics - Anfänger-Themen 5
D Zwei verschiedene Intellij Projekte, wie benutze ich wechselseitig objekte Java Basics - Anfänger-Themen 8
E Rekursiv Objekte erzeugen - geht das? Java Basics - Anfänger-Themen 2
T Collections Sind Subklassen-Objekte in Listen mit Generics erlaubt? Java Basics - Anfänger-Themen 16
F Aus eingelesener Datei korrekt Objekte erzeugen Java Basics - Anfänger-Themen 5
G Übergeordnete Objekte abrufen Java Basics - Anfänger-Themen 9
B Bin komplett am verzweifeln :( Verkettete Liste die Objekte hat Attribut auslesen Java Basics - Anfänger-Themen 14
A Objekte mit Parametern in eine Liste packen Java Basics - Anfänger-Themen 19
B Objekte, bspw. konkret Arraylists,manuell aus Speicher löschen? Java Basics - Anfänger-Themen 70
D Wie Objekte im JFrame frei bewegen lassen? Java Basics - Anfänger-Themen 3
Spandeli8 Erzeugte Objekte gegenüber Bildern hervorheben in Java Processing Java Basics - Anfänger-Themen 1
J Zwei Objekte vergleichen Java Basics - Anfänger-Themen 8
L Werte von Objekte addieren Java Basics - Anfänger-Themen 14
U Objekte in LinkedList löschen und editieren Java Basics - Anfänger-Themen 14
W Objekte über Scanner Input; ToString Probleme... Java Basics - Anfänger-Themen 4
J Problem mit einer Methode, die beliebig viele Objekte in Array speichern soll Java Basics - Anfänger-Themen 6
G Methoden Informationen aus zwei Objekte bekommen? Java Basics - Anfänger-Themen 6
P Globale Objekte Java Basics - Anfänger-Themen 2
C Nachträglich neue grafische Objekte hinzufügen Java Basics - Anfänger-Themen 7
D Interaktion zweier Objekte Java Basics - Anfänger-Themen 5
M Objekte in Array speichern und ausgeben Java Basics - Anfänger-Themen 17
S Objekte indiziert erstellen Java Basics - Anfänger-Themen 27
M Warum dürfen Objekte einer Klasse auf statische Variablen dieser Klasse referenzieren? Java Basics - Anfänger-Themen 10
M Objekte mittels equals vergleichen Java Basics - Anfänger-Themen 14
N Typebound Objekte einer Arraylist hinzufügen Java Basics - Anfänger-Themen 7
A (Objekte Java Basics - Anfänger-Themen 6
U Objekte in einer LinkedList sortieren Java Basics - Anfänger-Themen 5
N Methode um Objekte einer Liste hinzuzufügen Java Basics - Anfänger-Themen 1
G Java Objekte auf Duplikate testen Java Basics - Anfänger-Themen 4
B Neue Liste erstellen, wenn Objekte bestimmte Referenz hat / Gruppierung von Einträgen Java Basics - Anfänger-Themen 12
M Implementieren einer Datenstruktur, welche nur 5 Objekte speichert Java Basics - Anfänger-Themen 3
M Objekte miteinander vergleichen Java Basics - Anfänger-Themen 18
C Verschiedene Objekte in einer Liste speichern Java Basics - Anfänger-Themen 6
J Java GUI- Objekte Position per Quelltext bestimmen Java Basics - Anfänger-Themen 4
G Objekte in Methoden? Java Basics - Anfänger-Themen 13
H Auf Objekte bzw Variabeln aus einer anderen Methode zugreifen Java Basics - Anfänger-Themen 7

Ähnliche Java Themen

Neue Themen


Oben