Komme mit der Aufgabe nicht so klar

FipsTheThief

Erfahrenes Mitglied
Also ich bin eben dabei mir Java mittels Learning by Doing bei zu bringen.

Dafür habe ich ein Tutorial und die AUfgabenstellung lautet am Ende :

Es wäre schön eine Box zu erzeugen, die größer ist als eine gegebene Box. Schreiben Sie diese Methode:

public Box groessereBox()

Das ist eine öffentliche Methode, die eine Referenz auf ein neues Box-Objekt zurückgibt. Die neue Box wird 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:

public Box groessereBox()
{

return new Box( 1.25 * this.breite, ...... )
}

Das Schlüsselwort this bezieht sich auf das Objekt, das diese Methode aufruft. Es muss nicht mit angegeben werden und dient nur der besseren Verständlichkeit. Schreiben Sie jetzt eine Methode, die eine Box zurückgibt, die in jeder Dimension 25% kleiner ist als eine gegebene Box. Schreiben Sie wie üblich ein Testprogramm, um Ihre Klasse zu testen.

Was ich bisher habe funktioniert soweit zwar nun , aber auf einen anderen Wege indem ich eine Refferenz (?) von der alten Box erzeugt habe.

Code:
class Box2{

  // Instanz Variablen
     private double laenge;
     private double hoehe;
     private double breite;
     
     Box2(double l,double h,double b){
     
        laenge = l;
	hoehe  = h;
	breite = b;
     
     }
     
     public double Flaeche(){
     
       return laenge*hoehe + laenge*breite + breite*hoehe;
          
     }
     
     public double Volumen(){
        
        return laenge*hoehe*breite;
     } 
     
     public void groessereBox(){
        laenge += (laenge * 25)/100;
        breite += (breite * 25)/100;
        hoehe  += (hoehe * 25)/100;
     }
}

class TestBox2{

   public static void main(String[] args){
   
      // Volumen und Fläche berechnen 
   
      Box2 box = new Box2(20,10,15);
      System.out.println(box.Volumen());
      System.out.println(box.Flaeche());
      
      Box2 x = box;
      x.groessereBox();
      System.out.println(x.Volumen());
      System.out.println(x.Flaeche());
    }     
}

Klar da fehlt der 2. Konstruktor der Klasse Box und diese Methode

public Box groessereBox()
{

return new Box( 1.25 * this.breite, ...... )
}

existiert ja gleich mal gar nicht , zumal ich da gar nicht erst durchsteige ;)
 
Bist ja eh fast am Ziel! :)
Du sollst keinen zweiten Konstruktor schreiben, sondern den vorhandenen Konstruktor nutzen, um die neue Box zu erzeugen. Alles, was in groessereBox() gemacht wird, ist folgendes: die Dimensionen des Boxobjekts werden alle mit 1,25 multipliziert, dann dem Konstruktor übergeben, um eine Box mit den neuen Werten zu erstellen.

Code:
public class Box{

  // Instanz Variablen
     private double laenge;
     private double hoehe;
     private double breite;
     
     Box(double l,double h,double b){
     
        laenge = l;
	hoehe  = h;
	breite = b;
     
     }
     
     public double Flaeche(){
     
       return laenge*hoehe + laenge*breite + breite*hoehe;
          
     }
     
     public double Volumen(){
        
        return laenge*hoehe*breite;
     } 
     
     public Box groessereBox(){
        double laengeNeu = laenge * 1.25;
        double breiteNeu = breite * 1.25;
        double hoeheNeu  = hoehe * 1.25;
        return new Box(laengeNeu,breiteNeu,hoeheNeu);
     }
}
 
Zuletzt bearbeitet:
Und noch was: ich weiß nicht, wie eine 'Box' genau aussieht...aber die Flächenberechnung sieht unvollständig aus.
 
Mhm jops hast recht müsste alles nochmal verdoppeln also jede einzelne Berechnung, da die Flächen ja immer 2 mal exisitieren. Aber da es nur ein Test oder eine Übung ist , kann man das, denk ich mal , auch vernachlässigen :)
 
Zuletzt bearbeitet:
Zurück