Bruch Konstruktor

Hadyaner

Mitglied
Hey, habe nach langem mal wieder eine Aufgabe bekommen, die ich komplett nicht verstehe, da ich die letzen Wochen nicht in der Uni war (krankheitsbedingt)
Hier die Aufgabe :

Schreiben Sie eine Klasse Bruch, die eine Bruchzahl mit ganzzahligem Zähler und Nenner darstellt.
Schreiben Sie folgende Methoden:
• Zwei sinnvolle Konstruktoren,
• Getter für Zähler und Nenner,
• Setter für Zähler und Nenner mit Überprüfung auf korrekte Parameter,
• eine Methode, die den Wert als Dezimalzahl vom Typ double zurück gibt,
• equals,
• hashCode.

Randbedingungen:
• Ihre Klasse muss verhindern, dass der Nenner jemals Null ist.
• Ihre equals-Methode darf für die Brüche 1 / 2 und 2 / 4 false zurück geben. Auch die Hashcodes
können unterschiedlich sein. Für zwei Brüche mit jeweils identischem Zähler und Nenner muss
equals true zurück geben und die Hashcodes müssen gleich sein.

Leider versteh ich nur Bahnhof .... könnte mir jemand dabei helfen ?
 

Haave

Top Contributor
Leider versteh ich nur Bahnhof .... könnte mir jemand dabei helfen ?
Dann wird es Zeit für ein Java-Lehrbuch und die Suchfunktion dieses Forums ;)

Nein wirklich, irgendwas davon musst du doch schon mal gehört haben?! Getter und Setter, Konstruktoren, equals(), double, null … Das liegt doch jetzt nicht an einer Woche Krankgewesensein. Wenn du nichts davon kennst, fehlen ganz klar die Grundlagen.

Edit: Ok, sorry, hab mich mit der Woche verlesen. Dennoch gilt weiterhin: Es ist nicht Aufgabe des Forums, dir Java-Basiswissen beizubringen - das musst du dir selbst anlesen.
 
Zuletzt bearbeitet:

Haave

Top Contributor
Hast du denn schon ein kleines bisschen Code, das du zeigen kannst? Weißt du, wie eine Klasse aufgebaut ist, und könntest du das exemplarisch für diese Klasse beschreiben?
 

Hadyaner

Mitglied
Natürlich weiß ich, wie ich eine Klasse schreibe etc. ich weiß nur nicht wie ich einen Getter und Setter initalisiere und das auch noch mit Brüchen ?
 

Haave

Top Contributor
Getter und Setter sind nichts Magisches, sondern ganz normale Java-Methoden, falls du wegen der Begrifflichkeiten verwirrt bist. Sie werden bloß meist mit diesen Begriffen herausgestellt, weil man damit alle Methoden meint, die auf die Instanzvariablen eines Objekts zugreifen und diese lesen (get) oder verändern (set) können.
 

b1zarRe

Bekanntes Mitglied
Hier eine kleine Starthilfe...: Wenn du mit der Aufgabenstellung aber garnicht klar kommst, dann hast du eine Menge aufzuholen... bzw. vllt den Kurs im nächsten Semester nochmal belegen.

Ansonsten überlege dir vor einer Aufgabe erst einmal was zu tun ist. Du sollst quasi nichts anderes machen, als eine Bruchzahl darzustellen. Woraus besteht eine Bruchzahl? -> Zähler und einem Nenner! Sowie einem Bruchstrich. Also, ist es schonmal gut, diese als Konstanten bzw. Instanzvariablen der Klasse zu setzen. Was passiert, wenn der Zaehler eine 0 hat? Oder wenn der Nenner eine 0 bekommt??? -> Beim ersten wird der komplette Bruch gekürzt auf 0 herauskommen... beim 2. verletzt dies eine Mathematische Bedingung, da nicht durch 0 geteilt werden darf! Wie kann man einen Bruch kürzen? (falls dies auch in der aufgabe enthalten ist)...genau, man braucht einen einen größten gemeinsamen Teiler.... usw usf

