was zum tüffteln ;-)

Status
Nicht offen für weitere Antworten.
G

Gerhard

Gast
Habe vor kurzem einen Test in Technischer Informatik geschrieben. Folgender Code war vorgegeben:

Code:
class Getränk{
    private String name;

    Getränk(String n){
          name = n;
    }
}

public class Test03{
      Getränk getr;
      Cola col;

      Test03(){
            getr = new Getränk("Wasser");
            col = new Cola("Pepsi", 2500);
      }
}

class Cola extends Getränk{
     protected double zuckerGehalt;

     Cola(String n; double zg){
           super(n);
           setZuckerGehalt(zg);
     }

     void setZuckerGehalt(double zg){
           if(zg>2000)
            zuckerGehalt = zg;
     }
}

Nun hatten wir zur Aufgabenstellung die Klasse Cola um eine Konstante WARN_SCHWELLE(Wert: 3000) zu erweitern, in der Klasse Cola eine Methode zu implementieren die alle Eigenschaften auf den Bildschirm ausgibt. Dann sollte zusätzlich "Achtung: Sehr ungesund" ausgegeben werden, wenn der Wert von "zuckerGehalt" größer als WARN_SCHWELLE ist. und dann sollte noch eine main-Methode implementiert werden, die ein Objekt vom Typ Test03 erzeugt und den Inhalt des in diesem Objekt enthaltenen Cola-Objektes auf den Bildschirm ausgibt!!

Nun kam unser Prof. dahinter, das eine dieser Aufgabenstellungen nicht realisierbar ist! Wer kann mir den Grund sagen warum eine Aufgabenstellung nicht realisierbar ist und mir die Codeteile, die neu dazukommen mitteilen!! Würde mich sehr darüber freuen wenn es jemand zustande bringen würde und mir später noch erklären könnte warum ein Teil nicht realisierbar ist!!! VIELEN DANK IM VORRAUS!!

mfg -=C@N!zARۤ=-
 

jptc.org

Bekanntes Mitglied
was heisst in deiner frage: alle Eigenschaften auf den Bildschirm ausgeben? wenn Du meinst name + zuckergehalt, so hast du wirklich ein problem. der zuckergehalt wird direkt in der klasse cola gespeichert, so dass du den wert auch ausgeben kannst. der name des getränks wird in der klasse getränk gespeichert und über den konstruktor gesetzt. die variable name in Getränk ist privat und kann so nur innerhalb von getränk benutzt werden. der zugriff von cola auf name in getränk ist im gegebenen bsp. nicht möglich. (in getränk kann man den accessor ändern - protected, oder eine getter-methode die protected ist anlegen).

Karsten Voigt
http://www.java-performance-portal.org
 
G

Gerhard

Gast
Ja genau so ist es!!!!
Habe während des Test's voll lange getüfftelt und bin aber nicht dahinter gekommen!! name kann nicht ausgegeben werden da sie private ist!! kann ich aber trotzdem irgendwie auf sie zugreifen oder ist diese Fragestellung überhaupt nicht realisierbar!!! denn wenn dies so ist bekomme ich auf meinen test noch einige punkte hinzu!! Oder MUSS man den accessor ändern?? Geht es nicht auch ohne ihn zu ändern??!!

Würde mich sehr freuen wenn du mir dies auch beantworten könntest!!! VIELEN DANK!!!
 

mariopetr

Bekanntes Mitglied
wie waere es den simplerweise mit Object.toString() zu ueberschreiben? das geht auch ohne "tuefteln" und man ruft einfach System.out(getraenk.toString()) auf.
 

jptc.org

Bekanntes Mitglied
aber um den namen von getränk zu bekommen, muss man auch die klasse getränk ändern. ein toString() auf die aktuelle Klasse würde zu einer illustren Ausgabe der Objectreferenz, aber nicht des Namens. OHNE ÄNDERUNG an der Klasse Getränk kann keine Ausgabe des Namens erfolgen.

(OK - man kann über Reflection und durch umbiegen des SecurityManagers wahrscheinlich über Umwege auf name zugreifen - aber ich würde sowas nicht mal versuchen)

Karsten Voigt
http://www.java-performance-portal.org
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Oben