Quader vergrößern

Tooltime

Mitglied
Hallo,

ich habe folgenden Java-Code bereits geschrieben:
Java:
public class Box {

	double width;
	double height;
	double length;

	public Box() {

	}


	public double getWidth() {
		return width;
	}

	public void setWidth(double width) {
		this.width = width;
	}

	public double getHeight() {
		return height;
	}

	public void setHeight(double height) {
		this.height = height;
	}

	public double getLength() {
		return length;
	}

	public void setLength(double length) {
		this.length = length;
	}

	double calculateVolume() {
		double calculateVolume = width * height * length;
		return calculateVolume;
	}

	double calculateSurfaceArea() {
		double calculateSurfaceArea = 2 * (width * height + width * length + height
				* length);
		return calculateSurfaceArea;
		
	}
		
	
	public static void main(String[] args) {
		Box box1 = new Box();
		box1.setWidth(2.4);
		box1.setHeight(3.5);
		box1.setLength(5.3);

		System.out.println("Breite:			" + box1.getWidth());
		System.out.println("Höhe:			" + box1.getHeight());
		System.out.println("Länge:			" + box1.getLength());

		System.out.println("Volumen:		" + box1.calculateVolume());
		System.out.println("Gesamtoberfläche:	" + box1.calculateSurfaceArea());
	}
}

Als nächstes soll ich eine Methode "getBiggerBox" hinzufügen, welche eine Referenz auf ein neues Box-Objekt zurückgibt. Die neue Box soll in jeder Dimension 25% größer sein als die alte Box. Die Methode wird einen Konstruktor verwenden müssen, um die neue Box zu erzeugen.

Soll so der Konstruktor aussehen?
Java:
public Box(Box bigger) {
		this.width = width*1.25;
		this.height = height*1.25;
		this.length = length*1.25;
	}
Die Methode muss doch dann auch genau über diesen Konstruktor zugreifen können. Wie kann man so etwas definieren? Und wie kann ich beim erstellen eines neuen Objektes dem Programm sagen, dass er genau immer das zuletzt genannte vergrößern soll?

Vielen Dank im Voraus.
 

minzee

Bekanntes Mitglied
Java:
public Box getBiggerBox()
{
   Box box = new Box();
   box.setWidth(width * 1.25);
   box.setHeight(height * 1.25);
   box.setLength(length * 1.25);
   return box;
}
Nicht getestet.
 

oppa

Mitglied
minzee
Java:
public Box getBiggerBox()
{
   Box box = new Box(); // <- neue Box erstellt -> neue Referenz
   box.setWidth(width * 1.25);
   box.setHeight(height * 1.25);
   box.setLength(length * 1.25);
   return box; // <- Methode vom DatenTyp Box - also muss Box auch zurückgeliefert werden
}

Ich hoffe die Kommentare machen es für Dich verständlicher.
Das ist einfach eine neue Methode, die eine neue Box zurückliefert. Dieser kannst Du auch, wenn Du willst, Parameter für die width, height ... übergeben.

Dann sehe die Methode vielleicht so aus:

Java:
public Box getBiggerBox(int width, int height, int length)
{
   Box box = new Box(); // <- neue Box erstellt -> neue Referenz
   box.setWidth(width * 1.25);
   box.setHeight(height * 1.25);
   box.setLength(length * 1.25);
   return box; // <- Methode vom DatenTyp Box - also muss Box auch zurückgeliefert werden
}
 
Zuletzt bearbeitet:

Tooltime

Mitglied
Ok, d.h. da es eine Methode ist, steht diese über "public static void main(String[] args)".
Damit diese Methode aufgerufen wird, muss ich unter meiner "box1" eine weitere Box erstellen. Wenn ich aber eine neue Box erstelle, verlangt das Programm die Eingabe von weiteren Werten für Länge, Höhe und Breite bei den setter Methoden. Daraus ergibt sich für mich die Schlussfolgerung, dass ich diese weglassen muss (sind ja auch schon in der neuen Methode definiert). Wie ruf ich jetzt meine zweite Box auf?
 

minzee

Bekanntes Mitglied
Java:
Box box1 = new Box();
box1.setWidth(2.4);
box1.setHeight(3.5);
box1.setLength(5.3);
Box box2 = box1.getBiggerBox();
Auch nicht getestet :)
 
Zuletzt bearbeitet:

oppa

Mitglied
Java:
public static void main(String[] args) {
		Box box1 = new Box();
		box1.setWidth(2.4);
		box1.setHeight(3.5);
		box1.setLength(5.3);
                
                // somit hast Du eine 25% grössere Box als box1
                Box box2 = getBiggerBox(box1.getWidth(), box1.getHeigth(), box1.getLength());

		System.out.println("Breite:			" + box1.getWidth());
		System.out.println("Höhe:			" + box1.getHeight());
		System.out.println("Länge:			" + box1.getLength());

		System.out.println("Volumen:		" + box1.calculateVolume());
		System.out.println("Gesamtoberfläche:	" + box1.calculateSurfaceArea());
	}
}