Hier ein Ansatz:
Java:
public class Bruchzahl {
	
	/* Instanzvariable einer Instanz. */
	private int zaehler;
	private int nenner;
	private final char bruch = "/";
	private int ganzzahl;

	
	/* Konstruktor fuer einen zaehler sowie nenner. */
	public Bruchzahl(int zaehler, int nenner) {
		this.zaehler = zaehler;
		this.nenner = nenner;
	}

	/* Konstruktor fuer einen zaehler "ohne" nenner. */
	public Bruchzahl(int zaehler) {
		this.zaehler = zaehler;
		this.nenner = 1;
	}

	/* Gibt Zaehler wieder. */
	public int gibZaehler() {
		return this.zaehler;
	}

	/* Gibt Nenner wieder. */
	public int gibNenner() {
		return this.nenner;
	}

	/* Gibt Bruch wieder. */
	public String gibBruch() {
		return this.zaehler + this.bruch + this.nenner;
	}

	/* Setzt Zaehler sowie nenner einem gewissen Wert zu. */
	public void setzeZaehlerUndNenner(int zaehler, int nenner) {
		if (zaehler == 0) {
			this.ganzzahl = 0;
		} else if  (nenner == 0) {
			this.ganzzahl = -1; 
		} else {
			this.zaehler == zaehler;
			this.nenner == nenner;
		}			 		
	}
		
}
 

XHelp

Top Contributor
@b1zarRe, dein Code wird nicht mal kompilieren.
Code:
setzeZaehlerUndNenner
ist auch irgendwie ziemlich kryptisch und falsch.
Code:
gibBruch
sollte besser in
Code:
toString
umbenannt werden und die überflüssigen
Code:
this
kannst du auch weglassen.
 

b1zarRe

Bekanntes Mitglied
Es ging hierbei nicht darum, dem Threadersteller ein fertiges Programm zu liefern, sondern einen ANSATZ zu schreiben. Dies habe ich grad in paar Minuten gemacht und ohne es selbst mal laufen zu lassen oder so. Deswegen auch nicht vollständig... aber stimmt, dass mit char muss natürlich in '' und nicht "". Klar, kann man this weglassen... ich finde es aber immer übersichtlicher this.nenner = nenner(parameter) zu schreiben, als nenner = nenner. Auch ist die Namenswahl toString wohl noch aussagekräftiger, dass stimmt.

Mir gings es aber eher darum, wie gesagt, ihm einen Ansatz zu geben und nicht ein fehlerfreies Programm auszuhändigen.
 

XHelp

Top Contributor
Klar, kann man this weglassen... ich finde es aber immer übersichtlicher this.nenner = nenner(parameter) zu schreiben, als nenner = nenner.
Ne, nenner = nenner wäre falsch. Ich meinte das eher bei den Gettern und nicht Settern.
Auch ist die Namenswahl toString wohl noch aussagekräftiger, dass stimmt.
Es geht hier auch nicht um die Namenswahl, sondern darum, dass du eine Methode von
Code:
Object
überschreibst. Dann kannst du auch bei
Code:
System.out.println(einBruch)
machen und eine sinnvolle Ausgabe bekommen.
 

fastjack

Top Contributor
• Zwei sinnvolle Konstruktoren

1. Zähler + Nenner und 2. eine Zahl, der der man einen Bruch erstellen kann. Ob jetzt ein Konstruktor sinnvoll ist, der mir aus 7 -> 7/1, 5 -> 5/1, 3 -> 3/1 erstellt, glaube ich nicht. Bei den Konstruktoren mußt du auch Parameter prüfen, also hier die Setter von unten nutzen.

• Getter für Zähler und Nenner,

int getNenner(), int getZaehler() auf die Instanzvariablen

• Setter für Zähler und Nenner mit Überprüfung auf korrekte Parameter,

