Assignment Chef icon Assignment Chef
All German tutorials

Programming lesson

Java-Payroll-Programm mit Klassen und Methoden: Schritt-für-Schritt-Tutorial zur COP3330 Hausaufgabe 2

Lerne, wie du ein wöchentliches Gehaltsabrechnungsprogramm in Java implementierst. Dieses Tutorial erklärt die Klasse Employee und Company mit privaten Feldern, Gettern/Settern, toString, netPay und printCheck – ideal für die COP3330 Hausaufgabe 2.

Java Payroll Programm COP3330 Hausaufgabe 2 Employee Klasse Java Company Klasse Java Getter Setter Java toString Methode Java netPay Methode printCheck Methode Java ArrayList Mitarbeiterverwaltung Gehaltsabrechnung Java Tutorial Java OOP Beispiel Programmieren lernen Java Java Hausaufgabe Hilfe Payroll System Java Java für Studenten COP3330 Lösung

Java-Payroll-Programm: Einführung in die COP3330 Hausaufgabe 2

Die COP3330 Hausaufgabe 2 verlangt die Implementierung eines einfachen wöchentlichen Gehaltsabrechnungsprogramms in Java. Du wirst eine Employee-Klasse mit privaten Feldern wie fullName, employeeNumber, payRate und hoursWorked erstellen. Zusätzlich entwickelst du eine Company-Klasse, die Mitarbeiter verwaltet, Gehaltsschecks druckt und verschiedene Operationen ausführt. Dieses Tutorial führt dich Schritt für Schritt durch den Prozess – ohne die komplette Lösung vorwegzunehmen, aber mit genug Details, damit du es selbst schaffen kannst.

Warum ist dieses Thema relevant? – Ein Trend-Beispiel aus der Gaming-Welt

Stell dir vor, du entwickelst ein Spiel wie „Fortnite“ oder „Valorant“. Jeder Spieler hat einen Benutzernamen (employeeNumber), eine Spielzeit (hoursWorked) und einen Skill-Multiplikator (payRate). Dein Programm berechnet die wöchentliche Belohnung (gross pay) und zieht eine „Steuer“ (z. B. 6 % für Ingame-Käufe) ab. Genau das lernst du hier – nur mit Java-Klassen statt Spielmechaniken.

Grundlagen der Employee-Klasse

Private Felder und Konstruktor

Die Employee-Klasse muss genau vier private Felder enthalten:

  • fullName (String)
  • employeeNumber (String)
  • payRate (double)
  • hoursWorked (double)

Der Konstruktor Employee(String fullName, String employeeNumber, double payRate, double hoursWorked) weist diese Parameter den Feldern zu. Achte darauf, dass die Parameterreihenfolge exakt eingehalten wird.

Getter und Setter

Zu jedem privaten Feld gehört ein Getter und ein Setter. Beispiel für fullName:

public String getFullName() { return fullName; }
public void setFullName(String fullName) { this.fullName = fullName; }

Wiederhole dies für die anderen drei Felder. Die Setter ermöglichen spätere Änderungen, z. B. wenn ein Mitarbeiter befördert wird und sich der Stundenlohn ändert.

toString()-Methode

Überschreibe die toString()-Methode, um eine Zeichenkette im Format [employeeNumber/fullName, x Hours @ y per hour] zurückzugeben. Beispiel: [ej789/Erika T. Jones, 1.0 Hours @ 100.0 per hour]. Verwende dazu die Getter, um auf die Felder zuzugreifen.

netPay()-Methode (privat)

Die private Methode netPay() berechnet den Nettolohn: grossPay - (grossPay * 0.06). Der Bruttolohn ist hoursWorked * payRate. Diese Methode wird später von printCheck() aufgerufen.

printCheck()-Methode

Die Methode printCheck() gibt den Gehaltsscheck im geforderten Format aus. Sie ruft netPay() auf und berechnet nicht erneut den Nettolohn. Beispielausgabe:

—————————————————————————
Employee’s name: Erika T. Jones
Employee’s number: ej789
Hourly rate of pay: 100.0
Hours worked: 1.0
Total Gross Pay: $100.00
Deductions
Tax (6 %): $6.00
Net Pay: $94.00 Dollars
—————————————————————————

