Anfänger braucht Hilfe:Interface

dangario

Mitglied
Guten Morgen miteinander!
Ich hab folgendes Interface:
Java:
public interface Term {
	public int wert();
	public String infix();
}

mit folgenden Klassen:
Java:
public class Konstante implements Term {
	private int wert;
	
	public Konstante (int wert){
		this.wert = wert;
	}
	
	@Override
	public int wert() {
		return wert;
	}
}
und
Java:
public class ZweiStelligeOperation implements Term {
	protected Term ersterOperand;
	protected Term zweiterOperand;

	public ZweiStelligeOperation (Term ersterOperand, Term zweiterOperand){
		this.ersterOperand = ersterOperand;
		this.zweiterOperand = zweiterOperand;
		
	}
	
	@Override
	public int wert() {
		//Hier liegt mein Problem, mehr dazu am Ende des Posts
	}
}
Ausserdem hat die Klasse ZweiStelligeOperation noch folgende Unterklasse:
Java:
public class Summe extends ZweiStelligeOperation {
	public Summe (Term zweiterSummand, Term ersterSummand){
		super(zweiterSummand,ersterSummand);
		
	}

}

Mit dem Programm soll es letztendlich möglich sein dass man für einen Code wie beispielsweise den folgenden
Java:
Term s = new Konstante(12);
	Term t = new Konstante(11);
	Term u = new Summe(s,t);
	System.out.println(u.wert());
das richtige Ergebnis bekommt. Mein Problem liegt wie gesagt in der wert()-Methode der ZweiStelligeOperation Klasse - Ich weiss nicht genau wie man das machen könnte. Ich habe mir gedacht man könnte das vielleicht folgendermaßen lösen:

Java:
public int wert() {
  if (ersterOperand instanceof Summe && zweiterOperand instanceof Summe) return ersterOperand + zweiterOperand;
  //es soll dann auch noch weitere Unterklassen zu ZweiStelligeOperation geben (Differenz, Produkt usw.)
}
Allerdings geht das so natürlich nicht weil ersterOperand und zweiterOperand jeweils vom Typ Term sind und sich das nicht einfach addieren oder zu int casten lässt.

Vielen Dank im voraus, dangario
 

Andi_CH

Top Contributor
1. Fehlt überall die Methode infix()

2. wieso "casten"??? ruf doch die Methode wert() auf, dazu ist die ja da. Das geht auch wenn die Objektreferenzen als Term gespeichert sind.
 

dangario

Mitglied
Ich habe das nach der Vorgabe eines UML-Diagramms nachprogrammiert.
Tut mir Leid das hätte ich natürlich dazu sagen müssen!

edit: die infix() methoden habe ich nur nicht mitgepostet weil ich dachte da läge mein Problem nicht.
An welcher Stelle müsste ich die wert() Methode aufrufen? Im Konstruktor der ZweiStelligeOperation irgendwo?
Habe da schon dran gedacht aber konnte das nicht so recht umsetzen.
 
Zuletzt bearbeitet:

JUserToto

Aktives Mitglied
Die Summe sollte in dem Fall wohl auch den Term implementieren. Die wert() Methode eines zweistelligen Terms ist ja erstmal sinnlos und kann irgendwas zurück geben. Die wert() Methode der Summe dann den addierten wert der zwei Terme.
ZweistelligerTerm (oder wies auch immer hieß) muss ja garnicht Term implementieren, da sie von sich aus erstmal keinen Wert hat.
 
Zuletzt bearbeitet:

Ezra

Bekanntes Mitglied
Mach die ZweistelligeOperation als abstrakte Klasse mit wert() als abstrakte Methode. Alle Klassen (also konkrete Operationen), die davon erben, implementieren wert() dann einfach selbst. So kannst Du die ganzen instanceof-Abfragen weglassen.

Deine Lösung wäre sowieso falsch, weil Du dann keine Konstanten summieren könntest - stattdessen willst Du nur Summen summieren. Da beißt sich die Katze in den Schwanz.

Die Summe sollte in dem Fall wohl auch den Term implementieren. Die wert() Methode eines zweistelligen Terms ist ja erstmal sinnlos und kann irgendwas zurück geben.
Das ist einfach nur Mumpitz. Warum sinnlos?
 
Zuletzt bearbeitet:

JUserToto

Aktives Mitglied
Mach die ZweistelligeOperation als abstrakte Klasse mit wert() als abstrakte Methode. Alle Klassen (also konkrete Operationen), die davon erben, implementieren wert() dann einfach selbst. So kannst Du die ganzen instanceof-Abfragen weglassen.

Deine Lösung wäre sowieso falsch, weil Du dann keine Konstanten summieren könntest - stattdessen willst Du nur Summen summieren. Da beißt sich die Katze in den Schwanz.


Das ist einfach nur Mumpitz. Warum sinnlos?


Sinnlos, weil eine ZweistelligeOperation ja erst dann einen Wert hat, wenn ein Operator dazu kommt. Den gibt es in der ZweistelligenOperation ja garnicht. Warum sollte sie dann "Term" implementieren?
Entweder kommt in die ZweistelligeOperation noch ein Operator, oder es muss eben entweder so gemacht werden, wie du es schreibst (erscheint mir am sinnvollsten)
 
Zuletzt bearbeitet:

dangario

Mitglied
Mach die ZweistelligeOperation als abstrakte Klasse mit wert() als abstrakte Methode. Alle Klassen (also konkrete Operationen), die davon erben, implementieren wert() dann einfach selbst. So kannst Du die ganzen instanceof-Abfragen weglassen.

Das kann ich ja nicht einfach machen wenn das UML-Diagramm das mir als Vorlage dient das nicht explizit so vorsieht oder?
 

Ezra

Bekanntes Mitglied
Ich weiß nicht, wie Dein Klassendiagramm aussieht. Aber steht dort wirklich, dass die Klasse ZweistelligeOperation nicht abstrakt sein darf?
Abgesehen davon ist ja nichts verändert worden. Mit instanceof zu arbeiten anstatt die Vererbung selbst auszunutzen ist in dem Fall sehr schlechter Stil.

Sinnlos, weil eine ZweistelligeOperation ja erst dann einen Wert hat, wenn ein Operator dazu kommt. Den gibt es in der ZweistelligenOperation ja garnicht.
So wie es im Moment ist, ist es natürlich unfertig und sinnlos, ja. Aber generell die ZweistelligeOperation als Oberklasse für Nicht-Konstanten zu nutzen, halte ich für zweckmäßig. Es erspart duplizierten Code.
 

dangario

Mitglied
Hab jetzt das Diagramm mal hochgeladen:

umldiagr.jpg
 

Ezra

Bekanntes Mitglied
ZweistelligeOperation ist im Gegensatz zu Konstante kursiv geschrieben. Könnte das was bedeuten? Zum Beispiel, dass es abstrakt ist?
 

dangario

Mitglied
Hehe ja da hast du wohl Recht, tut mir Leid, dachte da müsste über dem Klassennamen ein <<abstract>> oder so stehen.

Ok vielen Dank schonmal soweit. Wie bekomme ich jetzt aber den ersten und zweiten Summanden addiert? Die sind ja wieder beide Objekte vom Typ Term? Ich schätze ich muss irgendwie die wert()-Methoden benutzen um die Werte der entsprechenden Objekte in eine Int-Variable zu packen damit ich damit auch rechnen kann, aber wie und wo würde das am besten gehen? Oder liege ich ganz falsch?
 

JUserToto

Aktives Mitglied
Hehe ja da hast du wohl Recht, tut mir Leid, dachte da müsste über dem Klassennamen ein <<abstract>> oder so stehen.

Ok vielen Dank schonmal soweit. Wie bekomme ich jetzt aber den ersten und zweiten Summanden addiert? Die sind ja wieder beide Objekte vom Typ Term? Ich schätze ich muss irgendwie die wert()-Methoden benutzen um die Werte der entsprechenden Objekte in eine Int-Variable zu packen damit ich damit auch rechnen kann, aber wie und wo würde das am besten gehen? Oder liege ich ganz falsch?

