W poniższym poście poruszę ważny temat w programowaniu jakim są klasy.
Co to jest klasa? Po co nam klasy? Dlaczego ich używamy? Od definicji po konstruktor.

Co to jest klasa? Klasa to tak naprawdę schemat dla naszych danych. Schemat to zbiór informacji mówiący o tym, jakie składowe będzie posiadał nasz obiekt oraz jakie operacje będziemy mogli wykonać na nim. Obiekt to instancja klasy. Metody i zmienne stanowiące klasę nazywamy składowymi.

 

Definicja klasy

 

Definicja klasy zaczyna się od słowa kluczowego class, po którym następuje nazwa klasy. Wnętrze klasy jest otoczone parą nawiasów klamrowych.

Poniżej powszechna definicja klasy:

gdzie,

  • modyfikator_dostepu określa dostępność samej klasy oraz wszystkich jej składowych. Jeżeli modyfikator dostępu nie będzie podany dla klasy to domyślnie będzie to internal. Domyślny modifykator dostępu dla składowych klasy to private;
  • zwracany_typ określa rodzaj zmiennej, która zostanie zwrócona z metody o ile typ danych będzie zwracany. Jeżeli nie to zwracany typ takiej metody to void;
  • aby uzyskać dostęp do składowej klasy należy posłużyć się operatorem kropki (.);
  • operator kropki (.) łączy nazwę obiektu z nazwą składowej.

Definicja Klasy:

Metody klasy oraz hermetyzacja

 

Metoda klasy, tak samo jak pole klasy, posiada swoją definicję. Co to definicja? Definicja to określenie jak dana klasa ma wyglądać, co w sobie ma zawierać i co ma wykonywać w programie. Działa na każdym obiekcie klasy, której jest składową i ma dostęp do wszystkich składowych tej klasy.

 

Zmienne składowe są atrybutami obiektu (jeżeli patrzymy na nie z poziomu projektowania) i przechowywane są, jako prywatne (z poziomu hermetyzacji). Składowe te mogą być dostępne jedynie, jeżeli zostaną opatrzone modyfikatorem dostępu public.

 

Powyższe punkty postaramy się dostrzec w poniższym przykładzie. Spróbujmy zatem ustawić oraz pobrać wartości od różnych składowych klasy:

Konstruktor klasy

 

Co to jest Konstruktor? jak poprawnie go utworzyć? Konstruktor klasy to metoda, która jest wykonywana zawsze, kiedy tworzymy obiekt klasy.

 

Podczas tworzenia konstruktora przypisujemy mu dokładnie taką samą nazwę jak nazwa klasy konstruktor nie zwraca żadnego typu. Do zademonstrowania użycia konstruktora posłużę się powyższym przykładem.

Domyślny konstruktor nie ma żadnego parametru, jeżeli jednak zdecydujemy, nasz konstruktor te parametry może posiadać.Język C# pozwala nam na to poprzez przypisanie wartości początkowej do obiektu w trakcie jego tworzenia.

 

Zademonstruje to  na poniższym przykładzie:

Destruktor klasy

 

Destruktor jest specjalną metodą klasy, która jest wykonywana przez Garbage Collector. Destruktor ma dokładnie taką samą nazwę jak nazwa klasy oraz przedrostek (~). Destruktor nie może zwracać oraz przyjmować żadnych parametrów.

 

Destruktor może być bardzo przydatny, gdy chcemy zwolnić zasoby pamięci przed wyjściem z programu. Destruktory nie mogą być dziedziczone ani przeciążone.

 

Statyczne składniki klasy

 

Składniki statyczne możemy zdefiniować za pomocą słowa kluczowego static. Jeżeli zadeklarujemy składową jako statyczną nie ważne jak wiele obiektów klasy utworzymy, istnieje zawsze tylko jedna kopia składowej statycznej.

Słowo kluczowe static mówi nam o tym, że istnieje tylko jedna instancja składowej dla klasy. Zmienne statyczne używane są przeważnie do definiowania stałych, ponieważ ich wartości mogą być wywołane bez tworzenia instancji danej klasy. Statyczne zmienne mogą być zainicowane na zewnątrz metody lub definicji klasy. Mogą również zostać zainicowane wewnątrz definicji klasy.

 

Można również zdefiniować metody klasy jako statyczne. Takie metody mają dostęp tylko do zmiennych statycznych. Funkcje statyczne istnieją nawet zanim obiekt zostanie utworzony. Poniżej przykład użycia statycznych metod:

Klasa statyczna

 

Warto również wiedzieć, że możemy utworzyć statyczną klasę. Klasa taka mówi, iż nie została napisana po to, aby tworzyć nowe obiekty. Nawet, gdybyśmy chcieli utworzyć nowy obiekt klasy statycznej kompilator zgłosi błąd.

W klasie takiej mogą znajdować się tylko statyczne składowe. Prostym przykładem takie klasy może być klasa odpowiedzialna za wykonywanie obliczeń matematycznych. Nie chcemy tworzyć instancji klasy za każdym razem, kiedy chcemy wykonać dodawanie lub odejmowanie pomiędzy liczbami. W takim przypadku warto przygotować klasę statyczną:

 

Pytania? sugestie? piszcie komentujcie.

Oczywiście cały Przykłady dostępne na GitHubie.

Post Author: Csharpowe Zmagania

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

This site uses Akismet to reduce spam. Learn how your comment data is processed.