Klasa służy do definicji nowej kolekcji danych. Wyobraźmy sobie, że chcemy stworzyć prostokąt. Jak wiadomo prostokąt, możemy opisać poprzez wysokość i szerokość. Zatem, możemy stworzyć klasę z dwoma polami, które będą przechowywały wartości dla wysokości i szerokości. Aby otrzymać prostokąt o konkretnych wymiarach tworzymy obiekt danej klasy i nadajemy interesujące nas wartości dla pól np. wysokość=10, szerokość=15. Możemy tworzyć dowolną ilość obiektów danej klasy.
Klasa może składać się z pól, metod, zawierać inne klasy czy struktury.
Do stworzenia klasy używamy słowa kluczowego class. Zobaczmy prosty przykład:

  class Rectangle {
        
        public double height;
        public double width;
        
        public void ShowRectangle() {
            Console.WriteLine("Wysokość wynosi: {0}",height);
            Console.WriteLine("Szerokość wynosi: {0}",width);        }  
    }

Klasa składa się z dwóch pól typu double. Mają one za zadanie przechowywanie wartości wysokości i szerokości danego prostokąta. Klasa posiada także jedną metodę o nazwie ShowRectangle(), ma ona za zadanie wyświetlenie wartości pól danego prostokąta.
Gdy chcemy stworzyć obiekt naszej klasy musimy użyć słowa kluczowego new. Wywoływany wtedy jest konstruktor. Więcej na jego temat opiszę w innym wpisie.
Zobaczmy przykład:

using System;
class Program {
    static void Main() {
        Rectangle MyRectangle1 = new Rectangle();
        MyRectangle1.height = 10;
        MyRectangle1.width = 30;
        MyRectangle1.ShowRectangle();
        Console.ReadLine();
    }

    class Rectangle {
        //POLA
        public double height;
        public double width;
        //METODY
        public void ShowRectangle() {
Console.WriteLine("Wysokość wynosi: {0}",height);
          Console.WriteLine("Szerokość wynosi: {0}",width);        }  
    }
}

Rezultat działania aplikacji:

Klasy

Rys. Wartości pól obiektu klasy Rectangle

Na ekranie został wypisany stan obiektu o nazwie MyRectangle1. Dodajmy teraz nowy obiekt i wypiszmy jego stan. Zmodyfikujmy trochę naszą klasę aby zawierała nowe pole typu string, które będzie przechowywać wartość dla nazwy naszego prostokąta:

using System;
class Program {
    static void Main() {
        Rectangle MyRectangle1 = new Rectangle();
        MyRectangle1.name = "A";
        MyRectangle1.height = 10;
        MyRectangle1.width = 30;
        MyRectangle1.ShowRectangle();

        Rectangle MyRectangle2 = new Rectangle();
        MyRectangle2.name = "B";
        MyRectangle2.height = 120;
        MyRectangle2.width = 320;
        MyRectangle2.ShowRectangle();
        Console.ReadLine();
    }
    class Rectangle {
        //POLA
        public double height;
        public double width;
        public string name;
        //METODY
        public void ShowRectangle() {
            Console.WriteLine("Prostokąt {0}", name);
            Console.WriteLine("Wysokość wynosi: {0}",height);
            Console.WriteLine("Szerokość wynosi: {0}",width);
        }  
    }


}

Rezultat działania aplikacji:

Klasy

Rys. Stan obiektów klasy Rectangle

Zmodyfikujmy teraz wymiary jednego z obiektów klasy Reectangle i wypiszmy te zmiany na ekranie:

using System;
class Program {
    static void Main() {
        Rectangle MyRectangle1 = new Rectangle();
        MyRectangle1.name = "A";
        MyRectangle1.height = 10;
        MyRectangle1.width = 30;
        MyRectangle1.ShowRectangle();

        Rectangle MyRectangle2 = new Rectangle();
        MyRectangle2.name = "B";
        MyRectangle2.height = 120;
        MyRectangle2.width = 320;
        MyRectangle2.ShowRectangle();

        Console.WriteLine("Prostokąt A po zmianie wartości");
        MyRectangle1.height = 2;
        MyRectangle1.width = 4;
        MyRectangle1.ShowRectangle();

        Console.ReadLine();
    }
    class Rectangle {
        //POLA
        public double height;
        public double width;
        public string name;
        //METODY
        public void ShowRectangle() {
            Console.WriteLine("Prostokąt {0}", name);
            Console.WriteLine("Wysokość wynosi: {0}",height);
            Console.WriteLine("Szerokość wynosi: {0}",width);
        }  
    }


}

Rezultat działania aplikacji:

Klasy

Rys. Stan obiektów klasy Rectangle

Możemy dowolnie zmieniać stan danego obiektu.

Podsumowanie:
W wpisie tym wyjaśniłem czym jest klasa. Pokazałem przykład klasy prostokąt, która jest napisana w jak najprostszy sposób. Stworzyliśmy obiekty naszej klasy i przetestowaliśmy zmianę wartości ich pól. Znajomość i umiejętność tworzenia klas i operowania na nich jest niezbędna w programowaniu obiektowym.