C# Klassen und Objekte

Du weißt mit Sicherheit, dass C Sharp eine so genannte objektorientierte Programmiersprache ist. Doch was bedeutet das eigentlich? Schauen wir uns jetzt also C# Klassen mal genauer an…

Eine Klasse ist wie eine Vorlage

Wie immer werde ich versuchen die Theorie so sinnbildlich wie möglich zu erklären. Eine Klasse ist wie eine Vorlage oder eine Blaupause. Von Klassen kannst du Objekte erstellen. Dieser Vorgang nennt sich Instanziierung.

Zuerst erstellen wir eine Klassen. Wir gehen mal davon aus, dass wir eine Videoplattform (wie Netflix oder ähnliches) programmieren wollen. Für diese Anwendung benötigen wir auf jeden Fall eine Klasse mit dem Name Movie die eine Vorlage für jeden möglichen Film wird:

public class Movie {

} 

Merke: Eine Klasse erstellst du mit dem Keyword class (engl. für Klasse) und du erstellst sie außerhalb deiner Programm Klasse

Zum jetzigen Zeitpunkt hat unsere Movie Klasse noch keine Eigenschaften (Properties), Felder oder Methoden. Als nächstes machen wir uns jetzt mal Gedanken darüber, was unsere Movie Klasse also für Eigenschaften haben sollte. Wie wäre es mit einem Titel, einer Altersbeschränkung und einer Kategorie? Für die jeweiligen Eigenschaften wählst du dann natürlich die passenden Datentypen:

public class Movie {

    public string title;
    public int minAge = 6; // Hier ist ein Standardwert zu gewiesen
    public string category;

}

Wir haben unserer Movie Klasse jetzt also drei Eigenschaften bzw. Variablen hinzugefügt. Du kannst Variablen natürlich einen Standardwert zuweisen (beispielsweise geben wir an, dass das standardmäßige Mindestalter 6 ist).

Ein Objekt von C# Klassen erzeugen (instanziieren)

Jetzt kommt der spannende Teil. C# ist eine objektorientierte Programmiersprache, weil sich der Code den wir Programmieren zu großen Teilen auf bestimmte Objekte (Instanzen) einer Klasse bezieht.

Wichtig: Wenn wir jetzt annehmen, das wir 20 Filme in unserer Video/Film Plattform haben, dann erstellen wir 20 Objekte (Instanzen) der Movie Klasse.

Schauen wir uns jetzt an, wie wir ein Objekt einer Klasse erzeugen. Dafür verwenden wir das Keyword new:

// Dieser Code würde in einer eigenen .cs Datei stehen 
// zwecks Übersichtlichkeit steht er hier
public class Movie {

    public string title;
    public int minAge = 6; // Hier ist ein Standardwert zu gewiesen
    public string category;

}


public class MoviePlatform { // Unser Programm ist auch eine Klasse


    public static void Main {
        
        Movie myFirstMovie = new Movie();
        
        myFirstMovie.title = "Der weiße Hai";
        myFirstMovie.minAge = 18;
        myFirstMovie.category = "Horror";

        Console.WriteLine("Titel: " + myFirstMovie.title);
        Console.WriteLine("Mindestalter: " + myFirstMovie.minAge);
        Console.WriteLine("Kategorie: " + myFirstMovie.category);

    }


}

Innerhalb der Main Methode haben wir jetzt eine Variable vom Datentyp Movie angelegt (ja, auch Klassen sind Datentypen) mit dem Namen myFirstMovie. Dafür haben wir das Keyword new verwendet und dann die Klasse angegeben von der wir ein Objekt erstellen wollen. Die beiden leeren Klammern sagen, dass für die Erstellung des Objektes keine initialen Werte übergeben werden:

// <Datentyp> <VariablenName> = <Wert der Variablen>
Movie myFirstMovie = new Movie();

Zu Deutsch würde diese Zeile Code als übersetzt lauten: Erstelle ein Objekt der Klasse Movie und binde dieses Objekt an die Variable mit dem Namen myFirstMovie vom Datentyp Movie.

Wie du sehen kannst, haben wir mit den nächsten Zeilen Code die Eigenschaften (bzw. Variablen) von diesem Movie-Objekt gesetzt/verändert. Unser erstelltes Objekt ist also ein Movie mit dem Titel Der weiße Hai aus der Kategorie Horror mit dem Mindestalter von 18 Jahren.

Auf die Variablen/Eigenschaften einer Klasse kannst du zugreifen, indem du den Zugriffsoperator . verwendest:

myFirstMovie.title = "Der weiße Hai"; // Der Punkt . ist der Zugriffsoperator
myFirstMovie.minAge = 18;
myFirstMovie.category = "Horror";

Beachte: Wir verwenden den Zugriffsoperator hier bei dem Objekt und nicht bei der Klasse selbst! Wir sagen also myFirstMovie.title und nicht Movie.title

Mit dem gleichen Operator kannst du dir natürlich nicht nur Werte setzen, du kannst auch Werte auslesen und ausgeben:

Console.WriteLine("Titel: " + myFirstMovie.title);
Console.WriteLine("Mindestalter: " + myFirstMovie.minAge);
Console.WriteLine("Kategorie: " + myFirstMovie.category);

C# ist also eine objektorientierte Programmiersprache, weil sich unser Code zu meist auf Instanzen (Objekte) einer Klasse bezieht. Mehr zum Thema C# Klassen kannst du hier lesen.


Datenschutz
IT Leismann, Inhaber: Jannick Leismann (Firmensitz: Deutschland), verarbeitet zum Betrieb dieser Website personenbezogene Daten nur im technisch unbedingt notwendigen Umfang. Alle Details dazu in der Datenschutzerklärung.
Datenschutz
IT Leismann, Inhaber: Jannick Leismann (Firmensitz: Deutschland), verarbeitet zum Betrieb dieser Website personenbezogene Daten nur im technisch unbedingt notwendigen Umfang. Alle Details dazu in der Datenschutzerklärung.