Die Methode
Code:
getBiggerBox(...) {...}
kannst Du irgendwo in dieser Klasse hinpacken, muss nicht über der main-Methode sein, da es bei Java egal ist. Wir sind ja nicht in C/C++ ^^
 
Zuletzt bearbeitet:

minzee

Bekanntes Mitglied
Das ist in deinem Beispiel keine objektorientierte Programmierung, oppa :)
Ich glaube, dass eher meine Variante gesucht ist.

Ich stelle mir diese getBiggerBox-Methode wie eine scale-Methode vor, der man ev. noch einen Faktor übergeben kann. Dann wird eine bestehende Box skaliert und als neue Box zurückgegeben.

Oder z. B. wie eine multiply-Methode bei einer Vektor-Klasse (Grafik-Programmierung), der man ein Skalar übergeben kann, und die dann einen neuen skalierten Vektor zurückgibt.
 
Zuletzt bearbeitet:

Tooltime

Mitglied
Ich danke euch beiden für die Unterstützng. Meine Box hat sich vergrößert.
Beim definieren der zweiten Box hab ich erstens immer ein "new Box" mit eingefügt und zweitens die Methode "getBiggerBox" immer in die print-Methode eingefügt.
Ist noch alles Neuland. Muss mich in der nächsten Zeit mehr damit auseinandersetzen.
 

Java20134

Bekanntes Mitglied
Was die anderen Menschen nicht wissen ist, dass du ebenso einen Konstruktor erzeugen solltest, der die Höhe, Breite und Länge übernimmt. Und dann kann man das ganze auf eine Zeile runterkürzen:
Java:
return new Box(this.getWidth()*1.25, this.getHeight()*1.25, this.getLength()*1.25);
Und du greifst außerdem nicht direkt auf die Variable zu. Was wie ich bis jetzt mitbekommen habe in Java meist angestrebt wird. Außer in einigen Situationen.

Eine gute Website, um sich weiter zu bilden ist folgende: Rheinwerk Computing :: Java ist auch eine Insel - index
Oder du kannst auch einfach deine Studentenkollegen fragen, die sich schon mit dem Thema beschäftigt haben.
 
Zuletzt bearbeitet:

minzee

Bekanntes Mitglied
Ich glaub, bei Hausaufgaben ist es besser, immer nur das zu tun, was gefordert ist. Ich hatte mal mehr gemacht, und dafür eine schlechtere Note bekommen. Der Lehrer war einfach davon ausgegangen, dass ich das, was ich programmiert hatte, gar nicht verstanden hatte. Und er hatte sich auch überhaupt keine Mühe gemacht, mich deswegen irgendwas zu fragen. Lehrer sind seltsam. Bei UNI-Übungen kann das sogar zu echten Problemen führen. Dort werden mache Uploads automatisch gecheckt.
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
B Quader Java Basics - Anfänger-Themen 4
O Array verkleinern, vergrößern Java Basics - Anfänger-Themen 1
S Methoden Feld vergrößern Java Basics - Anfänger-Themen 1
F Polygon vergrößern Java Basics - Anfänger-Themen 8
D Verhindern das repaint beim vergrößern aufgerufen wird Java Basics - Anfänger-Themen 9
J Erste Schritte Arrays vergrößern Java Basics - Anfänger-Themen 19
M Interface JFileChooser vergrößern Java Basics - Anfänger-Themen 4
F String immer weiter nach Bedarf vergrößern Java Basics - Anfänger-Themen 3
A Java Arrays immer um eins "vergrößern" Java Basics - Anfänger-Themen 4
M Ziffer einträge vergrößern Java Basics - Anfänger-Themen 16
E JTextArea beim Schreiben automatisch vergrößern Java Basics - Anfänger-Themen 7
P JLabel auf JFrame - Schrift vergrößern Java Basics - Anfänger-Themen 2
T Array vergrößern Java Basics - Anfänger-Themen 6
L JPanel vergrößern bis JScrollPane nicht mehr zu sehen Java Basics - Anfänger-Themen 7
K Grafik vergrößern/verkleinern Java Basics - Anfänger-Themen 3
C Array vergrößern? Java Basics - Anfänger-Themen 8
S Dialog dynamisch vergrößern Java Basics - Anfänger-Themen 2
Z Array vergrößern Java Basics - Anfänger-Themen 15
B arrays dynamisch vergrößern Java Basics - Anfänger-Themen 5
N Applet Heap vergrößern Java Basics - Anfänger-Themen 10
G heap size vergrößern Java Basics - Anfänger-Themen 6
G zweidimensionales Array vergrößern Java Basics - Anfänger-Themen 3
D Array vergrößern Java Basics - Anfänger-Themen 7
S JPanel im nachhinein vergrößern? Java Basics - Anfänger-Themen 7
B Array im Nachhinein vergrößern? Java Basics - Anfänger-Themen 3
E Textfelder vergrößern Java Basics - Anfänger-Themen 11
N JPanel / JTextArea vergrößern Java Basics - Anfänger-Themen 6
G array vergrößern Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben