BlueJ Vererbung

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • BlueJ Vererbung

    Hallo :D

    ich heiße Marcel und besuche ein Gymnasium in der Eph. Leider kann ich mich mit dem Fach Informatik nicht so leicht anfreunden ;) wir bekommen wöchentlich Aufgaben gestellt die aus einem Fragen-Teil und einer Programmieraufgabe bestehen. Vor kurzen hatte ich eine Mandelentzündung und habe dadurch zwei wochen gefehlt, unser Lehrer war die Letzten Stunden nicht da und gab uns als Aufgabe, die gegebenen Aufgaben zu bearbeiten und Hochzuladen. Dadurch kann ich die Aufgaben meist nur über Google lösen, aber fast immer kommt dabei nicht sehr viel bei raus. Deswegen hoffe ich, dass ihr mir helfen könnt :)

    Es wäre wirklich super nett von euch mir dabei zu helfen :)

    Die Aufgaben für diese Woche lauten:




    Wochenaufgaben - Blatt 7 GK Eph IF - Sa


    für die Zeit vom 2.11.10 bis 7.11.10




    Aufgabe 14 - Fragen



    1. Beschreibe, was man in der Programmierung unter


    "Vererbung" versteht und wozu "Vererbung" nützlich ist.



    2. Folgendes Beispiel zeigt die Programmierung einer Klasse, die von einer


    anderen Klasse erbt. Warum kann der Stift mit "this" angesprochen


    werden? Warum muss kein Bildschirm und kein normaler Stift erzeugt


    werden?



    Aufgabe 15 (Programmieraufgabe)
    · Programmiere eine Klasse "Spezialstift", die alle Methoden der


    Klasse "
    Buntstift" enthält und zusätzlich folgende Methoden bietet:


    ·
    zeichneStern(int kantenlaenge)


    Diese Methode zeichnet an der aktuellen Position des Stiftes einen


    gelben
    Stern mit der Kantenlänge "kantenlaenge".


    ·
    zeichneGefuelltenKreis(int radius, int f)


    Diese Methode zeichnet an der aktuellen Position des Stiftes einen
    [b]

    ausgefüllten
    Kreis in der Farbe, die als Parameter f übergeben wird.


    ·
    resetStift()


    Diese Methode setzt den Stift in den Ursprungszustand zurück (Winkel,


    Position, Farbe, etc.)
    · Programmiere eine weitere Klasse mit dem Namen


    "Spezialstifttest". Diese soll als Stift die zuvor programmierteKlasse "Spezialstift" benutzen. Teste mit der Klasse


    "Spezialstifttest" die in der Klasse "Spezialstift"


    programmierten Methoden.[b]



    Lade die Lösung aller Aufgaben wie gewohnt in Moodle hoch! Die Abgabe
    besteht aus drei Text-Dateien (A14, A15 "Spezialstift" und "Spezialstifttest").
    [/b]
    [/b]
    Dateien

    Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von Marcel Porsche ()

  • Das hab ich jetzt geschrieben aber da ist irgendein Fehler drin. Könnt ihr bitte einmal nachschauen :)

    Danke schonmal im vorraus ;)

    Quellcode

    1. import sum.kern.*;
    2. /**
    3. * @M.Porsche * @version 1.0
    4. */
    5. public class Spezialstift extends Buntstift
    6. {
    7. // Objekte
    8. Bildschirm derBildschirm;
    9. Spezialstift meinStift;
    10. // Konstruktor
    11. public Spezialstift()
    12. {
    13. derBildschirm = new Bildschirm(400,400);
    14. meinStift = new Spezialstift();
    15. }
    16. public void zeichneGefuelltenKreis(int radius, int f)
    17. {
    18. meinStift.zeichneGefuelltenKreis(radius,f);
    19. }
    20. public void zeichneStern(int zackenlaenge)
    21. {
    22. meinStift.setzeFarbe(Farbe.GELB);
    23. meinStift.setzeFuellmuster(Muster.GEFUELLT);
    24. meinStift.dreheBis(180);
    25. meinStift.runter();
    26. meinStift.bewegeUm(zackenlaenge);
    27. meinStift.dreheUm(144);
    28. meinStift.bewegeUm(zackenlaenge);
    29. meinStift.dreheUm(-72);
    30. meinStift.bewegeUm(zackenlaenge);
    31. meinStift.dreheUm(144);
    32. meinStift.bewegeUm(zackenlaenge);
    33. meinStift.dreheUm(-72);
    34. meinStift.bewegeUm(zackenlaenge);
    35. meinStift.dreheUm(144);
    36. meinStift.bewegeUm(zackenlaenge);
    37. meinStift.dreheUm(-72);
    38. meinStift.bewegeUm(zackenlaenge);
    39. meinStift.dreheUm(144);
    40. meinStift.bewegeUm(zackenlaenge);
    41. meinStift.dreheUm(-72);
    42. meinStift.bewegeUm(zackenlaenge);
    43. meinStift.dreheUm(144);
    44. meinStift.bewegeUm(zackenlaenge);
    45. meinStift.hoch();
    46. }
    47. public void resetStift()
    48. {
    49. meinStift.hoch();
    50. meinStift.bewegeBis(0,0);
    51. meinStift.dreheBis(O);
    52. meinStift.setzeFarbe(Farbe.SCHWARZ);
    53. }
    54. // Dienste
    55. public void fuehreAus()
    56. {
    57. // Aktionsteil
    58. meinStift.bewegeBis(200,200);
    59. this.zeichneStern(20);
    60. this.zeichneGefuelltenKreis(50,Farbe.ROT);
    61. this.resetStift();
    62. // Aufraeumen
    63. meinStift.gibFrei();
    64. derBildschirm.gibFrei();
    65. }
    66. }
    Alles anzeigen

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Marcel Porsche ()

  • Den Fehler kann ich dir leider nicht nennen (nich gefunden). Was läuft denn nicht, was sagt dir der compiler?
    Die Fragen solltest du ganz gut googeln können.
    mfg Zwergling

    Btw: wenn du beim schreiben des Posts Unter syntax die Kaffetasse anklickst und den code in die erstelllten tags setzt lässt sich dein code besser lesen.
    Sieht dann etwa so aus:

    Quellcode

    1. public void zeichneGefuelltenKreis(int radius, int f)
    2. {
    3. meinStift.zeichneGefuelltenKreis(radius,f);
    4. }

    Und gut wäre es auch wenn du den code einrücken würdest

    P.P.S:
    Vererbung
    P.P.P.S:
    In Zeile 61 musst du einen int übergeben, statt einer 0(null) hast du aber ein "O" (buchstabe zwischen i und p) übergeben.
    P.P.P.P.S:
    Überleg mal was der Konstruktor in deinem Programm genau macht, dann wirst du auf problem 2 kommen (öffnen tausender fenster).
    Wahlweise kannst du auch meine Posts durchsuchen hab den Fehler auch schon gemacht :P

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Zwergling ()

  • Dankeschön :D

    Danke für den Tipp ^^
    Für den Stern hab ich nochmal die Winkel überarbeitet und einen symmetrischen Stern hinbekommen :P Ich weiß gar nicht wie ich es geschafft hab da ein"O" hin zu bekommen 8) In deinen Posts hab ich gelesen, dass du einen Namen doppelt benutzt hast, aber ich weiß nicht genau, was ich im Konstruktor ändern soll ?( Nennt mas soetwas dann Endlosschleife?

    Quellcode

    1. import sum.kern.*;
    2. /**
    3. * @M.Porsche
    4. * @version 1.0
    5. */
    6. public class Spezialstift extends Buntstift
    7. {
    8. // Objekte
    9. Bildschirm derBildschirm;
    10. Spezialstift meinStift;
    11. // Konstruktor
    12. public Spezialstift()
    13. {
    14. derBildschirm = new Bildschirm(400,400);
    15. meinStift = new Spezialstift();
    16. }
    17. public void zeichneGefuelltenKreis(int radius, int f)
    18. {
    19. meinStift.zeichneGefuelltenKreis(radius,f);
    20. }
    21. public void zeichneStern(int zackenlaenge)
    22. {
    23. meinStift.setzeFarbe(Farbe.GELB);
    24. meinStift.setzeFuellmuster(Muster.GEFUELLT);
    25. meinStift.dreheBis(180);
    26. meinStift.runter();
    27. meinStift.bewegeUm(zackenlaenge);
    28. meinStift.dreheUm(108);
    29. meinStift.bewegeUm(zackenlaenge);
    30. meinStift.dreheUm(324);
    31. meinStift.bewegeUm(zackenlaenge);
    32. meinStift.dreheUm(108);
    33. meinStift.bewegeUm(zackenlaenge);
    34. meinStift.dreheUm(324);
    35. meinStift.bewegeUm(zackenlaenge);
    36. meinStift.dreheUm(108);
    37. meinStift.bewegeUm(zackenlaenge);
    38. meinStift.dreheUm(324);
    39. meinStift.bewegeUm(zackenlaenge);
    40. meinStift.dreheUm(108);
    41. meinStift.bewegeUm(zackenlaenge);
    42. meinStift.dreheUm(324);
    43. meinStift.bewegeUm(zackenlaenge);
    44. meinStift.dreheUm(108);
    45. meinStift.bewegeUm(zackenlaenge);
    46. meinStift.hoch();
    47. }
    48. public void resetStift()
    49. {
    50. meinStift.hoch();
    51. meinStift.bewegeBis(0,0);
    52. meinStift.dreheBis(0);
    53. meinStift.setzeFarbe(Farbe.SCHWARZ);
    54. }
    55. // Dienste
    56. public void fuehreAus()
    57. {
    58. // Aktionsteil
    59. meinStift.bewegeBis(200,200);
    60. this.zeichneStern(20);
    61. this.zeichneGefuelltenKreis(50,Farbe.ROT);
    62. this.resetStift();
    63. // Aufraeumen
    64. meinStift.gibFrei();
    65. derBildschirm.gibFrei();
    66. }
    67. }
    Alles anzeigen
  • passiert bei mir auch, aber leider kann ich dir nicht sagen wo das Problem ist, da muss dir ein andrer hier im Forum helfen.

    Edit: wenn ich richtig ergooglet hab könnte der Fehler sein, das ein erwarteter Wert "null" ist, also du noch ein andrer Wert übergeben werden muss, aber wie du dein Problem lößt, weiß ich nicht.

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von Zwergling ()

  • Direkt in Zeile 28, zumindest wenn ich den stern zeichnen lasse, allerdings scheint das Problem generell aufzutreten.

    Und was mir noch aufgefallen ist, du übergibst bei zeichneGefuelltenKreis als Farbe einen int, müsste das nicht ein string sein? Und ich find die Methode zeichneGefuelltenKreis(int radius, int farbe) nicht in der Dokumentation. Sicher, dass du das in Zeile 18 so machen kannst?


    Edit: Ich find da nur

    Quellcode

    1. zeichneKreis(double pRadius)
    in der Doku von Buntstift.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Zwergling ()