Methoden in der OOP?

W00dp3ckr  24.01.2023, 13:43

Was ist für Dich statisch?

LaraFeel 
Fragesteller
 24.01.2023, 13:47

Meinte damit, dass sich die Kräfte Physikalisch gesehen im Gleichgewicht befinden. TTLExperte hat meine Frage aber schon beantwortet. Trotzdem vielen dank:)

3 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Wenn du sagst, dass die Wand statisch ist, kommt es einmal drauf an, ob du nun ein einzelnes Objekt statisch definierst (eine Wand, die im gleichen Kontext existiert) oder die Basisklasse statisch definierst (es gibt nur eine Wand).

Kann man dann sagen, dass "statisch" die Methode der Klasse ist oder ist das ein Attribut? oder was wäre mit "unüberwindbar"?

Leider ergibt der Satz für mich keinen Sinn, kannst du ihn anders schreiben?

Ist eine Basisklasse statisch, gibt es nur ein Objekt und du kannst keine Instanzen erstellen. Ist ein Objekt statisch, ist dieses Objekt immer gleich und hat nichts mehr mit den einzelnen Objekten zu tun. Ist eine Methode statisch, hat diese etwas mit allen Wänden an sich zu tun, keiner einzelnen.

//EDIT: Ach so, na das ist dann natürlich etwas anders. :-)

Attribut passt dann ganz gut; bool isStatic = true; zum Beispiel...

Also ich weiß nicht so recht, ob ich die Frage richtig verstehe.

Aber stell dir das so vor:

Du kennst ja sicherlich verschiedene Datentypen (String, Integer, Boolean, usw.).
Eine Klasse ist nichts anderes als ein eigener Datentyp, den du selbst definieren kannst. Dieser eigene Datentyp besteht aus einem oder aus mehreren anderen Datentypen. Eine Klasse ist also etwas komplexeres als ein Integer.

Und von einer Klasse kannst du beliebig viele Objekte erzeugen. Nehmen wir mal an du hast eine Klasse Wand. Die Klasse hat die Attribute Höhe und Breite. Und einen Konstruktor, der diese beiden Attribute verlangt, dann kannst du so (oder je nach Sprache so ähnlich) neue Wand-Objekte erzeugen:

Wand wand1 = new Wand(3.2, 10.0);
Wand wand2 = new Wand(2.0, 5.2);

Angenommen die Wand Klasse hat eine Methode getFlaecheninhalt, dann kannst du die Methode so aufrufen:

wand1.getFlaecheninhalt();

Aber du kannst diese Methode nur aufrufen, wenn du auch eine Instanz von der Klasse hast. Wand.getFlaecheninhalt() gibt es beispielsweise nicht.

Wenn ich die Breite einer Wand verändere (z.B. mit "wand1.setBreite(20.0);"), dann wirkt sich das nur auf wand1 aus. wand2 bleibt davon völlig unberührt.

Eine statische Klasse ist eher eine Sammlung statischer Methoden. Von einer statischen Klasse kannst du keine Objekt-Instanz erzeugen.
Angenommen du hast die statische Klasse WandUtils, mit der statischen Methode "berechneFlaecheninhalt", dann kannst du überall diese Methode folgendermaßen Aufrufen:

WandUtils.berechneFlaecheninhalt(hoehe, breite);

LaraFeel 
Fragesteller
 24.01.2023, 13:56

Das hat jetzt zwar nicht direkt meine Frage beantwortet aber hat trotzdem zu meinem Allgemeinen Verständnis beigetragen. Vielen Dank für die Mühe:)

1

Statisch bezeichnet in objektorientierten Sprachen, wenn etwas nicht mit jedem Objekt neu erzeugt wird.

In JAVA z.B. gibt es statische Methoden und statische Attribute von Klassen.

Deine Frage ist aber (nach meiner Nachfrage) anders gemeint. Wenn Du angeben möchtest, dass eine Wand im architektonischen Sinne statisch ist, dann kann die Wand ein Attribut haben, das dies ausdrückt, zumindest wenn es z.B. bewegliche Wände gibt, wie in vielen Hotels.

Das könnte man mit einem Attribut vom Typ bool ausdrücken.

bool istStatisch;

Dieses Attribut kann dann bei der Konstruktion/Erstellung des Objektes Wand geeignet gesetzt werden.