In der Wert methode der Summe? return term1.wert() + term2.wert();
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
D Zahlentabelle Anfänger braucht Hilfe Java Basics - Anfänger-Themen 1
U anfänger braucht hilfe . wir konnten die aufgaben nicht beantworten Java Basics - Anfänger-Themen 5
L Anfänger braucht Hilfe - Stecke beim Lernen fest Java Basics - Anfänger-Themen 10
S Ein Java Anfänger braucht Hilfe Java Basics - Anfänger-Themen 5
F Anfänger braucht Hilfe :) Java Basics - Anfänger-Themen 3
D Anfänger braucht Hilfe Java Basics - Anfänger-Themen 2
V Erste Schritte Java-Anfänger braucht Hilfe bei Arrays Java Basics - Anfänger-Themen 19
J Kleiner Taschenrechner! Anfänger braucht Hilfe :( Java Basics - Anfänger-Themen 2
I totaler Anfänger braucht Hilfe Java Basics - Anfänger-Themen 8
T Hallo anfänger braucht Hilfe :D Java Basics - Anfänger-Themen 7
C Anfänger braucht Hilfe bei Schularbeit Java Basics - Anfänger-Themen 3
F Anfänger braucht Hilfe Java Basics - Anfänger-Themen 24
L Klassen Anfänger braucht Hilfe! Probleme mit Javakara.jar Java Basics - Anfänger-Themen 25
W Anfänger braucht Hilfe bei Hausübung! Sprachauswahl? Wie? Java Basics - Anfänger-Themen 9
X Anfänger braucht hilfe! Java Basics - Anfänger-Themen 4
G Textfeld und Label in einem Tab? Anfänger braucht Hilfe Java Basics - Anfänger-Themen 3
S Blutiger Java Anfänger braucht dringend Hilfe Java Basics - Anfänger-Themen 4
E Anfänger braucht Hilfe Java Basics - Anfänger-Themen 6
T Vokabelbuch programmieren - Anfänger braucht Hilfe! Java Basics - Anfänger-Themen 17
J blutiger Anfänger braucht Hilfe ^^ Java Basics - Anfänger-Themen 3
M Erste Schritte Anfänger braucht Denkanstoß für Schulprojekt Java Basics - Anfänger-Themen 21
B OOP was heißt objektorientiertes Programmieren (fragt ein absoluter Anfänger) Java Basics - Anfänger-Themen 17
Soranix Erste Schritte Struktur als Anfänger // Von einer Klasse auf ein Objekt einer anderen Klasse zugreifen. Java Basics - Anfänger-Themen 6
M Java Programmierung Aufgabe Anfänger Java Basics - Anfänger-Themen 1
JordenJost Java ist auch eine Insel für Anfänger Java Basics - Anfänger-Themen 2
R Anfänger: Ausgabe kommt minus raus? Java Basics - Anfänger-Themen 6
N Fehler im Code (Aufgabe für Anfänger) Java Basics - Anfänger-Themen 11
T Übungsbuch für Anfänger Java Basics - Anfänger-Themen 3
H Threads Anfänger Java Basics - Anfänger-Themen 17
C Erste Schritte Anfänger Verständnisfrage zum Compiler Java Basics - Anfänger-Themen 31
J Anfänger, Fehler; "Der Hund liegt begraben" Java Basics - Anfänger-Themen 3
K Buchstabenzähler Java (Anfänger) Java Basics - Anfänger-Themen 35
E Kleines Java-Projekt für Anfänger Java Basics - Anfänger-Themen 10
ehmo würfelspiel programmieren anfänger Java Basics - Anfänger-Themen 1
J Anfänger TicTacToe, Problem bei Gewinnoption, sowohl Unentschieden Java Basics - Anfänger-Themen 8
A Scanner Befehl Java Anfänger Java Basics - Anfänger-Themen 8
_Zabuza_ Erste Schritte Wie am effektivsten Java lernen als Anfänger? Java Basics - Anfänger-Themen 12
T Roulette für Anfänger Java Basics - Anfänger-Themen 7
T Java Anfänger mit konkreten Fragen Java Basics - Anfänger-Themen 2
K Java Anfänger Java Basics - Anfänger-Themen 5
F Hilfe für einen Anfänger! Java Basics - Anfänger-Themen 4
P Übungsaufgaben für Anfänger? Java Basics - Anfänger-Themen 2
Z Unklarheit bei Übungsaufgabe [Anfänger] Java Basics - Anfänger-Themen 22
J Lesen und schreiben in eine Datei(Anfänger- Dateizugriffe) Java Basics - Anfänger-Themen 3
O Anfänger, Verständnisfrage Java Basics - Anfänger-Themen 3
CT9288 Mini Anfänger-Problem mit loops, statements und ; Java Basics - Anfänger-Themen 4
F Hilfe, bin Anfänger! Java Basics - Anfänger-Themen 4
R Erste Schritte Materialien für Java-Anfänger Java Basics - Anfänger-Themen 7
Koookie Kleines Frage - Antwort Programm (Anfänger) Java Basics - Anfänger-Themen 5
F Studium aufgabe ...Anfänger sucht hilfe :D Java Basics - Anfänger-Themen 24
F Abrechnungsprogramm erstellen Student (Anfänger) Java Basics - Anfänger-Themen 2
J Musikplayer zu schwer für Anfänger? Java Basics - Anfänger-Themen 3
F Wieso wird dieser Befehl nicht ausgeführt? (Anfänger) Java Basics - Anfänger-Themen 2
V Erste Schritte Anfänger: Ausführen eines Java-Programms Java Basics - Anfänger-Themen 5
Textsurfer Methoden Anfänger * Java Basics - Anfänger-Themen 5
G Ein paar Anfänger Fragen zu StdDraw Java Basics - Anfänger-Themen 4
J Anfänger: ActionListener und ProcessBuilder machen Probleme Java Basics - Anfänger-Themen 6
C verwirrter Anfänger Java Basics - Anfänger-Themen 6
L Verzinsungsprogramm (Java-Anfänger) Java Basics - Anfänger-Themen 3
T Datentypen enum static Chaos (blutiger anfänger) Java Basics - Anfänger-Themen 5
I if/else Statements Java Anfänger Java Basics - Anfänger-Themen 14
D Anfänger-Fragen(Parameter einer Methode) Java Basics - Anfänger-Themen 7
H Schleifen (anfänger) Java Basics - Anfänger-Themen 13
H Methoden Bluej Anfänger Java Basics - Anfänger-Themen 13
M Erste Schritte Einfache Aufzugssteuerung programmieren - Anfänger Java Basics - Anfänger-Themen 2
D Anfänger-Problem mit dem HalloWelt-Programm Java Basics - Anfänger-Themen 5
S Compiler-Fehler Anfänger sucht Hilfe. Fehler beim Compilieren Java Basics - Anfänger-Themen 6
V Array mit Zufallszahlen - Anfänger - Hilfe Java Basics - Anfänger-Themen 12
J Anfänger hat Problem mit seinen Beet Java Basics - Anfänger-Themen 12
D Compiler-Fehler Anfänger Fehlermeldung Java Basics - Anfänger-Themen 3
das_leon if als Auswahl (Anfänger) Java Basics - Anfänger-Themen 1
N Anfänger Problem Java Basics - Anfänger-Themen 4
GoodGuy [Anfänger] Kann mal wer drüber gucken? Java Basics - Anfänger-Themen 3
R Erste Schritte Anfänger Probleme bei AnimationDrawable Java Basics - Anfänger-Themen 0
C Taxiwarteschlange - Anfänger Java Basics - Anfänger-Themen 2
J Fehlermeldung : cannot invoke char(at) int on the primitive type int --- Anfänger Java Basics - Anfänger-Themen 5
I Java, Application, Eclipse (Anfänger) Java Basics - Anfänger-Themen 1
M Java Anfänger - Video Tutorial Reihe (DEUTSCH) Java Basics - Anfänger-Themen 11
C Anfänger: Array + Klasse Java Basics - Anfänger-Themen 5
S OOP Uhrenanzeige programmieren, Achtung Anfänger! Java Basics - Anfänger-Themen 9
B Compiler-Fehler Ein Java-Eclipse-Anfänger geht auf Reisen... Java Basics - Anfänger-Themen 10
A 2 kurze Anfänger fragen Java Basics - Anfänger-Themen 6
I Erste Schritte Bücher für Jungedliche[Anfänger] Java Basics - Anfänger-Themen 20
C Anfänger Anfänger Fragen Java Basics - Anfänger-Themen 8
A Anfänger Taschenrechner Frage Java Basics - Anfänger-Themen 14
D error: Class names, >>>HILFE, anfänger<<< Java Basics - Anfänger-Themen 4
J Hilfe für Anfänger Java Basics - Anfänger-Themen 8
E OOP Methode an andere Methode übergeben / OOP Anfänger Java Basics - Anfänger-Themen 4
Farbenfroh Exceptions Anfänger - Finde Fehler nicht Java Basics - Anfänger-Themen 7
H MergeSort (für Anfänger ) Java Basics - Anfänger-Themen 9
X Projekt Java Anfänger Java Basics - Anfänger-Themen 28
C Fehlersuche Adressbuch *Anfänger* Java Basics - Anfänger-Themen 5
J Erste Schritte Hilfe bei absolutem Anfänger-Projekt Java Basics - Anfänger-Themen 4
A Erste Schritte Übungen für Anfänger Java Basics - Anfänger-Themen 31
M Sieb des Eratosthenes für Anfänger Java Basics - Anfänger-Themen 10
M Tipps für einen Java-Anfänger Java Basics - Anfänger-Themen 5
S Anfänger Aufgaben Java Basics - Anfänger-Themen 6
G Anfänger-Errors und Fragen Java Basics - Anfänger-Themen 22
S Java für Anfänger: Probleme mit read() Java Basics - Anfänger-Themen 20
P [Anfänger] DiceGame Aufagbe Java Basics - Anfänger-Themen 23

Ähnliche Java Themen

Neue Themen


Oben