Kennt-Beziehung in VB.NET?

  • VB.NET

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von X-Zat.

    Kennt-Beziehung in VB.NET?

    Hallo Leute!

    Habe eine kleine Frage:
    [Vorab: Weder Google- noch Board-Suche haben mir weitergeholfen...]
    Wie kann ich einem Objekt (sagen wir dem Rectangle mView) ein anderes Objekt (sagen wir das Rectangle mWorldView einer anderen Klasse) so übergeben, dass es es "Kennt" - Also dass jederzeit, dass "mView" abgefragt wird, es den Wert von "mWorldView" besitzt?
    In Java hab ich sowas schon gemacht - Da musste nur die originale Variable einer anderen übergeben werden. Doch in VB bekomme ich das irgendwie nicht hin :/

    Sinn dahinter:
    Spoiler anzeigen

    In einem Spiel habe ich die "WorldView" als Ausschnitt der ganzen Welt. Das ist der Ausschnitt, in dem sich der Spieler bewegt und der die Welt anzeigt (auch werden nur Objekte in diesem Ausschnitt gerendert). Die Klasse "Player" oder "Block" brauchen nun diesen Ausschnitt:
    - Der Player muss schauen, ob er über den Ausschnitt hinweg läuft. Der Ausschnitt soll sich dann wie eine Kamera verhalten und hinterherkommen (habe ich schon soweit).
    - Der Block schaut, ob er denn überhaupt in diesem Ausschnitt ist und gerendert werden soll.



    Eine Ist-Beziehung sowie eine Hat-Beziehung sind ziemlich simpel (z.B. ist Button1 ein Objekt der Klasse Button und Form1 hat Button1) - Nur mit der Kennt-Beziehung komme ich nicht zurecht :/
    Ich wollte auch nicht innerhalb einer Klasse direkt auf ein Objekt einer anderen zugreifen, sondern z.B. Block direkt im Konstruktor das Rectangle der WorldView übergeben.

    Bin dankbar für jede Antwort, da ich hier überhaupt keinen Plan habe :/

    MfG,
    X-Zat / Momo

    X-Zat schrieb:


    In Java hab ich sowas schon gemacht - Da musste nur die originale Variable einer anderen übergeben werden. Doch in VB bekomme ich das irgendwie nicht hin :/


    Irgendwie scheine ich Dich nicht richtig zu verstehen, denn salopp würde ich sagen das funzt auch exakt auf dem gleichen Wege in VB.NET.

    VB.NET-Quellcode

    1. Dim MyObject As Object1
    2. MyObject = <variable die eine Referenz auf Object1 beinhaltet>


    Gruß

    Rainer
    Ah - diese View-Dinger sind wirklich System.Drawing.Rectangle?
    Dann sinds Strukturen, und die sind als Kenn-Beziehung ungeeignet, weil wenn man eine Struktur zuweist, werden alle ihre Member umkopiert - gewissermaßen ein Klon erstellt.
    Hingegen wenn du eine Klasse zuweist wird nur eine Art Zeiger übergeben, auch Verweis genannt, der auf die Original-Daten verweist.
    Ok...
    So wie ich das verstanden habe, müsste ich dann die einzelnen Werte des Rectangles übernehmen?
    Wie sonst könnte ich die Werte übergeben, sodass ich ohne großen Rechenaufwand eine Rectangle oder dessen Werte habe?

    MfG,
    X-Zat / Momo
    Nun, das dachte ich auch, da das übergeben von Auflistungen von Objekten eigener Klassen wunderbar funktioniert.
    Aber ich nutze temporär erstmal ein Modul, indem das Rectangle WorldView eingebaut ist - Somit kann jede Klasse problemlos darauf zugreifen.

    MfG,
    X-Zat / Momo