Allgemeine C# Frage

toastie

Mitglied
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:
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:
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
 
Zuletzt bearbeitet:
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?
 
Zuletzt bearbeitet:
Die Eigenschaften hat der Sessel auch, wenn du folgenden Konstruktor verwenden würdest:
C#:
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.
 
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?
 
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
 
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?
 
Zuletzt bearbeitet:
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/
 
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.
 

Neue Beiträge

Zurück