Announcement

Collapse
No announcement yet.

Parent einer Klasse

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Parent einer Klasse

    Also ich habe folgendes Problem. Ich habe für ein Projekt eine Objektklasse, diese kann ein Bild beinhalten mit Koordinaten und Größe zum zeichnen. Diese sind dort als Variablen und Propertys angelegt. Nun soll es noch eine Liste in dem Objekt geben die die Animationen speichert. Also eine weiter Klasse welche dann in Abhängigkeit einer dort gesetzten Variable beispielsweise das Objekt horizontal verschieben soll. Dazu würde ich gerne eine Methode in dieser Klasse implementieren welche bei Aufruf also direkt dem Objekt in deren Liste es sich befindet die neuen Werte in die Koordinaten einträgt.

    Dies wäre also ähnlich wie wenn ich bei einem CommandButton die Parent Funktion aufrufe und erhalte dann das Objekt in dessen Controls Liste es sich befindet.

    Ist so etwas möglich oder wie realisiere ich mein Problem am besten. Ich finde nirgends einen Ansatz.


    Mit freundlichen Grüßen

    das-d
    Unsere Jugend ist unerträglich, unverantwortlich und entsetzlich anzusehen! - Aristoteles

  • #2
    Hallo,

    du brauchst nur eine Eigenschaft erstellen die den Parent wiedergibt und im zB Konstruktor den Eigenschaftswert setzen.

    Für die Animation könnte dir vielleicht das helfen: http://dotnet-forum.de/forums/p/937/3376.aspx#3376

    mfG Gü
    "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

    Comment


    • #3
      dadurch hätte ich aber den Parent zweimal verschieden im Speicher oder? Also ich würde das Objekt der Parent Eigenschaft verändern aber nicht das eigentliche container objekt oder?


      p.s. danke für den Link der könnte unter umständen tatsächlich nützlich sein ;-) da ich mit deinem Ansatz einen festdefinierten Raum hätte, meine Möglichkeit hätte das Objekt ins Nirvana geschoben
      Zuletzt editiert von das-d; 01.12.2008, 15:50.
      Unsere Jugend ist unerträglich, unverantwortlich und entsetzlich anzusehen! - Aristoteles

      Comment


      • #4
        dadurch hätte ich aber den Parent zweimal verschieden im Speicher oder?

        Nein. Wenn du eine Klasse hast ist das ein Verweistyp (Referenztyp) und somit wird nur der Verweis (Referenz, Speicherposition) übergeben. Somit ist das immer das gleiche Objekt.

        Einfaches Beispiel:
        [highlight=vbnet]
        Imports System.Collections.Generic

        Namespace ConsoleApplication1
        Public Class Vater
        Private _kinder As List(Of Kind)
        Public Property Kinder() As List(Of Kind)
        Get
        Return _kinder
        End Get
        Set(ByVal value As List(Of Kind))
        _kinder = value
        End Set
        End Property

        Public Sub New()
        Me._kinder = New List(Of Kind)()
        End Sub

        Public Sub AddKind()
        Dim kind As New Kind(Me)
        _kinder.Add(kind)
        End Sub
        End Class

        Public Class Kind
        Private _parent As Vater
        Public Property Paretn() As Vater
        Get
        Return _parent
        End Get
        Set(ByVal value As Vater)
        _parent = value
        End Set
        End Property

        Public Sub New()
        End Sub
        Public Sub New(ByVal parent As Vater)
        _parent = parent
        End Sub
        End Class
        End Namespace
        [/highlight]

        mfG Gü
        "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

        Comment


        • #5
          ohh das ist mal interessant, das wusste ich noch gar nicht. Man lernt nie aus. Danke mit diesen Informationen sollte es nun wieder große Stücke vorwärts gehen ;-)
          Unsere Jugend ist unerträglich, unverantwortlich und entsetzlich anzusehen! - Aristoteles

          Comment


          • #6
            Dann vielleicht noch ein Sprung vorwärts:

            Wie vorhin beschrieben sind Klassen Verweistypen. D.h. dass ein Objekt im Speicher ist und nur der Verweis auf die Speicheradresse übergeben wird.

            Bei Strukturen (dazu zählen die eingebauten Datentypen, außer String) ist das anders. Bei diesen wird der tatsächliche Wert übergeben.
            Wird zB in einer Methode der Wert eine Arguments geändert ist im aufrufenden Teil von dieser Änderung nichts zu merken. Soll dies der Fall sein dann muss das Argument mit ref oder out (C#) bzw. mit ByRef (VB.net) übergeben werden.

            mfG Gü
            "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

            Comment


            • #7
              genau das mit den Strukturen und so war mir klar und aus dem Grund kam warscheinlich auch mein Denken es wäre bei Klassen genauso ;-)
              Unsere Jugend ist unerträglich, unverantwortlich und entsetzlich anzusehen! - Aristoteles

              Comment

              Working...
              X