Calocybe: Erstellen eines Objekts

Beitrag lesen

Hallo Lorenz!   (<-- Begruessungen sind zur Zeit total trendy *g*)

Wir machen einen Fernkurs über Javascript, können aber leider nicht die nachfolgende Aufgabe lösen.

Klingt eher wie ne Schulaufgabe...  Und merke: Fast alles gab es schon mal hier und findet sich im Archiv. Als Anregung kannst Du ja mal nach <../../sfarchiv/1999_4/t08295.htm> schauen. Aber da Du Dir ja schon selber Gedanken gemacht hast, will ich mal nicht so sein.

function Rechteck(hoehe,breite)
{

»»  this.x=hoehe;
»»  this.y=breite;
»»  this.f=hoehe*breite;

}
function Flaeche()
{

»»  Flaeche=hoehe*breite

}

r=new Rechteck(10,200)
  document.write("Hoehe:"+r.x+"<br>")

»»  document.write("Breite:"+r.y+"<br>")
»»  r.flaeche

1. Du berechnest die Flache schon im Konstruktor, aber auch noch mal in Flaeche(). Entscheide Dich fuer eines. Der bessere Weg ist wahrscheinlich, die Flaeche erst zu berechnen, wenn sie gebraucht wird, da sie sonst auch bei jeder Aenderung der Ausmasse des Rechtecks neu berechnet werden muesste, was schon wieder eine Fehlerquelle ist, denn laut Murphy's Law vergisst Du es garantiert einmal.

2. Zugriff von aussen auf objektinterne Daten ist bad style! Defuer definiert man Zugriffesmethoden, also z.B. GetHeight und GetWidth.

function Rechteck(hoehe, breite) {
    this.x = hoehe;
    this.y = breite;
    this.SetHeight  = Rechteck_SetHeight;
    this.GetHeight  = Rechteck_GetHeight;
    this.SetWidth   = Rechteck_SetWidth;  
    this.GetWidth   = Rechteck_GetWidth;
    this.GetFlaeche = Rechteck_GetFlaeche;
}

function Rechteck_SetHeight(new_height) { this.x = new_height; }
function Rechteck_SetWidth(new_width)   { this.y = new_width;  }
function Rechteck_GetHeight() { return this.x; }
function Rechteck_GetWidth()  { return this.y; }

function Rechteck_GetFlaeche() {
    return this.x * this.y;
}

r = new Rechteck(10. 200);
document.write("Hoehe: "   + r.GetHeight()  + "<br>");
document.write("Breite: "  + r.GetWidth()   + "<br>");
document.write("Flaeche: " + r.GetFlaeche() + "<br>");

Uebrigens ist der Titel eines Postings dazu da, den Inhalt treffend zusammenzufassen. "Schwierige Aufgabe" ist nicht nur falsch (ist naemlich gar nicht schwierig ;-) ), sondern auch alles andere als beschreibend.

So long