import java.util.Map;

/**
 * Diese Klasse repräsentiert gelabelte Datenpunkte mit verschiedenen Attributen.
 * Sie dient als Datenstruktur zur Speicherung von Features und Labels eines Datenpunkts,
 * die typischerweise für maschinelles Lernen und Entscheidungsbaumalgorithmen verwendet werden.
 * 
 * @author Benedikt Lindemann
 */
public class GELABELTEDATEN {

    private Map<String, String> attribute; // Feature-Werte dieses Datenpunkts
    private String label; // Das Label dieses Datenpunkts

    /**
     * Konstruktor, der einen gelabelten Datenpunkt mit einer Menge von Attributen und einem Label erstellt.
     * 
     * @param attribute Eine Map, die die Feature-Werte des Datenpunkts enthält.
     *                  Jeder Eintrag repräsentiert ein Paar aus Feature-Name und Feature-Wert.
     * @param label Das Label des Datenpunkts, das die Klassifikation oder Kategorie angibt.
     */
    public GELABELTEDATEN(Map<String, String> attribute, String label) {
        this.attribute = attribute;
        this.label = label;
    }

    /**
     * Gibt die Attribute dieses Datenpunkts zurück.
     * Diese Methode ermöglicht den Zugriff auf alle Feature-Werte des Datenpunkts,
     * welche für Berechnungen und Entscheidungen innerhalb von Algorithmen verwendet werden können.
     * 
     * @return Eine Map von Feature-Namen zu Feature-Werten.
     */
    public Map<String, String> nenneAttribute() {
        return this.attribute;   
    }

    /**
     * Gibt das Label des Datenpunkts zurück.
     * Das Label wird in der Regel verwendet, um den Datenpunkt in einem Lernalgorithmus
     * oder bei der Anwendung eines Modells zu klassifizieren.
     * 
     * @return Das Label des Datenpunkts als String.
     */
    public String nenneLabel() {
        return this.label;
    }
}

