Mitarbeiterlist erstellen?

3 Antworten

Zuerst etwas zu der allgemeinen Form:

  • Attributnamen beginnen stets mit einem Kleinbuchstaben. Die Aufgabenstellung hat es so auch schon explizit vorgegeben: id, name.
  • Funktionen beschreiben eine Tätigkeit, demzufolge sollte ihr Name auch eine Tätigkeit (Verb) auszeichnen. Beispiele: rechne, schreibe, gibAus. Der Bezeichner mitarbeiterListe hingegen ist ein Substantiv.
  • Dieser unsinnige Sprachmix (Denglisch) wird leider schon von der Aufgabe vorgeschrieben. Ansonsten wäre es eigentlich besser, stets nur englische Bezeichner zu verwenden.

Über eine einheitliche Form wird der Quelltext besser lesbar und somit auch besser wartbar. Du und andere Entwickler finden sich schneller in den Text hinein und werden nicht durch seltsame Eigenheiten abgelenkt.

Syntaxfehler, die dir bereits dein Compiler auflisten würde:

1) Die Methode listMitarbeiter ist nicht statisch und sollte es auch nicht sein. Dennoch versuchst du, sie über den Klassennamen aufzurufen:

MitarbeiterVerwaltung.listMitarbeiter()

Erstelle dir stattdessen eine Instanz von MitarbeiterVerwaltung und rufe die Methode über diese auf.

2) Die Methode toString hast du in mehreren Punkten falsch implementiert.

public String toString() {
  return Name; // jumps out method after semicolon
  return Id;
}
  1. Jede Methode kann maximal einen Wert (bzw. eine Variable) zurückgeben. Hier würde nach Formulierung Name zurückgegeben werden, nach der Ausführung von return springt der Programmfluss aus der Methode wieder heraus. Alles danach stellt Code dar, der nie vom Programmfluss passiert werden kann. Unreachable code ist in Java nicht erlaubt (da unsinnig).
  2. Selbst wenn Id zurückgegeben werden würde, käme es zu einem Fehler, denn die Methode gibt im Methodenkopf an, einen String-Datentyp zurückzugeben. Id ist allerdings eine Zahl. Ein Typecast würde fehlen.
  3. Lies nochmals die Aufgabenstellung, konkret von a) den letzten Teilsatz und überlege dir, wie du die gestellte Anforderung umsetzen könntest.

3) Die Methode mitarbeiterListe gibt in ihrem Kopf an, dass sie nur einen String zurückgeben wird. Die implementierte Logik arbeitet aber daraufhin, ein String-Array auszugeben. Schau nochmal, was du ändern solltest, um den Sinn der Methode zu erhalten, aber auch in der Syntax korrekt zu sein.

4) In addMitarbeiter versuchst du, wie schon bei Punkt 1, objektgebundene Methoden über den Klassennamen aufzurufen, als wären sie objektungebunden. Das klappt aber nicht.

Zugegeben, die Aufgabenstellung in b) ist etwas irreführend, wenn sie schreibt, dass man addMitarbeiter() implementieren soll. In der konkreten Implementation jedoch sollte der Methode ein Parameter übergeben werden. Somit sollte sich ein Problem in dieser Methode auch auflösen.

Befolge den zweiten Satz von b) und füge in addMitarbeiter auch wirklich Mitarbeiter in den Speicher hinzu.

Mache dir des Weiteren Gedanken über den Rückgabetyp der Methode. Was macht Sinn?

5) Schau dir unbedingt nochmal for-Schleifen an. Deine Kreationen beinhalten stets Fehler in Syntax und Logik.

Deine Methode listMitarbeiter ist in der Hinsicht ein einziges Schlachtfeld. Du beachtest die Datentypen nicht, mit denen du arbeitest. Du greifst auf Attribute zu, die es gar nicht gibt. Usw. ...

Lies zudem die Aufgabenstellung genauer und denke folgend darüber nach, welcher Rückgabetyp hierbei passend wäre.

Logikfehler (neben den bereits erwähnten), die mir auf Anhieb aufgefallen sind:

1) Die Mitarbeiter (Franz, Josef, Werner) sollten von außen definiert werden. In dem Kontext, indem auch eine Instanz der Mitarbeiterverwaltung angelegt wird. Dazu hast du dir doch auch die Methode addMitarbeiter geschrieben.

2) Spiele die getId-Methode einmal für 2-3 Mitarbeiter auf einem Blatt Papier Schritt für Schritt nach.

Was soll die Methode getId()? Entweder: wieso existiert sie überhaupt oder wieso ist sie nicht statisch?

Wozu die vielen Namenskonflikte? Insbesondere Id < Id.length dürfte sich nicht kompilieren lassen (abgesehen vom logischen Fehler)

Wozu mehrere return-Anweisungen in listMitarbeiter und toString? Wirft der Compiler hier keine Warnungen ("unerreichbarer Code")?

Wozu hier geschachtelte Schleifen?

Was passiert mit den neu definierten Variablen in addMitarbeiter? So, wie es hier steht, werden sie nach Rücksprung aus der Methode vernichtet, ohne dass ihr Wert irgendetwas bewirkt hätte.

Wo sind die in der Aufgabenstellung geforderten set-Methoden? (Ehrlich gesagt würde ich sie vermutlich auch weglassen und die Werte der Variablen im Constructor setzen. - Hattet ihr Constructor-Argumente noch nicht? Dann müssen wir wohl noch weiter in den Grundlagen zurückgehen als euer Kurs im Moment ist)

Etc. etc. ...

Woher ich das weiß:Berufserfahrung – Software-Entwickler
PWolff  30.10.2019, 13:42

Sehe gerade, dass die Nummerierung "durch die Klasse [Mitarbeiter] selbst fortlaufend" geschehen soll. Wie sagt man dem Java-Compiler, dass eine Methode der Klasse selbst gehört und keiner ihrer Instanzen? (Tipp: den zugehörigen Begriff habe ich oben erwähnt.)

0

Wir sind entweder visuelle Genies und können uns das alles vorstellen oder müssen Deinen Code in ein eigenes System implementieren, was uU eine Stunde kostet. Hellseher sind wir auch, weil wir sofort wissen, welche Programmiersprache.

Alles wäre unwahrscheinlich.

Heisst für Dich:

Finde heraus, welches Zeichen Kommentare setzt. Oft ist das

//

#

///

(* *)

uvam

Dann setzt Du so lange Zeilen in Kommentar, bis Dir klar ist, welche Zeile was warum tut. Das poste dann wieder und wir suchen zusammen einen Fehler, solltest Du ihn noch niciht gefunden haben.

Woher ich das weiß:Berufserfahrung – ich arbeite schon sehr lange im EDV Bereich, viele Sparten
regex9  30.10.2019, 22:21

Die Programmiersprache steht in den Tags und ist ansonsten leicht erkennbar. Der gepostete Code stellt das komplette Programm dar. In ein eigenes System muss man da also gar nichts einbetten. Stattdessen lässt sich sogar ein Online-Editor verwenden.

0
Mauritan  31.10.2019, 09:59
@regex9

wie lautet damit Deine Antwort auf die Frage?

0