Grundsatzfrage zur Objektorienteirung
Guten Abend,
ich fange gerade erst an mich mit Programmierung und vor allem OOP zu befassen und habe eine ganz grundlegende Tatsache davon noch nicht verstanden ( Weiß nicht mal wie ich danach googlen soll).
Wenn Klasse A quasi als Datenkontainer oder Zähler fungiert mit Variablen oder Arrays zum Beispiel
public class KlasseA {
public int ergebniss = 4
}
Klasse B addiert nach jedem schleifendurchlauf auf die public Variable in Klasse A etwas drauf.
public class KlasseB {
KlasseA klassA = new KlasseA();
for (int i = 0; i == 10; i++) {
klassA.ergebniss = ergebniss + 1;
}
}
wieso kann ich den Wert dann in der Main dann nicht, bzw nur im ursprünglichen nicht erhöhten wert ausgeben lassen
public class C {
public static void main (String args) {
KlasseB klassB = new KlasseB()
System.out.println(klassB.ergebniss);
}
}
Ich kann mir vorstellen das in diesem Beispiel (entschuldigt übrigens den pseudo Code) Klasse B und Klasse C jeweils eine eigene Instanz von Klasse A haben und deswegen die Werte in den unterschiedlichen Instanzen verschieden sind. Ist das richtig? wenigstens annähernd?
Falls ja wie greife ich dann auf die richtige Instanz zu?
Vielen danke im Voraus und allen eine erfolgreiche Woche
bob
ich fange gerade erst an mich mit Programmierung und vor allem OOP zu befassen und habe eine ganz grundlegende Tatsache davon noch nicht verstanden ( Weiß nicht mal wie ich danach googlen soll).
Wenn Klasse A quasi als Datenkontainer oder Zähler fungiert mit Variablen oder Arrays zum Beispiel
public class KlasseA {
public int ergebniss = 4
}
Klasse B addiert nach jedem schleifendurchlauf auf die public Variable in Klasse A etwas drauf.
public class KlasseB {
KlasseA klassA = new KlasseA();
for (int i = 0; i == 10; i++) {
klassA.ergebniss = ergebniss + 1;
}
}
wieso kann ich den Wert dann in der Main dann nicht, bzw nur im ursprünglichen nicht erhöhten wert ausgeben lassen
public class C {
public static void main (String args) {
KlasseB klassB = new KlasseB()
System.out.println(klassB.ergebniss);
}
}
Ich kann mir vorstellen das in diesem Beispiel (entschuldigt übrigens den pseudo Code) Klasse B und Klasse C jeweils eine eigene Instanz von Klasse A haben und deswegen die Werte in den unterschiedlichen Instanzen verschieden sind. Ist das richtig? wenigstens annähernd?
Falls ja wie greife ich dann auf die richtige Instanz zu?
Vielen danke im Voraus und allen eine erfolgreiche Woche
bob
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 294797
Url: https://administrator.de/forum/grundsatzfrage-zur-objektorienteirung-294797.html
Ausgedruckt am: 21.04.2025 um 12:04 Uhr
4 Kommentare
Neuester Kommentar
Auf Syntax Fehler in diesem Pseudo-Code wohlen wir gar nicht erst eingehen ...
Punkt 1:
klassA.ergebniss und ergebniss sind 2 verschiedene Variablen. Du addierst also nicht auf.
Punkt 2:
klassB hat kein Attribut ergebniss, also kann das eigentlich nichts ausgeben. Du wolltest sicherlich ergebniss der in KlasseB enthaltenen KlasseA also:
Und es ist nicht sinnvoll KlasseA und klassA als Namen zu nehmen, ist zu ähnlich und zu verwechselbar.
Punkt 1:
klassA.ergebniss = ergebniss + 1;
Punkt 2:
System.out.println(klassB.ergebniss);
System.out.println(klassB.klassA.ergebniss);
Und es ist nicht sinnvoll KlasseA und klassA als Namen zu nehmen, ist zu ähnlich und zu verwechselbar.

Was spricht dagegen,
- die Klasse um eine Prozedur anzureichern, die den klasseninternen Wert um 1 erhöht?
- die Klasse um eine Funktion anzureichern, die den klasseninternen Wert ausgibt?
- die Klasse um eine Prozedur anzureichern, die den klasseninternen Wert um 1 erhöht?
- die Klasse um eine Funktion anzureichern, die den klasseninternen Wert ausgibt?