setNenner(), setZaehler() auf die Instanzvariablen, schmeiß IllegalArgumentExceptions, wenn die Parameter nicht korrekt sind. Wobei Brüche eigentlich imutable sein könnten...

• eine Methode, die den Wert als Dezimalzahl vom Typ double zurück gibt,

double berechne() oder weis der Geier was.


die equals-Methode von Objekt überschreiben. Naja, was unterscheidet Brüche voneinander? Paß hier auf, weil jemand dir zum vergleichen eines Bruches auch ein Objekte der Klasse Apfel oder Ei unterschieben kann.


Objekte die equals sind, haben den gleichen Hashcode, auch bei mehrmaligem Aufruf der Hashfunktion. Aber Objekte mit gleichen Hashcode müssen nicht equals sein! Viel Spaß beim knobeln an der Hashfunktion (du mußt int's erzeugen)

Randbedingungen:
• Ihre Klasse muss verhindern, dass der Nenner jemals Null ist.

in dem setter halt, mit if prüfen

• Ihre equals-Methode darf für die Brüche 1 / 2 und 2 / 4 false zurück geben.

damit wird's leichter

Auch die Hashcodes können unterschiedlich sein. Für zwei Brüche mit jeweils identischem Zähler und Nenner muss
equals true zurück geben und die Hashcodes müssen gleich sein.

auch damit hast Du einige Probleme weniger.

P.S.: lass Dir die Aufzeichnungen der Vorlesungen geben, die du versäumt hast.
 

Hadyaner

Mitglied
Sorry jungs -.- mir ist ein Fehler unterlaufen, dass ist erst die Aufgabe für in 2 Wochen, deswegen kam mir das alles ein bisschen komisch vor, weil wir das noch garnicht in der Vorlesung hatten. Ich werde den Topic dann wieder öffnen, aber danke für die schnelle Hilfe, echt ein Top Forum =)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Zeppi OOP Bruch kürzen im Konstruktor Java Basics - Anfänger-Themen 2
I Bruch Konstruktor Java Basics - Anfänger-Themen 4
Schmaxel Herausfinden ob ein Bruch kürzbar ist. Java Basics - Anfänger-Themen 6
J Dezimalzahl in Bruch Umwandeln und Kürzen Java Basics - Anfänger-Themen 8
X Nach einem Bruch testen ob es eine ganze Zahl ist Java Basics - Anfänger-Themen 6
E Bruch erstellen - Von Int zu Double Ergebnis Java Basics - Anfänger-Themen 24
E Bruch Klasse erstellen Java Basics - Anfänger-Themen 4
W Variablen float rundet beim Bruch rechnen Java Basics - Anfänger-Themen 3
Z Erste Schritte Instanzmethoden Rechnen (Bruch) Java Basics - Anfänger-Themen 18
K Datentypen double x als Bruch aus Integern macht x zu integer? Java Basics - Anfänger-Themen 3
Binary.Coder Bruch in Textarea Java Basics - Anfänger-Themen 5
L Bruch rechnen Java Basics - Anfänger-Themen 29
N Bruch Java Basics - Anfänger-Themen 15
G Richtige Syntax für Bruch Java Basics - Anfänger-Themen 12
S Rekursive Bruch potenzierung Java Basics - Anfänger-Themen 2
X Bruch Problem (int/double) Java Basics - Anfänger-Themen 3
G bruch soweit es geht kürzen Java Basics - Anfänger-Themen 12
W Null-Pointer trotz Konstruktor? Java Basics - Anfänger-Themen 9
M Konstruktor-Aufruf im Konstruktor, aber nicht am Anfang? Java Basics - Anfänger-Themen 4
T Schlüsselworte Schlüsselwort this im Konstruktor Java Basics - Anfänger-Themen 3
frager2345 Warum muss ich hier im Konstruktor meine Exeption nicht abfangen ? Java Basics - Anfänger-Themen 4
J Konstruktor Java Basics - Anfänger-Themen 18
frager2345 Java Singleton Muster -> Methode für Konstruktor mit Parametern Java Basics - Anfänger-Themen 3
G Welche Attribute kommen in den Konstruktor? Java Basics - Anfänger-Themen 5
M wird der Konstruktor nicht als 1. ausgeführt? Java Basics - Anfänger-Themen 13
G Konstruktor und update Java Basics - Anfänger-Themen 4
K Kopier-Konstruktor Java Basics - Anfänger-Themen 6
S Default Konstruktor Java Basics - Anfänger-Themen 7
M Konstruktor ohne Übergabe eines Wertes Java Basics - Anfänger-Themen 7
M Wie kann ich in einem Konstruktor die Methode eines anderen Interfaces mit den jeweiligen Parametern aufrufen? Java Basics - Anfänger-Themen 8
J Vier gewinnt in Java,Spieler Konstruktor Java Basics - Anfänger-Themen 8
kxrdelis Konstruktor für ein Rechtwinkliges Dreieck Java Basics - Anfänger-Themen 10
HorstSchröder Konstruktor mit Initialwert Java Basics - Anfänger-Themen 1
C Konstruktor ab serialisiertem Objekt Java Basics - Anfänger-Themen 4
J Input/Output Konstruktor ergänzen, der zur Datei mit einem Objekt passt Java Basics - Anfänger-Themen 0
InfinityDE Problem mit Datenübergabe an Konstruktor Java Basics - Anfänger-Themen 7
B Konstruktor mit Array als Parameter Java Basics - Anfänger-Themen 3
G Variablen Array Länge über den Konstruktor definieren Java Basics - Anfänger-Themen 4
L Konstruktor für eine Map-Datei/Map-Datei einlesen Java Basics - Anfänger-Themen 5
C Interface und Konstruktor Java Basics - Anfänger-Themen 1
H Generische Konstruktor Java Basics - Anfänger-Themen 12
MiMa Seltsames Verhalten im Konstruktor Java Basics - Anfänger-Themen 6
S Konstruktor passt nicht zum Rest Java Basics - Anfänger-Themen 11
C Unbekannter "Konstruktor"?? Java Basics - Anfänger-Themen 10
W OOP Warenlager mit Array(Konstruktor, Methoden) Java Basics - Anfänger-Themen 39
R Objekt in Konstruktor ist nicht zulässig Java Basics - Anfänger-Themen 5
A Mit einer Methode den Konstruktor aufrufen? Java Basics - Anfänger-Themen 2
B Warum können super() und this() nicht gemeinsam in einem Konstruktor verwendet werden? Java Basics - Anfänger-Themen 7
K Konstruktor für ein Objekt mit Zugriffsmethoden Java Basics - Anfänger-Themen 7
H Unterschied Konstruktor und Klassenname x = new Klassenname; Java Basics - Anfänger-Themen 3
B Klassen Array Parameter im Konstruktor? Java Basics - Anfänger-Themen 4
E Konstruktor mit Methode Java Basics - Anfänger-Themen 7
E ArithmeticException im Konstruktor Java Basics - Anfänger-Themen 4
S Konstruktor, Objekte Java Basics - Anfänger-Themen 4
F Konstruktor richtig implementiert? Frage zu Benutzereingaben... Java Basics - Anfänger-Themen 9
W Typecastin im Konstruktor? Java Basics - Anfänger-Themen 2
A Variablen Variablenwert über Konstruktor ändern Java Basics - Anfänger-Themen 3
F Arrays im Konstruktor Java Basics - Anfänger-Themen 5
C Konstruktor mit und ohne Parameterliste Java Basics - Anfänger-Themen 13
L Instanzvariablen, Veerbung, Konstruktor Java Basics - Anfänger-Themen 32
E Best Practice Konstruktor mit bestehender Intanz der gleichen Klasse aufrufen Java Basics - Anfänger-Themen 4
E Plausibilitätsprüfung in dem Konstruktor mit Ausnahmebehandlung Java Basics - Anfänger-Themen 8
A Aufruf von Konstruktor , obwohl 2 Parameter weggelassen werden Java Basics - Anfänger-Themen 7
A Aufruf von Konstruktor , obwohl 2 Parameter weggelassen werden Java Basics - Anfänger-Themen 0
D Compiler-Fehler Konstruktor von Superklasse übernehmen Java Basics - Anfänger-Themen 1
P Counter im Konstruktor Java Basics - Anfänger-Themen 11
J toString-Methode in Verbindung mit varArgs-Konstruktor Java Basics - Anfänger-Themen 18
I Einträge in den Konstruktor Java Basics - Anfänger-Themen 3
Aprendiendo [JAVA-Syntax] (int... variable) bei einem Konstruktor Java Basics - Anfänger-Themen 8
J Superklassen Konstruktor Verständnisfrage Java Basics - Anfänger-Themen 1
G Int-Array im Konstruktor Parameter Java Basics - Anfänger-Themen 37
T Datentypen Warum mit Konstruktor Objektvariablen initalisieren? Java Basics - Anfänger-Themen 19
A Vererbung bei Klassen mit Objekt der Klasse im Konstruktor Java Basics - Anfänger-Themen 4
P Konstruktor. Java Basics - Anfänger-Themen 4
D Best Practice Objekt automatisch im Konstruktor füllen? Java Basics - Anfänger-Themen 9
D Objekt oder Konstruktor Java Basics - Anfänger-Themen 2
F Java default Konstruktor Java Basics - Anfänger-Themen 1
R Fragen über den Konstruktor Java Basics - Anfänger-Themen 0
T Konstruktor mit Referenzdatentypen Java Basics - Anfänger-Themen 5
H Klassen Konstruktor Parameter als Instanzvariablen zwischen speichern... Java Basics - Anfänger-Themen 11
T setter im Konstruktor einbauen? Java Basics - Anfänger-Themen 8
R ArrayList im Konstruktor. Java Basics - Anfänger-Themen 4
T Konstruktor Probleme Java Basics - Anfänger-Themen 3
J Wie lässt sich der Konstruktor einer Klasse einer Funktion einer Klasse nutzen. Java Basics - Anfänger-Themen 4
S Variable, die im Konstruktor gesetzt wird, wird nicht gefunden vom Compiler. Java Basics - Anfänger-Themen 4
C Generic im Konstruktor Java Basics - Anfänger-Themen 1
F Privater Konstruktor und statische Methoden Java Basics - Anfänger-Themen 4
W Konstruktor von FileInputStream nicht gefunden Java Basics - Anfänger-Themen 18
B Methoden Konstruktor im Konstruktor aufrufen Java Basics - Anfänger-Themen 2
N Aufgabe: Pizza Konstruktor mit mehreren beliebigen Durchmesser/Preiskombinationen Java Basics - Anfänger-Themen 8
K arraygröße durch variablen Konstruktor? Java Basics - Anfänger-Themen 7
K ArrayList in Konstruktor - wie späterer Zugriff Java Basics - Anfänger-Themen 2
G Verwendung von Konstruktor Java Basics - Anfänger-Themen 8
X Übergabeparameter Konstruktor (File) Java Basics - Anfänger-Themen 13
K Wieso muss man finale statische Variablen sofort oder eben im Konstruktor initialisieren? Java Basics - Anfänger-Themen 2
C Konstruktor in Abstrakten Klassen Java Basics - Anfänger-Themen 4
B Konstruktor Problem Java Basics - Anfänger-Themen 8
Joew0815 konstruktor und damit erstellte objekte Java Basics - Anfänger-Themen 1
K Hashtable mit eigenen Konstruktor Java Basics - Anfänger-Themen 2
S Java Fragen Konstruktor & Statische Methoden Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben