Dawno, dawno temu, za siedmioma górami, za siedmioma lasami była sobie Klasa.

Część 2. Konstruktor.

Czas na kolejne ważne zagadnienie, czyli konstruktor. Konstruktor, jak sama nazwa może sugerować np. jest odpowiedzialny za konstruowanie  🙂 ….. Ale konstruowanie czego ??? Ano obiektu 🙂

Każda Klasa ma w sobie konstruktor, który jest używany, żeby utworzyć z Klasy konkretny obiekt. Taki podstawowy konstruktor, który odpowiada tylko za utworzenie obiektu nie musi być przez Ciebie pisany za każdym razem, ponieważ jeżeli nie potrzebujesz nic więcej, żeby robić coś dodatkowego podczas tworzenia obiektu, to szkoda marnować klawiatury i czasu. Taka jest zasada, że konstruktor zawsze jest, a jak go nie napiszesz, to podczas kompilacji kodu “można powiedzieć, że kompilator doda konstruktor do Klasy za Ciebie”.

Przedstawię teraz kilka Klas, które będą miały w sobie konstruktory na podstawie naszej klasy Ołówek i pewnie wszystko zaraz stanie się zupełnie jasne 🙂

class Ołówek
{
    public string Kolor;
    public bool OłówekJestNaostrzony;
    public int DługośćOłówkaWcm;
}

Tutaj konstruktor jest podstawowy, więc nie jest pisany

class Ołówek
{
    public Ołówek()
    {
    }

    public string Kolor;
    public bool OłówekJestNaostrzony;
    public int DługośćOłówkaWcm;
}

Tutaj konstruktor jest podstawowy, dokładnie jak wyżej, ale został napisany przez programistę. Nic się w nim nie dzieje, nie ma parametrów wejściowych, ani nie posiada żadnych instrukcji w sobie.

class Ołówek
{
    public Ołówek()
    {
        Kolor = "niebieski";
        OłówekJestNaostrzony = true;
        DługośćOłówkaWcm = 12;
    }

    public string Kolor;
    public bool OłówekJestNaostrzony;
    public int DługośćOłówkaWcm;
}

Tutaj mamy konstruktor, który na starcie mówi, że każdy obiekt, jaki powstanie na bazie klasy Ołówek będzie koloru niebieskiego, będzie naostrzony i będzie miał 12 cm długości.

Teraz kilka słów opisu, z czego składa się konstruktor. Jest on zbudowany z:

  1. modyfikatora dostępu, u nas jest on Public (o modyfikatorach dostępu będzie potem).
  2. nazwy konstruktora i musi on być taki sam jak nazwa Klasy. Taka zasada, żeby kompilator umiał się domyśleć, gdzie jest konstruktor.
  3. parametrów wejściowych znajdujących się w (). Kilka przykładów (string kolorOłówka, int początkowaDługość)
  4. ciała konstruktora, w którym mogą być wykonywane operacje podczas tworzenia obiektu. Przykład: przypisanie właściwości na start
    Kolor = “niebieski”;
    ołówekJestNaostrzony = true;
    DłógośćOłówkaWcm = 12;
screen z Visual Studio. Numery na screenie odpowiadają numerom z listy

Istotną informacją jest to, że konstruktorów w Klasie może być kilka. Istnieje możliwość zdefiniowania konstruktorów, dzięki czemu można zdecydować czy obiekt, który powstanie będzie tworzony na podstawie konstruktora bezparametrowego i będzie miał np. podstawowe informacje, czy użyjemy konstruktora z parametrami, aby ustawić jakieś wartości na start.

class Ołówek
{
    public Ołówek()
    {
        Kolor = "niebieski";
        OłówekJestNaostrzony = true;
        DługośćOłówkaWcm = 12;
    }

    public Ołówek(string kolorOłówka, int początkowaDługość, bool ołówekJestNaostrzonyNaPoczątku)
    {
        Kolor = kolorOłówka;
        OłówekJestNaostrzony = ołówekJestNaostrzonyNaPoczątku;
        DługośćOłówkaWcm = początkowaDługość;
    }

    public string Kolor;
    public bool OłówekJestNaostrzony;
    public int DługośćOłówkaWcm;
}
screen z Visual Studio naszej klasy

Mam nadzieję, że masz obraz tego, czym jest konstruktor 🙂

To be continued …