Assignment Chef icon Assignment Chef
All German tutorials

Programming lesson

Java-Klassen und Objekte verstehen: Eine Schritt-für-Schritt-Anleitung zur Employee-Klasse (ICS 141)

Lerne, wie du in Java eine Employee-Klasse mit Konstruktor, Gettern/Settern und Methoden erstellst – inklusive Gehaltsabrechnungslogik. Perfekt für Anfänger im objektorientierten Programmieren (OOP).

Java Klassen und Objekte Employee Klasse Java ICS 141 Assignment 2 Java OOP Tutorial Deutsch Getter und Setter Java Java Konstruktor Beispiel Gehaltsabrechnung Java Programmieraufgabe Java HR Java Objektorientierung lernen Sentinel Schleife Java Java Datenkapselung Java Übungen für Studenten Java Tutorial 2026 Java Methoden Rückgabetyp Java HR Anwendung Java Fehlerbehandlung Eingabe

Einführung in Java-Klassen und Objekte

In diesem Tutorial lernst du, wie du mit Java-Klassen und Objekten arbeitest – ein grundlegendes Konzept der objektorientierten Programmierung (OOP). Wir erstellen eine Employee-Klasse, wie sie in einer HR-Anwendung verwendet werden könnte. Diese Anleitung orientiert sich an typischen Java-Übungen aus dem Studiengang Informatik (z. B. ICS 141) und hilft dir, deine Programmierkenntnisse zu vertiefen. Ob du nun für eine Prüfung lernst oder einfach deine Java-Kenntnisse verbessern möchtest – dieser Artikel bietet dir eine praxisnahe Einführung.

Die Employee-Klasse deklarieren: Instanzvariablen und Konstanten

Der erste Schritt ist die Deklaration der Klasse Employee. Diese Klasse soll Mitarbeiterdaten speichern: Name, Stundenlohn (hourlyRate) und gearbeitete Stunden (hours). Außerdem definieren wir eine Konstante TAX für den Steuersatz. In Java werden Instanzvariablen üblicherweise als private deklariert, um die Datenkapselung zu gewährleisten.

public class Employee {
    private String name;
    private double hourlyRate;
    private int hours;
    private final double TAX = 0.2; // Beispiel: 20% Steuer
}

Die Konstante TAX ist als final deklariert, da sie sich nicht ändern soll. In einer echten HR-Anwendung könnte dieser Wert aus einer Datenbank stammen – hier verwenden wir einen festen Wert.

Konstruktor und Getter/Setter

Ein Konstruktor initialisiert die Instanzvariablen beim Erstellen eines Objekts. Außerdem benötigen wir Getter und Setter, um auf die privaten Variablen zuzugreifen. Das ist ein zentrales Prinzip von OOP: Datenkapselung.

public Employee(String name, double hourlyRate, int hours) {
    this.name = name;
    this.hourlyRate = hourlyRate;
    this.hours = hours;
}

// Getter und Setter
public String getName() { return name; }
public void setName(String name) { this.name = name; }
// ... analog für hourlyRate und hours

Stell dir vor, du entwickelst eine App für ein Startup: Jeder Mitarbeiter wird als Employee-Objekt abgebildet. Mit Gettern und Settern kannst du die Daten sicher verwalten, ähnlich wie bei einer Benutzerdatenbank.

Die toString()-Methode implementieren

Die toString()-Methode gibt eine lesbare Darstellung des Objekts zurück. Das ist nützlich für Debugging und Logging.

@Override
public String toString() {
    return "Name: " + name + ", Stundenlohn: " + hourlyRate + ", Stunden: " + hours;
}

Diese Methode wird automatisch aufgerufen, wenn du das Objekt in System.out.println() verwendest.

Die EmployeeDriver-Klasse: Benutzereingaben und Schleifen

Jetzt erstellen wir die EmployeeDriver-Klasse mit einer main-Methode. Wir verwenden eine Sentinel-Schleife, um wiederholt Benutzereingaben zu verarbeiten, bis der Benutzer abbricht.

import java.util.Scanner;

public class EmployeeDriver {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        Employee myEmployee;
        String input;
        
        do {
            System.out.print("Name eingeben (oder 'exit' zum Beenden): ");
            String name = scanner.next();
            if (name.equalsIgnoreCase("exit")) break;
            
            System.out.print("Stundenlohn: ");
            double rate = scanner.nextDouble();
            System.out.print("Gearbeitete Stunden: ");
            int hours = scanner.nextInt();
            
            if (rate < 0 || hours < 0) {
                System.out.println("Fehler: Stundenlohn und Stunden müssen positiv sein.");
                continue;
            }
            
            myEmployee = new Employee(name, rate, hours);
            System.out.println(myEmployee.toString());
            
            System.out.print("Weiteren Mitarbeiter erfassen? (j/n): ");
            input = scanner.next();
        } while (input.equalsIgnoreCase("j"));
        
