tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
9
ZUGRIFFE
392
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Pageman2 Pageman2 ist offline Mitglied Bronze
    Registriert seit
    Feb 2006
    Beiträge
    47
    Hallo Leute,

    ich habe in einer Datei eine Klasse erstellt und eine geerbte Klasse dazu. Jetzt möchte ich gerne auf diese 2 Klassen zugreifen aber ich schaffe das nicht. Kann mir vielleicht einer sagen was ich falsch gemancht habe?

    Das sind meine Klassen:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    
    using System;
    using System.Data;
    using System.Configuration;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;
     
    /// <summary>
    /// Klasse zur Personenverwaltung 
    /// </summary>
     
    class Personen
    {
       
        
            string name;
            public string _name
            {
                get
                {
                    retun(_name);
                }
                set
                {
                    _name = value;
                }
            }
    }
           class Spieler :Personen 
    {
          
                string Nation;
                int Punkte;
                string Gilde;
                
               public string _nation
                {
                    get
                    {
                        return (_nation);
                    }
                    set
                    {
                        _nation = value;
                    }
     
     
                }
     
                public int _Punkte
                {
                    get
                    {
                        return (_Punkte);
                    }
                    set
                    {
                        _Punkte = value;
                    }
                }
     
                public string _Gilde
                {
                    get
                    {
                        return _Gilde;
                    }
     
                    set
                    {
                        _Gilde = value;
                    }
                }
     
           }

    Wie kann ich diese jetzt in einen anderen Teil meines Programms verwenden? Ich bin leider noch blutiger Anfänger!

    Bitte um eure Hilfe!

    Danke Pageman2
     

  2. #2
    Avatar von Norbert Eder
    Norbert Eder Norbert Eder ist offline Mitglied Diamant
    Registriert seit
    Feb 2004
    Ort
    Österreich / Graz
    Beiträge
    5.137
    Blog-Einträge
    51
    Prinzipiell solltest du private Member klein schreiben, Properties (Eigenschaften) groß und ohne Unterstrich. Soviel am Rande.

    Wie du das aufrufen kannst?
    Code csharp:
    1
    2
    
    Spieler mySpieler = new Spieler();
    mySpieler._name = "Vorname Nachname";
    Wobei hier die Bezeichnung _name bei mir Augenkrebs auslöst.
     

  3. #3
    Avatar von Alexander Schuc
    Alexander Schuc Alexander Schuc ist offline admin | crazy-weasel
    tutorials.de Administrator
    Registriert seit
    Aug 2001
    Ort
    Österreich, Stmk, Graz
    Beiträge
    2.783
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    
               public string _nation
                {
                    get
                    {
                        return (_nation);
                    }
                    set
                    {
                        _nation = value;
                    }
     
     
                }
     
                public int _Punkte
                {
                    get
                    {
                        return (_Punkte);
                    }
                    set
                    {
                        _Punkte = value;
                    }
                }
     
                public string _Gilde
                {
                    get
                    {
                        return _Gilde;
                    }
     
                    set
                    {
                        _Gilde = value;
                    }
                }
    Hrhr. Sehe da schon eine StackOverflowException vor mir.

    Aufpassen wem du was im set-Block zuweist! In deinem Fall weisst du immer wieder der Eigenschaft den Wert zu. -> Rekursion bis der Stack voll is..
     
    With the first link the chain is forged. The first speech censored, the first thought forbidden, the first freedom denied, chains us all irrevocably.
    Aaron Satie

    Legends... are the spice of the universe, Mr. Data, because they have a way of sometimes coming true.
    Captain Jean-Luc Picard, Stardate ~41294.5

    Tutorials.de chattet. Hier gibts auch .net Support ^^
    Klickt auf chattet und nutzt den Webchat, oder verbindet euch zu irc.tutorials.de - Channel #Tutorials.de

    (moo)blog furred.net // SiteInfo für WP7 // Pastebin für WP7 // BlogEngine.net Extensions

  4. #4
    Avatar von Nico Graichen
    Nico Graichen Nico Graichen ist offline aka gemballa
    tutorials.de Moderator
    Registriert seit
    Dec 2003
    Ort
    Pulheim (NRW)
    Beiträge
    3.898
    Blog-Einträge
    34
    Code csharp:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    
    string name;
     
    public string _name
    {
    get
    {
           retun(name);
    }
    set
    {
           name = value;
    }
    }
    Du wirst sowieso Probleme bekommen. Im Getter und Setter der Properties musst du die Privaten Felder nutzen, nicht das Property an sich (siehe oben).
     
    Grüße Nico
    ----------------------
    Xing
    ----------------------
    Zitat Zitat von Mark Twain (1835-1910)
    Es gibt drei Dinge, die eine Frau aus dem Nichts hervorzaubern kann: einen Hut, einen Salat und einen Ehekrach.
    Zitat Zitat von Mike Wilson - Biographie über Larry Ellison (CEO Oracle)
    The Difference Between God and Larry Ellison: God Doesn't Think He's Larry Ellison

  5. #5
    Pageman2 Pageman2 ist offline Mitglied Bronze
    Registriert seit
    Feb 2006
    Beiträge
    47
    Zitat Zitat von Norbert Eder Beitrag anzeigen
    Prinzipiell solltest du private Member klein schreiben, Properties (Eigenschaften) groß und ohne Unterstrich. Soviel am Rande.

    Wie du das aufrufen kannst?
    Code csharp:
    1
    2
    
    Spieler mySpieler = new Spieler();
    mySpieler._name = "Vorname Nachname";
    Wobei hier die Bezeichnung _name bei mir Augenkrebs auslöst.
    Hi und dank für deine Antwort,

    zum ersten habe ich mich bei der Benennung der Variabeln genau an ein Buch gehalten das ich gerade lerne. Werde aber gerne den Unterstrich weglassen und eine andere Variabel verwenden.
    Zum zweiten habe ich das Problem das Intelisence mir die Klasse nicht zur Verfügung stellt und ich auch einen Compilerfehler bekomme wenn ich die Klasse aufrufen will.

    Kann mir vielleicht einer von euch ein Beispiel zeigen das leicht verständlich ist wie ich eine Klasse richtig erstelle und auch eine geerbte Klasse? Wie es im Moment aussieht hab ich das was in dem Buch steht nicht so wirklich verstanden.

    mfg Reinhard
     

  6. #6
    Avatar von Norbert Eder
    Norbert Eder Norbert Eder ist offline Mitglied Diamant
    Registriert seit
    Feb 2004
    Ort
    Österreich / Graz
    Beiträge
    5.137
    Blog-Einträge
    51
    Um welches Buch handelt es sich denn? Wäre gut zu wissen, nicht dass es dann einfach weiterempfohlen wird.

    Beispiel:

    Code csharp:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    
     
    public class Car
    {
      private string name = String.Empty;
      private int highspeed = 0;
     
      public string Name
      {
        get { return this.name; }
        set { this.name = value; }
      }
     
      public int Highspeed
      {
        get { return this.highspeed; }
        set { this.highspeed = value; }
      }
    }
     
    public class SportCar : Car
    {
      private bool formulaOneMotor = false;
     
      public bool FormulaOneMotor
      {
        get { return this.formulaOneMotor; }
        set { this.formulaOneMotor = value; }
      }
    }
    Einige verwenden bei privaten Membern (Variablen) einen Unterstrich, um diese eindeutig zu kennzeichnen, aber nie in Eigenschaften verwenden, das erschwert die Lesbarkeit und die Zuordnung. Private Member zudem immer klein schreiben und Methdoen oder Eigenschaften die öffentlich zugreifbar sind immer groß schreiben. Ich persönlich beginne Eigenschaften und Methoden generell mit einem Großbuchstaben.

    Weiters ist es anzuraten, jede Klasse in eine eigene Datei zu packen. Dies erhöht die Übersichtlichkeit und deine Klassen sind einfach und schnell zu finden.

    Dass Klassen, Methoden etc. im IntelliSense nicht zu finden sind, liegt meist an einem Fehler im Sourcecode, da diese nur angezeigt werden, wenn keine Fehler in der entsprechenden Klasse vorkommen (bei Neuerstellung).

    Zusätzlich solltest du auch noch darauf achten, dass Eigenschaften nicht sich selbst befüllen oder sich selbst zurückliefern, daraus resultiert eine StackOverflowException die bereits weiter oben angesprochen wurde, da du somit eine quasi unendliche Rekursion erzeugst.
     

  7. #7
    Pageman2 Pageman2 ist offline Mitglied Bronze
    Registriert seit
    Feb 2006
    Beiträge
    47
    Erstens einmal einen grossen Danke an dich Norbert! Es handelt sich um das Buch "ASP.Net Grundlagen und Profiwissen" von "Patrick A. Lorenz", Habe jetzt endlich verstanden wie das mit den Klassen und der Vererbung funktioniert.

    Darf ich noch eine Frage stellen?

    Ich habe im Buch über Schnittstellen gelesen auch wie diese erstellt werden aber es war keine Erklärung dabei für was man diese verwenden kann bzw für was die Schnittstellen gut sind. Könntest du mir das vielleicht erklären?

    Mfg Pageman2
     

  8. #8
    Avatar von Norbert Eder
    Norbert Eder Norbert Eder ist offline Mitglied Diamant
    Registriert seit
    Feb 2004
    Ort
    Österreich / Graz
    Beiträge
    5.137
    Blog-Einträge
    51
    Schnittstellen sind dann gut, wenn unterschiedliche Bibliotheken, Programme etc. miteinander kommunizieren müssen. Schnittstellen beschreiben einen Klassenaufbau, an den sich alle halten müssen. Hierbei ist nicht die tatsächliche Implementierung wichtig, sondern welche Methoden vorgeschrieben sind.

    Als Beispiel könntest du dir folgendes vorstellen:
    Zu willst einen Server programmieren. Jetzt könnte dir natürlich der Gedanke kommen, dass du dir einen Server entwickelst, der in der Basis immer gleich funktioniert, nur je nach Anwendungsfall eine bestimmte Ausprägung hat (TCP Server, anderes Protokoll, wie auch immer). Daher erstellst du ein Interface, welches beispielsweise vorgibt, dass der Server eine Start und eine Stop-Methode haben muss. Diese muss nun von sämtlichen Implementierungen erfasst werden. D.h. unabhängig davon WIE der Server implementiert wurde und WAS er alles kann, weiß der Entwickler, der es mit dem Server zu tun bekommt, dass er zumindest ein Start und ein Stop hat.
     

  9. #9
    Pageman2 Pageman2 ist offline Mitglied Bronze
    Registriert seit
    Feb 2006
    Beiträge
    47
    Nochmal Danke Norbert! Ok dann brauche ich sicherlich bei meinen Projekt keine Schnittstellen da ich nur eine ASP.net Website erstellen will die eine MS SQL DB enthält die in einem Dataset verarbeitet werden und individuell ausgegeben werden.

    Kennst du ein Buch das für Anfänger echt gut geeignet ist? Mit dem Werk das ich jetz hab bin ich nicht sehr zufrieden da es für mich zu schwer geschrieben ist! Bin absoluter Anfänger in .Net und C# aber habe gute Vorkenntnisse in VB6. Leider keinerlei C oder C++ Kenntnise.

    mfg Pageman2
     

  10. #10
    Avatar von Norbert Eder
    Norbert Eder Norbert Eder ist offline Mitglied Diamant
    Registriert seit
    Feb 2004
    Ort
    Österreich / Graz
    Beiträge
    5.137
    Blog-Einträge
    51
    Also unter http://www.galileocomputing.de/katal...742A2t728I-R5c solltest du etwas für dich finden. Die Bücher sind eigentlich ganz gut und sollten dir das Lernen durchaus erleichtern. Schau sie dir einfach mal an. Wenns nicht passt, können wir immer noch über andere Bücher reden.
     

Ähnliche Themen

  1. Klassen und IDs - Problem
    Von mR.fLopPy im Forum CSS
    Antworten: 2
    Letzter Beitrag: 23.09.08, 18:05
  2. Erweitern eines Vererbten Menüs in Visual Studio 2005
    Von stblme01 im Forum VisualStudio & MFC
    Antworten: 1
    Letzter Beitrag: 28.02.08, 13:29
  3. Klassen Problem
    Von Lenox im Forum PHP
    Antworten: 9
    Letzter Beitrag: 21.05.07, 18:05
  4. Problem mit Klassen
    Von Woddi im Forum PHP
    Antworten: 2
    Letzter Beitrag: 22.01.03, 12:12
  5. Problem mit Klassen in php
    Von soraya im Forum PHP
    Antworten: 1
    Letzter Beitrag: 22.08.02, 13:48