Schwierigkeiten mit mehrfacher Punktnotation

Hallo Leute,

ich muss in einer Aufgabe einen für mich recht anspruchsvollen Code an manchen Stellen ergänzen. Zunächst versuche ich ihn aber zu verstehen, was allerdings nicht ganz leicht ist. Unabhängig von dem Rest, verstehe ich nicht, was die Punktnotation so alles kann. Im Folgenden eine Methode aus dem Code:


public void spuereDenEinflussVon(Koerper einfluss)
{
        Vektor abstand = einfluss._position.abstandZu(_position);
        double w = einfluss._masse * Math.pow(abstand.betragQuadrat(), -1.5);
        
        _beschleunigungX += w * abstand.x();
        _beschleunigungY += w * abstand.y();
}

Also es gibt eine Klasse namens Vektor, die aus zwei doubles besteht (sie repräsentieren die x und y Koordinaten einer Sonnensystem Simulation). Nun wird am Anfang der oben stehenden Methode ein neuer Vektor namens abstand deklariert? Dieser Vektor besteht aus dem Koerper einfluss … alter keinen plan mehr. Wenns nötig ist kann ich den ganzen Code posten.
Ich verstehe wie man die Punktnotation einfach verwedet, aber das ist 2 much :frowning:

Danke im Voraus.
skonline90

Per Punktnotation greifst Du auf Felder und Methoden von Klassen (dann steht static davor) oder Instanzen (dann kein static) davon zu.
[ul]
[li]In diesem Fall gibt es eine Instanz von Koerper, die der Methode als Parameter namens einfluss übergeben wird.[/li][li]Der übergebene Körper hat ein Feld namens _position.[/li][li]In diesem Feld steckt eine Instanz einer Klasse, die die Methode (erkennbar an den runden Klammern beim Auruf) abstandZu(…) zur Verfügung stellt. Diese Methode wird mit einer Position als Parameter aufgerufen und gibt einen Vektor zurück.[/li][li]Der zurückgegebene Vektor wird dann verwendet, um irgendwie klug was zu berechnen und die Felder _beschleunigungX und _beschleunigungY von this (die aktuell aufgerufene Instanz zu füllen).[/li][/ul]

klarer wäre wohl (in Java verwendet man keine Unterstriche für Membervariablen…wer macht denn sowas?)

public void spuereDenEinflussVon(Koerper einfluss)
{
        Vektor ortvoneinfluss = einfluss.position; 

        Vektor abstand = ortvoneinfluss.abstandZu(position); 
       // berechnet den Verbindungsvektor, klarer: abstandZu(this.position)

        double w = einfluss.masse * Math.pow(abstand.betragQuadrat(), -1.5); 
       // Newton, this.masse fehlt, weil in Beschleunigung eh wieder rausfliegen würde
        
        this.beschleunigungX += w * abstand.x(); 
        this.beschleunigungY += w * abstand.y();
}

Generell sehen diese Direktzugriffe auf Member ziemlich unschön aus. Aber wenn der Code so vorgegeben ist und nur verstanden werden soll, lässt sich daran wohl nichts ändern.

[quote=Bleiglanz](in Java verwendet man keine Unterstriche für Membervariablen…wer macht denn sowas?)[/quote]Ich.:reflect:
An dieser Stelle weiche ich von der reinen Lehre ab weil mir das die Codevervollständigung erleichtert. Wenn ich ein Property verwenden will muss ich nicht erst nach oben scrollen, oder die Outline-View ausgraben sondern tippe <_> + und bekomme alle Members. Andernfalls müsste ich “this.” tippen…

bye
TT

nur + bietet ja auch einige Möglichkeiten, bewußt ausgeschlossen?
die Menge an lokalen Variablen/ Parametern solle ja nicht so groß sein,

alle Methoden mit einem m beginnend um hier auch die Gruppe einzuschränken?

aber Sympathie habe ich schon, besonders beim leidigen Problem von zu Attributen gleichnamigen Methoden-/ Konstruktor-Parametern :wink: teils auch neuen lokalen Variablen

[quote=SlaterB]nur + bietet ja auch einige Möglichkeiten, bewußt ausgeschlossen?
die Menge an lokalen Variablen/ Parametern solle ja nicht so groß sein,[/quote]Da bekomme ich immer **alles **angeboten, auch das, was es so an Klassen im classpath gibt…

bye
TT