tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
4
ZUGRIFFE
590
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    FipsTheThief FipsTheThief ist offline Mitglied Platin
    Registriert seit
    Oct 2004
    Ort
    Leipzig
    Beiträge
    589
    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 :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    
    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
     

  2. #2
    Avatar von matdacat
    matdacat matdacat ist offline Mitglied Platin
    Registriert seit
    Aug 2004
    Beiträge
    672
    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 :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    
    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);
         }
    }
    Geändert von matdacat (16.11.05 um 09:53 Uhr)
     

  3. #3
    FipsTheThief FipsTheThief ist offline Mitglied Platin
    Registriert seit
    Oct 2004
    Ort
    Leipzig
    Beiträge
    589
    Ah danke Dir vielmals , werd es mir gleich mal anschaun.
     

  4. #4
    Avatar von matdacat
    matdacat matdacat ist offline Mitglied Platin
    Registriert seit
    Aug 2004
    Beiträge
    672
    Und noch was: ich weiß nicht, wie eine 'Box' genau aussieht...aber die Flächenberechnung sieht unvollständig aus.
     

  5. #5
    FipsTheThief FipsTheThief ist offline Mitglied Platin
    Registriert seit
    Oct 2004
    Ort
    Leipzig
    Beiträge
    589
    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
    Geändert von FipsTheThief (16.11.05 um 10:00 Uhr)
     

Ähnliche Themen

  1. Komme mit einem SQL-Query nicht klar
    Von Snatch2001 im Forum PHP
    Antworten: 2
    Letzter Beitrag: 20.08.10, 21:46
  2. Komme mit Nested Sets nicht klar
    Von ne0hype im Forum Relationale Datenbanksysteme
    Antworten: 0
    Letzter Beitrag: 03.03.08, 19:22
  3. Antworten: 5
    Letzter Beitrag: 10.01.08, 14:15
  4. Antworten: 6
    Letzter Beitrag: 30.07.04, 17:25
  5. Komme mit C4D nicht klar, was tun ?
    Von Xeal87 im Forum Cinema 4D
    Antworten: 1
    Letzter Beitrag: 27.05.02, 22:39