        scanner.close();
    }
}

Diese Schleife ähnelt einem Feedback-Formular auf einer Website: Solange der Nutzer weitermachen möchte, werden Daten erfasst und validiert. Fehlerhafte Eingaben (negative Werte) werden abgefangen – ein wichtiger Aspekt der robusten Programmierung.

Methoden zur Gehaltsberechnung

In Teil 4 der Aufgabe kommen Methoden hinzu, die das Bruttogehalt, die Steuer und das Nettogehalt berechnen. Diese Methoden geben double-Werte zurück.

public double calculateGrossPay() {
    return hourlyRate * hours;
}

public double calculateTax() {
    return calculateGrossPay() * TAX;
}

public double calculateNetPay() {
    return calculateGrossPay() - calculateTax();
}

public double totalTaxWithheld() {
    return calculateTax();
}

Die Methode totalTaxWithheld() könnte in einer Unternehmensanwendung verwendet werden, um die gesamte einbehaltene Steuer aller Mitarbeiter zu summieren. Das ist ein typisches Beispiel für eine Methode, die später in einer größeren Applikation nützlich wird.

Im EmployeeDriver rufst du diese Methoden auf:

System.out.println("Bruttogehalt: " + myEmployee.calculateGrossPay());
System.out.println("Steuer: " + myEmployee.calculateTax());
System.out.println("Nettogehalt: " + myEmployee.calculateNetPay());

Trends und Praxisbezug: Von der Uni zur App-Entwicklung

Die Konzepte, die du hier lernst, sind nicht nur für Uni-Aufgaben relevant. In der modernen Softwareentwicklung – ob für eine Gehaltsabrechnungs-App oder eine KI-gestützte HR-Plattform – sind Klassen und Objekte das Fundament. Stell dir vor, du entwickelst eine App für ein Unternehmen wie Personio oder eine ähnliche HR-Software: Jeder Mitarbeiter wäre ein Objekt der Klasse Employee, und Methoden wie calculateNetPay() würden die monatliche Abrechnung automatisieren. Auch in der Spieleentwicklung (z. B. ein Charakter in Minecraft als Objekt) oder in Finanz-Apps (z. B. ein Konto als Objekt) begegnen dir diese Prinzipien.

Das Verständnis von Konstruktoren, Getter/Setter und Datenkapselung ist essenziell für jede objektorientierte Sprache – nicht nur Java, sondern auch C++, Python oder C#. Wer diese Grundlagen beherrscht, kann komplexe Systeme wie eine E-Commerce-Plattform oder eine Social-Media-App modellieren.

Häufige Fehler und Debugging-Tipps

  • Vergessen von this im Konstruktor: Wenn Parameter und Instanzvariablen gleich heißen, muss this verwendet werden.
  • Endlosschleifen: Stelle sicher, dass die Schleifenbedingung irgendwann false wird – z. B. durch eine Abbruchbedingung wie exit.
  • Eingabevalidierung: Prüfe immer, ob Benutzereingaben sinnvoll sind (z. B. keine negativen Stunden).
  • Klassennamen: Achte auf korrekte Großschreibung (Employee statt employee).

Ein typischer Fehler ist es, den Scanner nicht zu schließen – das kann zu Ressourcenlecks führen. Verwende scanner.close() am Ende der main-Methode.

Gute Programmierpraktiken für deine Abgabe

Um in deiner Assignment-Abgabe zu punkten, beachte folgende Punkte:

  • Kommentiere deinen Code sinnvoll, aber nicht übermäßig.
  • Verwende aussagekräftige Variablennamen (z. B. hourlyRate statt hr).
  • Halte dich an die Java-Namenskonventionen: Klassennamen in PascalCase, Methoden und Variablen in camelCase.
  • Teste verschiedene Eingaben: negative Werte, sehr große Zahlen, leere Strings.
  • Exportiere dein Projekt als ZIP-Datei, wie in der Aufgabenstellung beschrieben.

Vergiss nicht: Eine robuste Anwendung stürzt nicht ab, selbst bei unerwarteten Eingaben. Verwende Bedingungen und Schleifen, um Fehler abzufangen.

Fazit: Der Weg zum Java-Profi

Mit diesem Tutorial hast du die Grundlagen von Java-Klassen und Objekten verstanden – von der Deklaration über Konstruktoren bis hin zu Methoden. Diese Kenntnisse sind der erste Schritt auf dem Weg zum professionellen Java-Entwickler. Ob du nun eine HR-App, ein Spiel oder eine KI-Anwendung entwickelst – das OOP-Paradigma begleitet dich auf Schritt und Tritt. Übe weiter, indem du eigene Klassen erstellst, z. B. für ein Bankkonto oder ein Produkt in einem Online-Shop. Viel Erfolg bei deiner Abgabe!