Sie sind nicht angemeldet.

1

Freitag, 3. Juli 2009, 16:56

Tutorial: Klassen erstellen

In diesem Tutorial möchte ich zeigen, wie man in C# eine Klasse erstellt. Die dargestellte Vorgehenseweise ist dem in JAVA oder C++ mehr oder weniger ähnlich.

Eine Klasse ist der Bauplan für ein Objekt. In der objektorientierten Programmierung fasst man Gedankengänge zu Objekten zusammen, die man dann beliebig manipulieren kann. Als Beispiel kann man das Form-Objekt nennen. Es stellt ein einfaches Fenster dar. Durch Anderung der voreingestellten Werte kann man z.B. die Größe ändern oder Steuerelemente hinzufügen.

1. Das Klassengerüst

Der Klassenkörper besteht aus dem Schlüsselwort "class", dem Namen der Klasse und dem obligatorischem {}-Block.

Quellcode

1
2
class Beispiel
{}


2. Die Feldvariablen definieren

Die sogennten Felder sind die Variablen, mit denen in der Klasse gearbeitet wird. Sie verden wie normale Variablen mit "Typ" und "Variablename" deklariert, mit der Besonderheit, dass sie die Schlüsselworter "public" oder "private" vor der Deklaration besitzen. Sie werden direkt im {}-Block definiert. Das Schlüsselwort "Public" bedeutet, dass das Feld von Außen für andere Klassen sichtbar ist, das "private" bewirkt, dass die Variable dagegen nur von der Klasse genutzt werden kann, in der sie deklariert wurde. Deshalb ist es auch in den C#-Programmierrichtlinien vorgesehen, Felder generell als "private" zu deklarieren, weil der Zugriff von außen auf die Felder sehr Gefährlich sein kann. Für diesen zweck soll man die weiter unten beschrieben Eigenschaften verwenden.

Quellcode

1
2
3
4
class Beispiel
{
private int beispielvariable = 2;
}


3. Der Konstruktor

Der Konstruktor ist eine spezille Methode der Funktion, der bei der Instanzierung, also der erstellung eines Objektes in Speicher anhand der Klasse, aufgerufen wird. Er dient im wesentlichen dazu, die Felder mit vom Benutzer eingegebenen Werten zu initialisieren oder andere Methoden aufzurufen. Deshalb erstellt man in der Regel mehrere Konstruktoren (Überladung des Konstruktors), die dann eine verschiedene Anzahl an Argumenten aufnehmen können.

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class Beispiel
{
// Feld
private int beispielvariable;


// Konstruktor ohne Argument (Standardkonstruktor).
Beispiel()
{
beispielvariable = 2; // Initialisierung des Feldes.
}

// Überladener Konstruktor.
Beispiel(int vomBenutzer)
{
beispielvariable = vomBenutzer; // Initialiserung anhand des Argumentes.
}
}


4. Die Methoden

Als Methoden bezeichnet man die Funktionen und Prozeduren der Klasse, die man jeweils auch die Schlüsselworter "public" oder "private" vor der Methodendefinition definiert. Hier gilt dasselbe wie bei den Feldern: "public" = von Außen aufrufbar und "private" = nur von der Klasse aufrufbar. Methoden sind meistens "public", da man sie in der Regel von Außen aufruft.


Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class Beispiel
{
// Feld
private int beispielvariable;


// Konstruktor ohne Argument (Standardkonstruktor).
Beispiel()
[...]

// Überladener Konstruktor.
Beispiel(int vomBenutzer)
[...]

// Methode
public void BeispielvriableWertZuweisen(int vomBenutzer)
{
beispielvariable = vomBenutzer; // Initialiserung anhand des Argumentes.
}
}


Die Methoden kann man wie den Konstruktor überladen, indem man eine zweite mit dem gleichen Namen, aber einer anderen Anzahl an Argumenten erstellt.

5. Die Eigenschaften

Die Eigenschaften sind spezielle Methoden, die dazu dienen, einem Feld einen Wert zuzuweisen oder den Wert eines Feldes zurückzuliefern. Man definiert eine Eigenschaft, indem man "public", "Typ der Eigenschaft" und "Name der Eigenschaft", wobei der Typ der des Feldes sein muss. In der Eigenschaft definiert man einen get- und einen set-Accessor. Die beiden Accessoren dienen dem Zweck, das Feld auszulesen bzw. ihm einen Wert zuzuweisen. Man kann auch nur einen get-Accessor definieren, dieser Eiogenschaft kann man dann nur Werte zuweisen, nicht lesen. Solche Eigenschaften bezeichnet man als schreibgeschützt.

Quellcode

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
class Beispiel
{
// Feld
private int beispielvariable;


// Konstruktor ohne Argument (Standardkonstruktor).
Beispiel()
[...]

// Überladener Konstruktor.
Beispiel(int vomBenutzer)
[...]


// Methode
public void BeispielvriableWertZuweisen(int vomBenutzer)
[...]


// Eigenschaft
public int Beispielvariable
{
get { return this.beispielvariable; }
set { this.beispielvariable = value; }
}
}


this bezeichnet immer die aktuelle Instanz der jeweiligen Klasse, und value den der Eigenschaft übergebenen Wert.

6. Verwendung von Klassen aus dem Code

Jetzt möchte ich zeigen, wie man die oben definierte Klasse verwendet. Man sollte beachten, dass das nur eine sinnlose Beispileklasse ist, um den Aufbau zu demonstrieren. Richtige C#-Klassen sind viel umfangreicher, z.B. die Form-Klasse aus dem .NET-Framework.
Ein Objekt anhand einer Klasse erstellt man, indem man eine Instanz davon erstellt. Dabei wird ein neues Objekt im Speicher, dem Heap, erstellt. Man erstellt ein Objekt indem man

Quellcode

1
Beispiel Objektname = new Beispiel();

schreibt. Dabei ist der Objektname frei wählbar und das Schlüsselwort new dient dazu, ein neues Objekt anzulegen. Nach "new" wird der Konstruktor aufgerufen, im Beispiel der Standardkonstruktor. Man kann aber auch durch

Quellcode

1
Beispiel Objektname = new Beispiel(2);

den überladenen aufrufen.
Die definierte Methode ruft man auf, indem man "Objektname.Mehodenname" schreibt:

Quellcode

1
Objektname.BeispielvriableWertZuweisen(3334);

Die dazugehörigen Argumente werden in den Klammern zugewiesen. Ist die Methode eine Funktion, so schreibt man:

Quellcode

1
hierKommtDerWertRein = Objektname.Funktion();

Die Eigenschaften verwendet man folgend:

Quellcode

1
Objektname.Eigenschaft = Wert;

oder

Quellcode

1
hierKommtDerWertRein = Objektname.Eigenschaft;


Folgend noch eine weitere Klasse zur Veranschaulichung:

Klasse:

Quellcode

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
class Quadrat
{
private double zahl;

public Quadrat()
{
zahl = 0;
}

public Quadrat(double eingabe)
{
zahl = eingabe;
}

public void Quadriere()
{
zahl = zahl * zahl;
}

public double Zahl
{
get { return this.zahl; }
set { this.zahl = value; }
}
}

Verwendung:

Code:
static void Main(string[] args)
{
Quadrat meinQuadrat = new Quadrat(2);
meinQuadrat.Quadriere();
Console.WriteLine(meinQuadrat.Zahl); // Ausgabe: 4
meinQuadrat.Zahl = 5;
meinQuadrat.Quadriere();
Console.WriteLine(meinQuadrat.Zahl); // Ausgabe: 25
}
Kostenlose .NET Software

http://www.quadsoft.de.vu