Beispiel 5.3

  • ich hab mich auch stundenlang herumgequält, bis ich drauegkommen bin, dass das mit dem überladen genau so funktioniert wies superlufti geschrieben hat.


    in den folien der 7. vorlesung stehts auf seite 35 unten.
    ich nehme mal an, das passt so.

    einfach nur genial: wenn man im wort "Mama" 4 buchstaben ändert, dann hat man auf einmal "Bier"

  • ...

    instance DreiDimFigur (Kugel) where
    volumen (Ku d) = truncate(4/3*r*r*r*my_pi)
    where r = d/2


    soll man jetzt truncate oder floor benutzen fuer negative zahlen geben die andere resultate? aber es sollten ja keine negativen zahlen kommen oder?
    :rolleyes:


    On the path from Node m to Node n, hums Waikiki to the "Smack my Dijkstra up" song... na-na-naaaa :devil:

  • In der Angabe steht:

    Quote

    gerundet auf die größte ganze Zahl kleiner oder gleich dem mit Gleitkommazahlen berechneten Wert


    Das ist meiner Meinung nach floor und nicht truncate. Aber nachdem ja keine negativen Zahlen kommen sollten, ist es wohl egal, was man verwendet.

  • Ja genau so hab ichs auch. Nur was bringt der Kontext hier?
    "class GeoFigur a => DreiDimFigur a where" was bewirkt das?


    Wenn ich das "GeoFigur a =>" weglass, funktionierts genauso.


    das stellt dir sicher, dass jede instanz von DreiDimFigur auch die Operationen von GeoFigur bereitstellt (nämlich umfang und flaeche), sprich, dass DreiDimFigur wirklich ein Untertyp von GeoFigur ist.

    hi, i'm a signature virus. copy me into your signature to help me spread.

  • das stellt dir sicher, dass jede instanz von DreiDimFigur auch die Operationen von GeoFigur bereitstellt (nämlich umfang und flaeche), sprich, dass DreiDimFigur wirklich ein Untertyp von GeoFigur ist.


    Aber ich instanziere von DreiDimFigur doch nur das Volumen? Nach meinem Verständnis sollte die Vererbung doch so aussehen:


    instance DreiDimFigur Kugel where
    volumen (Ku k) = floor (4*r*r*r*3.14/3) where r = k/2
    umfang (Ku k) = umfang (Kr r) where r = k/2
    ...


    Und das geht eben nicht, weil: No member "umfang" in class "DreiDimFigur"