Verwende System.out.printf für formatierte Ausgaben mit zwei Dezimalstellen.

Die Company-Klasse – Mitarbeiterverwaltung wie in einer echten Firma

Die Company-Klasse enthält eine ArrayList<Employee> namens employeeList, einen companyName und eine statische companyTaxId. Der Standardkonstruktor initialisiert die Liste und setzt companyName = "People’s Place" und companyTaxId = "v1rtua7C0mpan1".

hire()-Methode

Die Methode hire(Employee employee) fügt einen Mitarbeiter nur hinzu, wenn dessen employeeNumber noch nicht in der Liste existiert. Durchlaufe die Liste und vergleiche die Nummern. Falls vorhanden, gib false zurück, sonst füge hinzu und gib true zurück.

printCompanyInfo()

Diese Methode gibt den Firmennamen, die Steuer-ID und die aktuelle Anzahl der Mitarbeiter aus. Beispiel:

Company: People’s Place
Tax ID: v1rtua7C0mpan1
Number of employees: 2

printEmployees()

Rufe für jeden Mitarbeiter in der Liste dessen toString() auf und gib das Ergebnis aus. Jeder Mitarbeiter erscheint in einer eigenen Zeile.

countEmployees(double maxSalary)

Zähle Mitarbeiter, deren Bruttogehalt (hoursWorked * payRate) kleiner als maxSalary ist. Verwende eine Schleife und einen Zähler.

SearchByName(String fullName) – Groß-/Kleinschreibung ignorieren

Durchsuche die Liste nach einem Mitarbeiter mit dem angegebenen Namen. Verwende equalsIgnoreCase(), um Groß- und Kleinschreibung zu ignorieren. Gib true zurück, wenn gefunden, sonst false.

reverseEmployees() – Mitarbeiterliste umkehren

Vertausche das erste mit dem letzten Element, das zweite mit dem vorletzten usw. Du kannst entweder eine temporäre Liste verwenden oder direkt mit Indizes tauschen. Achte darauf, die Liste zu modifizieren, nicht nur eine Kopie.

deleteEmployeesBySalary(double targetSalary)

Entferne alle Mitarbeiter, deren Bruttogehalt exakt targetSalary entspricht. Verwende einen Iterator, um ConcurrentModificationException zu vermeiden, oder sammle die zu entfernenden Indizes und lösche sie rückwärts.

printCheck(String employeeNumber)

Suche den Mitarbeiter mit der angegebenen Nummer. Wenn gefunden, rufe dessen printCheck() auf. Andernfalls gib "NO SUCH EMPLOYEE EXISTS" aus.

Häufige Fehler und Tipps

  • Vergiss nicht die static-Felder: companyTaxId ist static, also müssen Setter und Getter ebenfalls static sein.
  • Keine zusätzlichen Felder in Employee: Füge keine weiteren privaten Attribute hinzu – auch nicht für grossPay oder netPay. Berechne sie bei Bedarf.
  • Formatierung des Schecks: Verwende printf mit %.2f für zwei Dezimalstellen. Achte auf die exakte Darstellung wie in der Aufgabenstellung.
  • Eindeutige employeeNumber: In hire() musst du sicherstellen, dass keine doppelten Nummern vorkommen.

Beispiel aus dem echten Leben: Wie ein Startup Gehälter berechnet

Stell dir vor, du arbeitest bei einem Startup wie „Notion“ oder „Figma“. Jeder Angestellte hat eine ID, einen Stundensatz und eine Arbeitszeit. Die Firma muss wöchentlich Gehaltsschecks drucken und dabei Steuern abziehen. Genau das machst du hier – nur in Java. Das Verständnis von Klassen und Objekten hilft dir später, echte Unternehmenssoftware zu entwickeln.

Fazit

Mit diesem Tutorial hast du eine solide Grundlage, um die COP3330 Hausaufgabe 2 zu lösen. Denke daran: Der Code muss in einer einzigen Datei DriverClass.java abgegeben werden, die alle drei Klassen enthält. Teste dein Programm mit den Beispieldaten aus der Aufgabenstellung. Viel Erfolg!