tutorials.de Buch-Aktion 05/2012
Like Tree5Danke
  • 1 Beitrag von MCoder
  • 1 Beitrag von Shakie
  • 1 Beitrag von sheel
  • 1 Beitrag von Tim Bureck
  • 1 Beitrag von sheel
ERLEDIGT
NEIN
ANTWORTEN
10
ZUGRIFFE
313
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    toastie toastie ist offline Mitglied Bronze
    Registriert seit
    Nov 2009
    Beiträge
    43
    Hallo Forum,

    ich habe eine allgemeine Frage zu C#. Und zwar:

    Ich bin noch Anfänger und blicke bei der objektorientierten Programmierung noch nicht so ganz durch. Ich habe in meinem Praktikum mit einem Mitarbeiter einen Taschenrechner programmiert mit Win-Gui, der dem "Calc"-Rechner von Windows ähnelt. Aber trz blicke ich noch nicht ganz durch.

    Ich habe zur Übung und zum besseren Verständnis von Klassen, Objekten usw. das:

    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
    
    using System;
    using System.Collections.Generic;
    using System.Text;
     
    namespace Uebung
    {
        class Sessel
        {
            Sessel meinSessel = new Sessel();
     
            public string Farbe;
            public int Stempel;
            public bool Lehnen;
            public int Gewicht;
     
            public Sessel()
            {
                Farbe = "rot";
                Stempel = 4;
                Lehnen = true;
                Gewicht = 45;
            }
        }
    }

    geschrieben. Aber es tun sich ein paar Fragen auf:

    1.
    Code :
    1
    2
    3
    4
    5
    6
    7
    
    public Sessel()
            {
                Farbe = "rot";
                Stempel = 4;
                Lehnen = true;
                Gewicht = 45;
            }

    Was ist dieser Abschnitt genau?

    2. Was kann ich mit einem Objekt machen und wie kann ich einem Objekt Eigenschaften geben? (Bei Missverständnis bitte nachfragen)


    Hoffe auf Antworten


    Mit freundlichen Grüßen



    Toastie
    Geändert von toastie (15.09.10 um 19:04 Uhr)
     

  2. #2
    MCoder MCoder ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jul 2005
    Ort
    München
    Beiträge
    2.448
    Hallo Toastie,

    der Abschnitt "public Sessel() ... " ist der Konstruktor, der immer dann aufgerufen wird, wenn ein Objekt erstellt wird.

    Zu den Grundlagen hinsichtlich Klassen, Objekten usw. empfehle ich dir, mal hier nachzulesen: http://openbook.galileocomputing.de/csharp/

    Gruß
    MCoder
    Geändert von MCoder (15.09.10 um 20:17 Uhr)
    toastie bedankt sich. 
    "The three chief virtues of a programmer are: Laziness, Impatience and Hubris."
    --- Larry Wall

  3. #3
    toastie toastie ist offline Mitglied Bronze
    Registriert seit
    Nov 2009
    Beiträge
    43
    Vielen Dank für die Antwort

    Das heisst jedes Objekt, das ich dann aus dieser Klasse "Sessel" erstelle hat dann diese Eigenschaften?

    €: Ach ja...ist dieses Beispiel mir eigentlich gut gelungen um daraus die Objektorientierung wenigstens ein wenig ersichtlich zu machen?
    Geändert von toastie (15.09.10 um 21:35 Uhr)
     

  4. #4
    Avatar von Shakie
    Shakie Shakie ist offline Mitglied Diamant
    Registriert seit
    May 2004
    Ort
    Europa
    Beiträge
    2.048
    Die Eigenschaften hat der Sessel auch, wenn du folgenden Konstruktor verwenden würdest:
    Code csharp:
    1
    2
    3
    
    public Sessel()
            {
            }
    Allerdings haben deine Variablen dann keinen Wert bzw. es würde ein Standardwert drin stehen. Also wenn du kein Gewicht im Konstruktor angibst, dann hat die Variable "Gewicht" den Wert 0.

    Von einer Eigenschaft spricht man übrigens dann, wenn du einen Setter oder Getter oder beides definierst. Sonst sind es Felder.
    toastie bedankt sich. 

  5. #5
    toastie toastie ist offline Mitglied Bronze
    Registriert seit
    Nov 2009
    Beiträge
    43
    Ach ok...kann ich mir dann also die Klasse "Sessel" als Art Schablone für viele andere Sessel (Objekte) vorstellen?

    Und im Konstruktor werden die Variablen, die ich innerhalb der Klasse deklariert habe, definiert? Und diese Variablen gelten für jedes Objekt, das ich aus dieser Klasse erstelle?
     

  6. #6
    Avatar von sheel
    sheel sheel ist offline Moderator
    tutorials.de Moderator
    Registriert seit
    Jul 2007
    Beiträge
    4.504
    Genau, eine Klasse ist quasi eine Schablone für jedes ihrer Objekte;
    und jedes der Objekte hat (hier beim Sessel) Farbe, Lehne etc...
    Die Objekte unterscheiden sich nur bei den Werten der Variablen.

    Und der Konstruktor wird eben für jedes neue Objekt einmal beim Erstellen aufrufen, zB um den Variablen seines Objekts irgendwelche Standartwerte zuzuweisen.

    Ohne den hättest du mit einem neuen Objekt einen Stuhl, der keine Farbe hat, kein Gewicht;...ob er eine Lehne hat ist unbekannt...usw.

    Natürlich kannst du auch Parameter übergeben, um die Erstellung zu beeinflussen...ist aber eine andere Geschichte
    toastie bedankt sich. 

  7. #7
    toastie toastie ist offline Mitglied Bronze
    Registriert seit
    Nov 2009
    Beiträge
    43
    Ok also hat jede Klasse einen Konstruktor? Oder brauche ich für jedes Objekt einen Konstruktor? Muss der Konstruktor so wie die Klasse heißen?

    Könntet ihr mir vielleicht mal ein Beispiel geben oder einen Link, aus dem ersichtlich ist wie das alles zusammenhängt?
    Geändert von toastie (16.09.10 um 15:16 Uhr)
     

  8. #8
    Tim Bureck Tim Bureck ist offline Mitglied Platin
    Registriert seit
    Apr 2009
    Ort
    Düsseldorf (NRW)
    Beiträge
    508
    Vielleicht solltest du dir mal ein Buch für Einsteiger durchlesen. Da werden solche Sachen detailliert erklärt. Es ist jetzt nicht so, dass wir dir nicht helfen wollten, aber dieses kleinschrittige Frage/Antwortspiel nimmt einfach für alle Parteien hier mehr Zeit in Anspruch, als wenn du dir die Dinge anlesen würdest. Wenn du konkrete Programmierfragen hast, kannst du ja gerne wieder fragen.

    Um das ganze jetzt abzurunden, hier noch ein Lesetipp:

    http://openbook.galileocomputing.de/visual_csharp_2010/
    toastie bedankt sich. 

  9. #9
    Avatar von sheel
    sheel sheel ist offline Moderator
    tutorials.de Moderator
    Registriert seit
    Jul 2007
    Beiträge
    4.504
    Der Konstruktor gilt schon für jedes Objekt, schreiben musst du ihn aber nur einmal im Quelltext, in die Klasse/Schablone rein.

    Ob er so wie die Klasse heißen muss, hängt eigentlich hauptsächlich von der Sprache ab; Konstruktoren gibts nicht nur in C#.
    In C# muss er (damit der Compiler ihn als Konstruktor erkennt) den selben Namen wie die Klasse und keinen Rückgabewert (void, int etc) haben. Siehe Beispiel von Shakie (der macht allerdings gar nichts)

    Und ja, jede Klasse hat theoretisch einen Konstruktor, du musst ihn aber nicht zwingend hinschreiben.
    Wenn du keinen schreibst, dichtet sich der Compiler einfach einen dazu, der gar nichts tut.
    toastie bedankt sich. 

  10. #10
    toastie toastie ist offline Mitglied Bronze
    Registriert seit
    Nov 2009
    Beiträge
    43
    Ok das werde ich nutzen


    Vielen Dank für eure Mühe


    MfG

    toastie
     

  11. #11
    Avatar von Spyke
    Spyke Spyke ist offline Capoeirista
    Registriert seit
    Oct 2002
    Beiträge
    931
    Zitat Zitat von toastie Beitrag anzeigen
    2. Was kann ich mit einem Objekt machen und wie kann ich einem Objekt Eigenschaften geben? (Bei Missverständnis bitte nachfragen)
    Meinst du Felder oder Eigenschaften?
    In deinem Beispiel hast du nämlich blos Felder, du greifst direkt auf einen Variablenwert drauf zu.

    Eine Eigenschaft wäre eher:
    Code csharp:
    1
    2
    3
    4
    5
    6
    
    private bool meinFeld;
    public bool MeineEigenschaft
    {
            get { return meinFeld; }
            set { meinFeld= value; }
    }
    Eigenschaft sind im Prinzip vereinfachte Methodenaufrufe.
    Der Compiler erstellt intern eine
    get_MeineEigenschaft Methode zum abrufen eines Werte
    set_MeineEigenschaft Methode zum setzen eines Wertes

    Eigenschaften verweisen meist nur auf ein Feld, können aber jeh nach Status des Objektes unterschiedliche Werte abrufen da hier nicht direkt auf ein Speicher zugegriffen wird.
     
    www.iv-interactive.de - Projektewebsite
    WikiParser - aktuelles Projekt

Ähnliche Themen

  1. Allgemeine QT Frage
    Von MeeriMomo im Forum C/C++
    Antworten: 2
    Letzter Beitrag: 06.05.10, 09:41
  2. Allgemeine Frage
    Von f-zoid im Forum Visual Basic 6.0
    Antworten: 2
    Letzter Beitrag: 19.09.06, 19:57
  3. Allgemeine Frage
    Von Ipanema im Forum Relationale Datenbanksysteme
    Antworten: 2
    Letzter Beitrag: 14.03.05, 13:38
  4. Allgemeine Frage zu ASP
    Von kurtparis im Forum ASP
    Antworten: 2
    Letzter Beitrag: 02.02.05, 23:20
  5. allgemeine frage zu vbs ..
    Von maychu im Forum Coders Talk
    Antworten: 8
    Letzter Beitrag: 14.10.04, 14:01