This article has been localized into Polish by the community.
Wprowadzenie do klas w C#
Wiele kursów zostawia kwestię klas na sam koniec. Jednakże, skoro w C# wszystko kręci się wokół programowania obiektowego, a co za tym stoi, wokół klas, omówimy pokrótce ich podstawowe cechy oraz zastosowania.
Po pierwsze, powiedzmy sobie czym właściwie są klasy. Klasą nazywamy grupę powiązanych ze sobą metod i zmiennych. W większości przypadków, aby mieć z niej jakiś pożytek, tworzymy jej instancję, nazywaną obiektem. Za pomocą tego obiektu, możemy korzystać z wyżej wspomnianych metod i zmiennych. Oczywiście możemy stworzyć tyle instancji naszej klasy ile tylko zapragniemy. Na temat Klas, i ogólnie Programowania Obiektowego można by rozmawiać bez końca. Część z niego poznamy zarówno w tym rozdziale jak i w późniejszych.
W rozdziale "Hello world" po raz pierwszy spotkaliśmy się z klasą, skąd można zauważyć, że klasy są fundamentem programowania w C#. Poszerzmy nieco nasz przykładowy program "Hello world" dodając naszą własną klasę:
using System;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Car car;
car = new Car("Red");
Console.WriteLine(car.Describe());
car = new Car("Green");
Console.WriteLine(car.Describe());
Console.ReadLine();
}
}
class Car
{
private string color;
public Car(string color)
{
this.color = color;
}
public string Describe()
{
return "This car is " + Color;
}
public string Color
{
get { return color; }
set { color = value; }
}
}
}
No dobrze, mamy ty sporo nowych rzeczy, ale większość z nich nie różni się tak mocno od rzeczy, których wcześniej już używaliśmy. Jak widać, zdefiniowaliśmy nową klasę "Car". Jest ona zadeklarowana w tym samym pliku co nasza główna aplikacja - dla przejrzystości, ale często lepiej tworzyć nowe klasy w oddzielnych plikach. Nasza klasa zawiera w sobie definicję jednej zmiennej "color", która oczywiście mówi nam o kolorze naszego samochodu. Zadeklarowaliśmy ją jako prywatną, co jest dobrą praktyką - dostęp do zmiennych z zewnątrz powinien odbywać się za pomocą właściwości. Właściwość o nazwie Color jest zdefiniowana na końcu klasy, dając dostęp do zmiennej "color".
Oprócz tego, klasa Car zawiera konstruktor, który przyjmuje jeden parametr, pozwalając na zainicjalizowanie obiektów typu Car z określonym kolorem. Ponieważ mamy tylko jeden konstruktor, obiekty typu Car mogą być stworzone tylko z jedną cechą - kolorem. Metoda Describe() pozwala na utworzenie ładnej wiadomości opisującej nasz samochód - a konkretniej jego kolor. Ta wiadomość jest zwracana jako ciąg znaków (string) przez naszą metodę.
Teraz, w naszej głównej aplikacji deklarujemy zmienną typu Car. Następnie tworzymy jej instancję, podając "Red" jako parametr. Według definicji naszej klasy, oznacza to, że czerwony kolor zostanie przypisany do koloru samochodu (zawartego w zmiennej "color"). Aby to sprawdzić, wywołujemy metodę Describe(), i żeby pokazać jak łatwo możemy stworzyć wiele instancji tej samej klasy, robimy to ponownie, jednak tym razem używając innego koloru. Właśnie stworzyliśmy naszą pierwszą funkcjonalną klasę oraz jej użyliśmy!
W kolejnych rozdziałach, nieco dokładniej wyjaśnimy pojęcia tj. właściwości, konstruktory i modyfikatory dostępu.