Waage mit BlueJ erstellen

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

  • Waage mit BlueJ erstellen

    Hallo liebe Mitglieder,

    Und zwar hab ich folgende Aufgabe zu erledigen:

    Digitale Waagen
    Heutzutage gibt es digitale Körpergewicht-Waagen zum Schleuderpreis. Um in diesem Markt etwas Besonderes
    bieten zu können, wollen wir eine Java-Klasse schreiben, deren Exemplare in einer modernen Waage zum Einsatz
    kommen sollen und den Besitzer über seinen Fortschritt bei der Gewichtskontrolle informieren.

    3.2.1 Legt ein neues Projekt Fitness an und darin eine neue Klasse Waage. Diese soll über einen Konstruktor
    verfügen, der das aktuelle Körpergewicht der Person als Parameter mit dem Typ int entgegennimmt und
    in einer Exemplarvariablen _letztesGewicht hinterlegt. Macht Euch Gedanken darüber, in welcher Einheit
    ihr das Gewicht speichern wollt, beispielsweise Gramm oder Kilogramm. Macht dies für Klienten
    deutlich, indem ihr wie immer entsprechende Schnittstellen-Kommentare schreibt!

    3.2.2 Schreibt eine Methode void registriere(int neuesGewicht). Diese wird jedes Mal aufgerufen,
    wenn der Besitzer sich erneut wiegt, und bekommt das Ergebnis der physischen Messung übergeben. In
    der Methode soll festgestellt werden, ob sich das Gewicht seit der letzten Messung verändert hat. Diesen
    Trend sollt ihr im Zustand des Exemplars festhalten. Implementiert anschließend eine parameterlose Methode
    gibTrend mit dem Ergebnistyp int, welche folgendes zurückgeben soll:
    -1, falls der Besitzer leichter geworden ist
    +1, falls er schwerer geworden ist
    0 sonst

    3.2.3 Implementiert zwei weitere parameterlose Methoden gibMinimalgewicht und gibMaximalgewicht,
    die als Ergebnis vom Typ int die extremen Messwerte der bisherigen Messreihe eines Objekts zurückgeben.

    3.2.4 Zusatzaufgabe: Implementiert eine parameterlose Methode gibDurchschnittsgewicht, die durchschnittliche
    Gewicht über alle Messungen eines Objekts bildet und diesen als Ergebnistyp int zurückgibt.

    Und hier erstmal mein Quellcode:

    Quellcode

    1. /**
    2. * Eine Klasse, die eine Waage implementiert.
    3. * Diese Klasse dient als digitale Waare, welche dem Benutzer über seinen Fortschritt bei der
    4. * Gewichtskontrolle informiert.
    5. *
    6. * @author MaTo
    7. * @version 09.11.2010
    8. */
    9. public class Waage
    10. {
    11. //Das aktuelle Körpergewicht in Kg.
    12. private int _aktuellesGewicht;
    13. //Das Gewicht der letzten Messung in Kg.
    14. private int _letztesGewicht;
    15. //Zeigt an ob du abgenommen oder zugenommen hast.
    16. private int _gibTrend;
    17. //Zeigt dir dein bisheriges Maximalgewicht an.
    18. private int _gibMaximalgewicht;
    19. //Zeigt dir das bisherige Minimalgewicht an.
    20. private int _gibMinimalgewicht;
    21. /**
    22. * Gib dein aktuelles Gewicht ein.
    23. * @param Gewicht der Person.
    24. */
    25. public void registriereGewicht(int neuesGewicht)
    26. {
    27. _letztesGewicht = _aktuellesGewicht;
    28. _aktuellesGewicht = neuesGewicht;
    29. }
    30. /**
    31. * Zeigt an ob die Person zu/abgenommen hat.
    32. * @return den Trend des Körpergewichts.
    33. */
    34. private int _gibTrend()
    35. {
    36. int _gibTrend = 0;
    37. if (_aktuellesGewicht < _letztesGewicht)
    38. {
    39. _gibTrend = -1;
    40. }
    41. if (_aktuellesGewicht > _letztesGewicht)
    42. {
    43. _gibTrend = 1;
    44. }
    45. if (_aktuellesGewicht == _letztesGewicht)
    46. {
    47. _gibTrend = 0;
    48. }
    49. return _gibTrend;
    50. }
    51. private int _gibMaximalgewicht()
    52. {
    53. int _gibMaximalgewicht;
    54. if (_letztesGewicht < _aktuellesGewicht)
    55. {
    56. _gibMaximalgewicht = _aktuellesGewicht;
    57. }
    58. else
    59. {
    60. _gibMaximalgewicht = _letztesGewicht;
    61. }
    62. return _gibMaximalgewicht;
    63. }
    64. private int _gibMinimalgewicht()
    65. {
    66. int _gibMinimalgewicht = 0;
    67. if (_gibMinimalgewicht > _aktuellesGewicht)
    68. {
    69. _gibMinimalgewicht = _aktuellesGewicht;
    70. }
    71. return _gibMinimalgewicht;
    72. }
    73. }
    Alles anzeigen


    Bis zur Aufgabe 3.2.2 sollte alles korrekt sein. So nun mein Problem: Wenn ich das Objekt Waage erzeuge und Doppelklicke, dann bekomme ich eine Ansicht mit verschiedenen Methoden. Allerdings zeigt mir _gibTrend nichts an nachdem ich z.b. 100 eingebe.
    Wenn ich private int _gibTrend() als public setze, dann kann ich an der Schnittstelle der Methode _gibTrend wählen und es funktioniert. Wenn ich 50 eingebe und danach 70, dann zeigt er mir +1 an. Umgekehrt zeigt er mir -1 an. Genau so wie ich das haben will... Allerdings sollte alles in der Tabelle geschehen ohne das der Benutzer das selbst auswählen kann.
    Wie stelle ich das an?
    Bei den folgenden Aufgaben hab ich mir iwas zusammengereimt was überhaupt nicht hinhaut. Wie gehe ich da vor?

    PS: Was muss ich machen damit der Java Text mit einem "show" Button aufgeklappt wird?

    Vielen Dank schonmal im Vorraus :)

    LG

    MaTo
  • Hallo und danke für deine Antwort.

    Mit der Tabelle meine ich wenn ich in BlueJ "new Waage" erstelle und das Objekt Waage inspiziere, dann erhalte ich eine Tabelle mit verschiedenen Methoden. In meinem Fall wären das:

    Quellcode

    1. //Das aktuelle Körpergewicht in Kg.
    2. private int _aktuellesGewicht;
    3. //Das Gewicht der letzten Messung in Kg.
    4. private int _letztesGewicht;
    5. //Zeigt an ob du abgenommen oder zugenommen hast.
    6. private int _gibTrend;
    7. //Zeigt dir dein bisheriges Maximalgewicht an.
    8. private int _gibMaximalgewicht;
    9. //Zeigt dir das bisherige Minimalgewicht an.
    10. private int _gibMinimalgewicht;


    Hier mal ein Screen. Ich meine das rote Kästchen.

    Jedoch möchte ich erzielen, dass wenn ich ein Gewicht eingebe und dann das darauffolgende Gewicht eingebe er mir eine Tendenz anzeigt. Wenn ich zugenommen habe, dann soll die Tendenz 1 erscheinen. Sollte ich weniger wiegen als das letzte Gewicht so soll er mir -1 anzeigen.
    Wenn ich die Methode später:

    Quellcode

    1. private int _gibTrend()
    2. {
    3. int _gibTrend = 0;
    4. if (_aktuellesGewicht < _letztesGewicht)
    5. {
    6. _gibTrend = -1;
    7. }
    8. if (_aktuellesGewicht > _letztesGewicht)
    9. {
    10. _gibTrend = 1;
    11. }
    12. if (_aktuellesGewicht == _letztesGewicht)
    13. {
    14. _gibTrend = 0;
    15. }
    16. return _gibTrend;
    17. }
    Alles anzeigen

    Als public setze, sodass ich das in meiner Methodenauswahl habe. Sprich wenn ich auf das Objekt mit einem Rechtsklick anklicke, dann erscheint die Methode zur Auswahl. Das funktioniert auch, allerdings möchte ich das es im Hintergrund passiert. Also das er mir das in der Inspektion (Tabelle) automatisch anzeigt.

    Zu den folgenden Aufgaben, wollte ich halt einbauen, dass die Waage automatisch mein Maximalgewicht speichert. Selbiges gilt für das Minimalgewciht. Dieser sollte also beibehalten werden und es sollte sich diese Werte merken. Ich weiß jetzt nicht genau wie ich das anstelle.
    Die Waage sollte allein ermitteln können wann das Maximalgwicht und das Minimalgewicht ist und diesen anzeigen und speichern, bis wieder ein höheres Maximalgewicht erreicht ist, bzw. ein niedrigeres Minimalgewicht erreicht ist.

    Hoffe ich konnte mich jetzt etwas deutlicher ausdrücken.

    Mein "PS" bezog sich nicht auf meine Porgrammierung, sondern auf das Forum. Wie ich es anstelle dass der PHP Text durch auf und zuklappen angezeigt wird. Sollte nur zur Übersichtlichkeit des Threads dienen :)

    LG

    MaTo
  • MaTo schrieb:

    Zu den folgenden Aufgaben, wollte ich halt einbauen, dass die Waage automatisch mein Maximalgewicht speichert. Selbiges gilt für das Minimalgewciht. Dieser sollte also beibehalten werden und es sollte sich diese Werte merken. Ich weiß jetzt nicht genau wie ich das anstelle.
    Die Waage sollte allein ermitteln können wann das Maximalgwicht und das Minimalgewicht ist und diesen anzeigen und speichern, bis wieder ein höheres Maximalgewicht erreicht ist, bzw. ein niedrigeres Minimalgewicht erreicht ist.


    Du könntest immer wenn ein neues Gewicht angegeben wird mit "if" prüfen ob das neue Gewicht größer ist als das maximalgewicht und dann das maximalgewicht überschreiben. Selbiges auch mit dem Minimalgewicht. Oder wo liegt da dein Problem?
  • Hallo,

    Ich habs jetzt endlcih hinbekommen. Musste fast den ganzen Quellcode ändern, aber ich habs jetzt so wie ichs wollte...
    Für alle denen es interessiert hier der Quellcode:

    Quellcode

    1. /**
    2. * Eine Klasse, die eine Waage implementiert.
    3. * Diese Klasse dient als digitale Waare, welche dem Benutzer über seinen Fortschritt bei der
    4. * Gewichtskontrolle informiert.
    5. *
    6. * @author *****
    7. * @version *****
    8. */
    9. public class Waage
    10. {
    11. //Das aktuelle Körpergewicht in Kg.
    12. private int _aktuellesGewicht;
    13. //Das Gewicht der letzten Messung in Kg.
    14. private int _letztesGewicht;
    15. //Zeigt an ob du abgenommen oder zugenommen hast.
    16. private int _gibTrend;
    17. //Zeigt dir dein bisheriges Maximalgewicht an.
    18. private int _gibMaximalgewicht;
    19. //Zeigt dir das bisherige Minimalgewicht an.
    20. private int _gibMinimalgewicht;
    21. /**
    22. * Gib dein aktuelles Gewicht ein.
    23. * @param Gewicht der Person.
    24. */
    25. public Waage(int startGewicht)
    26. {
    27. _aktuellesGewicht = startGewicht;
    28. _letztesGewicht = _aktuellesGewicht;
    29. _gibMinimalgewicht = startGewicht;
    30. _gibMaximalgewicht = startGewicht;
    31. }
    32. /**
    33. * Zeigt an ob die Person zu/abgenommen hat.
    34. */
    35. public void _gibTrend(int neuesGewicht)
    36. {
    37. }
    38. /**
    39. * Berechnet das Maximalgewicht, sowie das Minimalgewicht.
    40. */
    41. public void berechneExtremwerte()
    42. {
    43. if (_gibMinimalgewicht > _aktuellesGewicht)
    44. {
    45. _gibMinimalgewicht = _aktuellesGewicht;
    46. }
    47. else if (_gibMaximalgewicht < _aktuellesGewicht)
    48. {
    49. _gibMinimalgewicht = _aktuellesGewicht;
    50. }
    51. }
    52. /**
    53. * Regestriert die Eingaben.
    54. */
    55. public void registriere (int neuesGewicht)
    56. {
    57. if (neuesGewicht > _aktuellesGewicht)
    58. {
    59. _gibTrend = +1;
    60. }
    61. else if (neuesGewicht < _aktuellesGewicht)
    62. {
    63. _gibTrend = -1;
    64. }
    65. else
    66. {
    67. _gibTrend = 0;
    68. }
    69. _letztesGewicht = _aktuellesGewicht;
    70. _aktuellesGewicht = neuesGewicht;
    71. _gibTrend (neuesGewicht);
    72. berechneExtremwerte ();
    73. }
    74. public int _gibTrend ()
    75. {
    76. return _gibTrend;
    77. }
    78. public int _gibMinimalgewicht ()
    79. {
    80. return _gibMinimalgewicht;
    81. }
    82. public int _gibMaximalgewicht ()
    83. {
    84. return _gibMaximalgewicht;
    85. }
    86. }
    Alles anzeigen


    Danke für eure Hilfe und ein schönen Abend noch :)

    MaTo