Java Problem bei Aufgabe

Status
Für weitere Antworten geschlossen.

insXicht

Lt. Commander
Registriert
Mai 2011
Beiträge
1.096
Hallo cb-Community,

ich bin Java-Anfänger und bin momentan an folgender Aufgabe dran:

a) Erstellen Sie eine Klasse Quadrat im Paket geo des Projektes ErsteSchritte. Jedes
Quadrat hat eine X/Y-Startkoordinate, eine Seitenlänge in cm, eine Liniendicke in mm, eine
Linienfarbe und eine Füllfarbe. Erstellen Sie 4 sinnvolle Konstruktoren unter Vermeidung von
redundantem Quellcode sowie die notwendigen getter und setter. Überschreiben Sie die Methoden
toString und equals von Object unter Angabe der Annotation @Override. Die Linienfarbe und
Füllfarbe werden als String gespeichert, wobei nur „grün“, „blau“, „schwarz“ und „gelb“ zugelassen
sind. Prüfen Sie die Gültigkeit der Farben in einer einzigen Bedingung und werfen Sie im Fehlerfall
eine RuntimeException mit passender Fehlermeldung. Ein Quadrat-Objekt muss zu jedem
Zeitpunkt in einem gültigen Zustand sein, ansonsten ist eine RuntimeException mit passender
Fehlermeldung zu werfen!
b) Schreiben Sie zusätzlich eine separate Test-Klasse, in der 5 Quadrate angelegt und
deren Eigenschaften geändert werden.

Ich hänge mitten in der Aufgabe fest und komme leider nicht weiter.
Besonders " Überschreiben Sie die Methoden toString und equals von Object unter Angabe der Annotation @Override." sagt mir leider gar nichts und ich bin mir auch nicht sicher ob ich die Runtimeexception für die Farben in die setter methode reinschreiben kann oder ob ich das ganz anders machen muss.
Mein Quellcode sieht momentan so aus:

Code:
package geo;

public class Quadrat {

	// Eigenschaften jedes Quadrates	
	private double x; // x-Koordinate
	private double y; // y-Koordinate
	private double a; // Seitenlaenge
	private double b; // Liniendicke
	
	private String c; // Linienfarbe
	private String d; // Fuellfarbe
	
	
	// Getter und Setter
	public double getX() {
		return x;
	}
	public void setX(double x) {
		this.x = x;
	}
	public double getY() {
		return y;
	}
	public void setY(double y) {
		this.y = y;
	}
	public double getA() {
		return a;
	}
	public void setA(double a) {
		this.a = a;
	}
	public double getB() {
		return b;
	}
	public void setB(double b) {
		this.b = b;
	}
	public String getC() {
		return c;
	}
	public void setC(String c) {
		this.c = c;
	}
	public String getD() {
		return d;
	}
	public void setD(String d) {
		this.d = d;
	}

}

Wäre nett wenn mir jmd weiterhelfen könnte.

gruß insXicht
 
Ich würde mir die Lösungen die hier gleich eventuell kommen nicht abtippen, eigentlich schon garnicht durchlesen. Du musst erstmal das hier verstehen: http://openbook.galileodesign.de/javainsel5/javainsel06_006.htm - wenn das (warum auch immer) ein zu großer Brocken ist und du nichts verstehst, gehst du einige Kapitel zurück und ließt dir erstmal die grund-grundlagen durch :)

Was ja nicht schwer ist und dann postest du nochmal deine Lösung mit dem "@override" und wir können dir sagen ob dus verstanden hast oder nicht - keine angst, muss nicht perfekt sein, hauptsache du hast es durchgelesen und versucht. Machst du das anders (sprich, so wenig durchlesen und verstehen wie es nur geht und soviel kopieren und nicht nachdenken wie es nur geht) wirst du später bei den weiteren Aufgaben/Projekt was auch immer darauf aufbaut dein Genick brechen. Und bei der Klausur (falls du dazu eins schreibst) erst recht.
 
Zuletzt bearbeitet:
Überschreiben bedeutet, dass du die beiden Methoden in deiner Klasse schreibst und entsprechend anpasst, um es grob zu formulieren. Die Methode equals soll z.B. einen bestimmten Wahrheitswert liefern, wenn zwei Objekte deiner Klasse verglichen werden. Ich glaube, dass ist ein mehr als ausreichender Hinweis dazu.

Zur Exception: ja, du solltest diese innerhalb der Methoden werfen lassen. Dazu solltest du dir Gedanken machen, wann dies überhaupt Sinn macht (wann kann es bei der Ausführung also zu ungültigen Eingaben kommen und wie verhindert man diese?). Dazu hast du die Vorgaben (der Farben) aus der Aufgabenstellung.
 
Wer denkt sich eigentlich immer wieder so dumme Aufgaben aus? :rolleyes: (Nichts gegen dich insXicht)

Die Namen der Farben sollte man nie als String speichern, wenn man mit denen Arbeiten will, sondern als Enum, oder gleich als Integer mit einem RGB-Wert. Stell dir vor, du willst deine Software internationalisieren. Dann musst du ja deinen Code umschreiben, nur damit du z.B. englische Texte anzeigen lassen kannst und genau das will man vermeiden.

Da diese Aufgabe mit Java gelöst werden soll, sollte man auch aus Objektorientierter Sicht die Variablen x und y in eine eigene Klasse stecken, da diese einen Punkt repräsentieren. Liniendicke, Linienfarbe und Fuellfarbe gehören auch in eine eigene Klasse, da diese die Eigenschaft der Darstellung repräsentieren. Angenommen du willst mit deiner Software nicht nur Quadrate zeichnen, sondern auch Dreiecke. Dann brauchst du wieder x- und y-Koordinaten und die Darstellungseigenschaften, und dafür gibt es ja die Objektorientierung, um Codeverdopplung zu vermeiden.

Wenn man lernt zu programmieren, dann sollte man es auch gleich richtig lernen, um solche Fehler schon im Vorwege zu vermeiden.
 
Gib deinen Variablen aussagekräftige Namen, damit tust du dir selbst einen Gefallen. Weist du morgen noch was dir getC() liefern würde?
 
Wieso stellst du nicht einfach konkrete Fragen zu den einzelnen Dingen, die du in der Aufgabe nicht verstehst?

Das ist kein Haus-/Übungsaufgaben-Forum. Übungsaufgaben sind zu deiner Übung da und nicht zur Übung anderer. Es wird auch keiner für dich Fahrstunden nehmen...

Du hast bestimmt andere Leute um dich rum, die die Übung auch machen müssen. Diskutiere mit denen darüber. Wende dich lieber an die oder im Worst-Case an den Aufgabensteller. Oder bekomm den Arsch hoch und informier dich selbst.

Aber andere quasi "lösen lassen" wird dich nicht weiterbringen auf Dauer.

@Darlis: Yap, is schon lustig wenn man eine Variable definiert und direkt dahinter kommentieren muss, für was die steht... vernünftige Bezeichner sind mit das wichtigste beim Programmieren, aber gerade am Anfang ist das nicht leicht :-)
 
1668mib schrieb:
Das ist kein Haus-/Übungsaufgaben-Forum. Übungsaufgaben sind zu deiner Übung da und nicht zur Übung anderer. Es wird auch keiner für dich Fahrstunden nehmen...

:daumen:
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben