Wie können Klassen nicht-materialisierte Attribute haben, die nur über get/ set-Mehoden simuliert sind?

Die Begriffe sagen mir so erst einmal nichts, daher wäre die Frage, wie das definiert wurde.

Generell kann man Methoden haben, die z.B. etwas setzen oder Abfragen, ohne dass der Wert selbst vor kommt.

Beispiel:
Du hast eine Klasse Uhrzeit. Du speicherst aber nur die Anzahl der Sekunden, die seit 0 Uhr vergangen sind.
Du kannst aber natürlich jetzt Getter und Setter für Stunden, Minuten und Sekunden haben.

Stunden sind dann halt etwas wie die gespeicherten Sekunden / 3600 beim Getter und der Setter der Stunden würde halt den Wert setzen auf Stunden * 3600 + Wert % 3600

Aber diese Begriffe selbst kenne ich nicht, so dass dies nur einfach etwas ist, das ich aus der Fragestellung etwas abgeleitet habe.
 
Beispiel:
Java:
import java.util.IntSummaryStatistics;
import java.util.List;

public class Bilanz {
    private List<Integer> einnahmen = List.of(5000, 6000, 4000);
    private List<Integer> ausgaben = List.of(3500, 5500, 1000);

    public int getBilanz() {
        return einnahmen.stream().mapToInt(Integer::intValue).sum() - ausgaben.stream().mapToInt(Integer::intValue).sum();
    }

    public IntSummaryStatistics getEinnahmenStats() {
        return einnahmen.stream().mapToInt(Integer::intValue).summaryStatistics();
    }

    public IntSummaryStatistics getAusgabenStats() {
        return ausgaben.stream().mapToInt(Integer::intValue).summaryStatistics();
    }

    public static void main(String[] args) {
        Bilanz bilanz = new Bilanz();
        System.out.println("bilanz = " + bilanz.getBilanz());
        System.out.println("einnahmen = " + bilanz.getEinnahmenStats());
        System.out.println("ausgaben = " + bilanz.getAusgabenStats());
    }
}

getBilanz, getEinnahmenStats, getAusgabenStats sind nur über Getter simulierte, nicht-materialisierte Attribute...

einnahmen und ausgaben hingegen sind materialisierte Attribute. 🙂

Anderes Beispiel, ein Auto hat Räder, Motor und ein Lenkrad, und außerdem das nicht-materialisierte Attribut Geschwindigkeit. 🙂
 
getBilanz, getEinnahmenStats, getAusgabenStats sind nur über Getter simulierte, nicht-materialisierte Attribute...

einnahmen und ausgaben hingegen sind materialisierte Attribute. 🙂

Anderes Beispiel, ein Auto hat Räder, Motor und ein Lenkrad, und außerdem das nicht-materialisierte Attribut Geschwindigkeit. 🙂
So ähnlich hätt ich's auch verstanden, nur bin ich bei der Geschwindigkeit nicht der Meinung, dass die in diese Kategorie fällt, denn diese ist tatsächlich eine Eigenschaft des Autos, lässt sich nicht aus anderen Eigenschaften berechnen oder ableiten. Nur der Spezialfall AnzahlRäder == 0 würde Geschwindigkeit = 0 ergeben, falls das Auto sich nicht gerade in der Luft oder auf rutschigem Untergrund befindet.
 
nur bin ich bei der Geschwindigkeit nicht der Meinung, dass die in diese Kategorie fällt,
Weg / Zeit = Geschwindigkeit 🙂

aber es stimmt allerdings, es kommt auf die Attribute (Eigenschaften) des Autos an. Ich muss allerdings betonen, dass auch mir der Begriff materialisiert neu ist und ich darum Vermutungen anstellen muss... bei Datenbanken gäbe es "eindeutige, zusammengesetzte und künstliche" Werte, vielleicht ist das hierbei so ähnlich. Aber nur vielleicht. 😀
 
Weg / Zeit = Geschwindigkeit 🙂

aber es stimmt allerdings, es kommt auf die Attribute (Eigenschaften) des Autos an. Ich muss allerdings betonen, dass auch mir der Begriff materialisiert neu ist und ich darum Vermutungen anstellen muss... bei Datenbanken gäbe es "eindeutige, zusammengesetzte und künstliche" Werte, vielleicht ist das hierbei so ähnlich. Aber nur vielleicht. 😀
Dann müssten wir aber beides ins Auto speichern, was mir bei der Zeit wenig sinnvoll erscheint 😉. Auf welchem Weg sich das Auto befindet, ist allerdings eine brauchbare Eigenschaft.
Ich denke, es geht tatsächlich um diese "künstlichen" Werte. Ein Kreis kann die Eigenschaft Radius und Durchmesser haben, von der aber nur eine gespeichert werden muss (und sollte). Die jeweils andere wird beim Abfragen oder Setzen umgerechnet.

@Oneixee5 Ich kenn das eigentlich nur im Zusammenhang mit Serialisierung, aber möglich wär's.
 

Zurück
Oben