Projekt Sportfest

Hallo Leute,

wir haben in der Schule vor kurzer Zeit mit Java angefangen und üben die Grundlagen aktuell mit BlueJ. Ich komme bei der einen Aufgabe nicht weiter. Ich habe im Bild festgehalten wie weit ich gekommen bin. Hier nun die Aufgabe.

Es geht im Großen und Ganzen um ein Sportfest, für welches Urkunden gedruckt werden sollen. Nun sollen die folgenden Klassendiagramme in der Java-Klasse festgehalten werden - nachname : String - vorname : String - punkte : int

** Teilnehmer (nachname : String, vorname : String)
gibPunkte() : int
erhoehePunkte(neuePunkte : int) :void
erstelleUrkunde() : void**

Im Konstruktor sollen Vor- und Nachname geschrieben , sowie die Punktzahl mit 0 initialisiert werden.

Den anschließenden Konsolen-Text bekomme ich auf jeden Fall alleine hin.

Vllt kann mir jemand kurz sagen wie ich weiter vorgehen muss. Ob mit einer Methode, oder ob ich noch mehr Variablen benennen muss.
Gerne auch mit einfachen Anweisung und Tipps die man als Anfänger gut verstehen kann

Danke im Vorraus!!!

*** Edit ***

Den Konsolentext der erstellt werden soll habe ich auch bereits fertig.

was als nächstes zu tun ist müsste doch ziemlich klar sein,
einfach wiederholt die Aufgabenstellung durchlesen und jeweils grob bis genau gegenprüfen ob mit deinem Code vereinbar

es soll etwa eine Methode gibPunkte() geben, die musst du wohl noch programmieren,
‚wie‘ war dabei ja anscheinend nicht deine Frage und sollte auch völlig klar sein, also los nun, gibPunkte() muss her :wink:

generell sind die Variablen dieser Klasse vorgegeben und vorhanden, Methoden fehlen,

mit deinem edit hast du ja eine der fehlenden Methoden, geht also voran, gar nicht so schwer wie zu sehen,
‚neuePunkte‘ darin ist aber merkwürdig, ist keines der drei Attribute auf die du nur zugreifen kannst,

Parameter einer anderen Methode haben hier nix verloren,
neben Attributen maximal noch Parameter der eigenen Methode sowie erstellte lokale Variablen,

gibt es keine Fehlermeldung zu neuePunkte? eine andere IDE wie Eclipse wäre von Vorteil,
BlueJ kann langfristig nur schaden, da wird dich jeder mit Ahnung warnen, aber natürlich jeder Wechsel ein bisschen Einarbeitungszeit

edit:
ruhig auch dein bisheriges genau mit Aufgabenstellung vergleichen,
der Konstruktor soll nur zwei Parameter haben und die Punkte auf 0 stellen, nicht drei Parameter,
wie kann so ein Fehler passieren? ist nicht schlimm, aber trotzdem zu überlegen wieso dir bisher noch nicht aufgefallen,

sowas kann am Ende zwischen richtig und falsch entscheiden,
ist ja nun keine Wissenschaft zu lesen dass ein Konstruktor mit zwei Parametern gewünscht ist,
wenn doch sicher grob Wissen vorhanden ist, was ein Konstruktor + Parameter sind,
mit „Im Konstruktor sollen Vor- und Nachname geschrieben , sowie die Punktzahl mit 0 initialisiert werden.“ hast du es ja sicherlich verständlich selbst formuliert,
dann noch nötig den Code anzuschauen und zu erkennen dass da drei Parameter sind usw…

In etwa so? Oder brauche ich für gibtPunkte() und erhoehePunkte(neuePunkte : int) : void 2 unterschiedliche Methoden.

Ist meine Antwort ebend angekommen? Hier nochmal mein Versuch gibtPunkte() einzubauen

[ot]
Um Spam zu verhindern, sind manche Posts (speziell bei neuen Usern - aber manchmal sogar bei Mods ;)) erstmal “Moderated”, d.h. nicht sichtbar, bevor sie von einem Mod freigeschaltet wurden. Das sollte i.a. aber recht schnell gehen
[/ot]

(Halb-OT: )
Den Code als Code, in ....-Tags zu posten wäre für alle einfacher, als diese Screenshots…

[ot]Der Beitrag von SlaterB erscheint bei mir als Startpost, SlaterB ist auch als Threadstarter in der Threadübersicht aufgeführt. Eine Fragestellung zum Thema Sportfest sehe ich nicht.[/ot]

Den selben Fehler hatte ich ebenfals vor ein paar Stunden. Ich konnte meine Frage obendrüber auch nicht sehen. Jetzt scheint aber alles wieder zu funktionieren.

*** Edit ***

Wie gebe ich den Code in ... ein?

beim Konstruktor muss der dritte Parameter weg,
gibPunke() soll keinen Parameter haben, fürs Erhöhen ist eine andere Methode zuständig…

es bleibt bei den ursprünglichen 3 Attributen, die beiden neuen sind bestenfalls unnütz bis falsch

Ich bin jetzt nachdem ich nochmal einen Versuch gestartet habe etwas weiter gekommen. Die einzige Sache die mir jetzt noch fehlt ist gibPunkte()

Wo bzw. Wie muss ich diese Methode jetzt noch einbauen??

Das stimmt so weit, aber das “private int neuePunkte” ist nicht nötig.
Ansonsten wüßte ich kaum eine Möglichkeit, zu helfen, außer, zu sagen, dass du halt

int gibPunkt()
{
    return punkte;
}

eintippen musst…

Ich würde die Methode erhoehePunkte() anders benennen weil dieser Name zu technisch ist.
IMHO wäre erwirbtPunkte() oder erhlaeltPunkte() besser, weil diese Bezeichner ehr zur “Problem-Domäne” gehören.

Aber wenn die Bezeichner schon vorgegeben sind…

bye
TT

So ich habe die Objektvariable punkte ich jetzt oben ohne Wert geschrieben, die Variable int neuePunkte gelöscht und den Methodenrupf verbessert. Aber ich glaube nicht, dass ich gibPunkte() einfach nur mit return wiedergeben soll…

Punkte müssen ja noch “initial” vergeben werden, also am Anfang sind sie zB bei allen bei 0.

Bei erhoehe/n könnte man noch schauen, ob der Parameter > 0.

Ansonsten alles richtig, hätte ich auch so gemac.

[quote=RowdyN]Aber ich glaube nicht, dass ich gibPunkte() einfach nur mit return wiedergeben soll…[/quote]Wenn nam diesen MetodenNamen ins Englische übersetzt heist er getPoints(). Eine Methode, in der der (komplette) Name einer Instanzvariablen (hier “punkte”) mit der Vorsilbe “get” (freie Übersetzung von “gib”) vor kommt und die nichts weiter tut als eben diese Variable (eigentlich deren Inhalt) nach außen zu geben heist unter Programmieren “Getter”.

Dazu passend gibt es ein Gegenstück mit der Vorsilbe “set” die dann dieser internen Variablen lediglich einen neuen Wert zuweist, die dann “Setter” genannt wird.

In der objektorientierten Programmierung sollten “Getter” und “Setter” mit Bedacht eingesetzt werden. Zu 99% führen sie zur Verletzung des wichtigsten OO-Prinzips: Information hiding.

Bezogen auf Deine Aufgabe: Ja, Du hast den geforderten Getter richtig implementiert.

bye
TT

Okay, danke an Alle die mir geholfen haben. Die Aufgabe ist damit gelöst!!

BlueJ erlaubt es zwar, Instanzvariablen nachträglich (per Hand) zu verändern, aber dies sollte man vorher machen.