Announcement

Collapse
No announcement yet.

auf ein bestehendes Objekt in einer 3. Klasse zugreifen

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

  • auf ein bestehendes Objekt in einer 3. Klasse zugreifen

    Ich habe eine Klasse Person
    Code:
    Class Person
    {
        public string Name {get; set;}
    
         public Person (string Name)
    	{ Name = this.Name}
    
      public string getName()
    	{return this.Name}
    }
    In einer anderen Klasse erzeuge ich ein neues Objekt der Klasse Name

    Code:
    Person X = new Person(„Mueller“);
    Wie kann ich jetzt in einer 3. Klasse auf nun auf das Attribut Name vom Objekt X zugreifen?

    Wenn ich es versuche mit

    Code:
    string test = X.getName();
    bekomme ich die Fehlermeldung das X.getName nicht existiert. Als Beispiel könnte die 3.Klasse eine Ausgabeklasse sein (FormName.Text = X.getName(); ) Wo liegt mein Fehler?

    Danke für Eure Hilfe.
    Stefan

  • #2
    In dem du X bsp. per Konstruktor oder Setter der 3. Klasse bekannt machst oder die 3. Klasse fragt mittels eines Getters bei der erzeugenden Klasse nach
    Christian

    Comment


    • #3
      Danke Christan für Deine schnelle Antwort.

      Kannst Du mir bitte mal ein Code Beispiel geben?

      Danke
      Stefan

      Comment


      • #4
        Code:
        public class Person {
            private String name;
        
            public String getName() {
                return name;
            }
        
            public void setName(String name) {
                this.name = name;
            }
        
        }
        Zweite Klasse

        Code:
        public class ZweiteKlasse {
            public ZweiteKlasse() {
                Person X = new Person();
                X.setName("Werner Beinhart");
                // Erzeuge die 3. Klasse
                DritteKlasse dk = new DritteKlasse(X);
            }
        }
        Dritte Klasse

        Code:
        public class DritteKlasse {
            private Person person;
        
            public DritteKlasse(Person person) {
                this.person = person;
            }
        
            public void printName() {
                person.getName();
            }
        }
        Christian

        Comment


        • #5
          Danke für die gute Hilfe

          Comment


          • #6
            Hallo,

            wobei in C# keine getXXX und setXXX Methoden notwendig seind denn dafür gibt es stattdessen Eigenschaften.
            [highlight=c#]
            public class Person {
            public string Name {get; set;}
            }
            [/highlight]
            Hier reichen auch die automatic Properties da sowohl im Getter als auch im Setter keine Logik vorhanden ist und nur der Wert für ein Feld gesetzt wird. Den nötigen Code erzeugt hier der Compiler.
            [highlight=c#]
            public class ZweiteKlasse {
            public ZweiteKlasse() {
            Person X = new Person{ Name = "Werner Beinhart" };

            // Erzeuge die 3. Klasse
            DritteKlasse dk = new DritteKlasse(X);
            }
            }
            [/highlight]

            [highlight=c#]
            public class DritteKlasse {
            private Person person;

            public DritteKlasse(Person person) {
            this.person = person;
            }

            public void PrintName() {
            Console.WriteLine(person.Name);
            }
            }
            [/highlight]

            Soviel Unterschied zu Java

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

            Comment


            • #7
              Asche auf mein Haupt....es hat jemand bemerkt :-)
              Christian

              Comment


              • #8
                Danke auch Gü für Deine Hilfe.

                Wenn ich es richtig verstanden habe erzeugt die 2. Klasse ein Objekt vom Typ Person und danach ein Objekt der 3. Klasse mit Übergabe des Personobjekt.

                In der 3. Klasse wird über den Konstruktor wieder ein PersonenObjekt. So das wärend der Laufzeit 2 Projekte von der Klasse Person existieren (X und Person).

                Ich habe nur gerade Verständnis Probleme. Was mache ich wenn ich viele Objekte einer während habe und von diesen ein bestimmtes Objekt ausgeben möchte.

                Wie arbeite ich mit static Methoden wie die automatisch am Anfang erstellten Klasse.

                Code:
                class Program
                    {
                       
                        static void Main(string[] args)
                        {
                
                        }
                    }
                Gibt es eine gute Webseite die mir das erklärt?

                Viele Grüße
                Stefan

                Comment


                • #9
                  So das wärend der Laufzeit 2 Projekte von der Klasse Person existieren (X und Person).
                  Es heißt 2 Instanzen nicht Projekte. Und nein das siehst du falsch es ist nur eine Instanz du hast nur zwei Variablen. Die lokale X Variable im ZweiteKlasse Konstruktor und das person Feld in DritteKlasse die aber auf die gleiche Person Instanz verweisen.

                  Ich habe nur gerade Verständnis Probleme. Was mache ich wenn ich viele Objekte einer während habe und von diesen ein bestimmtes Objekt ausgeben möchte.
                  Wie arbeite ich mit static Methoden wie die automatisch am Anfang erstellten Klasse.
                  Für neue Fragen neue Threads aufmachen. Beides hat nichts mit deiner ursprünglichen Frage und somit mit der Überschrift dieses Threads zu tun.

                  Comment

                  Working...
                  X