Kategoria: Ścieżka .NET

Klasy statyczne w C#

Klasa statyczna to taka klasa, której nie możemy utworzyć instancji.

 W tym wpisie (tutaj) mówiłem czym jest klasa, jeżeli nie wiesz czym jest, to najpierw zapoznaj się z wpisem.

Klasa może posiadać swoją instancję w postaci konkretnego obiektu, aby utworzyć obiekt musimy użyć słowa kluczowego “new” np.:

Ołówek ołówekŻółty = new Ołówek();

Ołówek to klasa, która opisuje czym jest ołówek, że posiada jakąś długość, czy jest naostrzony, jaki ma kolor.

Obiekt to konkretny ołówek np. ten, który leży na twoim biurku lub ten, który leży w sklepie.

Klasa statyczna to taka, gdzie nie można utworzyć konkretnego obiektu i jest związana z typem klasy, a nie jego konkretną instancją.

Pewnie zadajesz sobie teraz pytanie, do czego został stworzony tak dziwny twór, jak klasy statyczne.

Pokażę Ci przykład, który rozwieje to pytanie 🙂

Read More

Klasy i metody generyczne

W tym wpisie poruszę 2 tematy: czym są metody generyczne oraz czym są klasy generyczne.

Zanim jednak wyjaśnimy sobie te 2 zagadnienia, trzeba powiedzieć czym jest określenie generyczne.

Generyczny, czyli uogólniony. Programowanie generyczne (programowanie uogólnione) jest jednym z paradygmatów programowania. Mówiąc prosto, jest to pisanie kodu uogólnionego, w którym nie do końca wiemy jaki typ danych będzie dostępny, ale wiemy, że niezależnie od typu danych zachowanie będzie takie samo.

Jak zawsze przykład rozjaśni o co chodzi 🙂

Read More

Czym jest enum w C# i do czego można go wykorzystać?

Dzisiaj chciałem poruszyć temat enum w C# czym jest i dlaczego warto go stosować.

Zacznijmy od odpowiedzi na pytanie nr 1: Czym jest słowo kluczowe enum?

Enum to typ wyliczeniowy zdefiniowanych przez zestaw nazwanych stałych bazowego typu całkowitoliczbowego.

Od razu przykład, który wyjaśni co i jak:

enum PoraRoku{
  Wiosna,
  Lato,
  Jesien,
  Zima
}

Każdej z podanych wartości odpowiada kolejna liczba całkowita począwszy od 0 (chyba, że zakodujemy to inaczej :p ), czyli tak naprawdę nasz enum wygląda tak:

Read More

Czym są metody wirtualne w C#?

Metody Wirtualne to po prostu metody, które można nadpisać w klasie dziedziczącej.

Metoda wirtualna jest oznaczana słowem kluczowym virtual.

Czas na szybki przykład pokazujący co i jak 🙂

public class Book
{
    public int GetPageCount()
    {
        return 300;
    }
    public virtual string GetPrice()
    {
        return "30 złoty";
    }
}

public class PromotionBook : Book
{

    public override string GetPrice()
    {
        return "15 złoty";
    }
}
Read More

Czym jest polimorfizm?

Dzisiaj poruszę temat polimorfizmu, czym jest i do czego jest używany.

Najprościej mówiąc polimorfizm jest to wielopostaciowość, tzn. że pod jedną metodą może się kryć tak naprawdę wiele metod.

Polimorfizm można podzielić na 2 rodzaje:

  • Polimorfizm statyczny
  • Polimorfizm dynamiczny

Polimorfizm Statyczny

Polimorfizm statyczny można podzielić na 2 rodzaje:

  • Przeciążanie metod

Przykład:

Read More

Czym się różni klasa abstrakcyjna od interfejsu ?

Dzisiaj szybkie podsumowanie tematu klas abstrakcyjnych i interfejsu.

Linki do poprzednich wpisów 🙂

Interface

Abstrakcja

Nie można utworzyć instancji klasy abstrakcyjnej ani interfejsu.

Klasa może dziedziczyć tylko po jednej klasie abstrakcyjnej, ale może dziedziczyć po wielu interfejsach.

Klasa abstrakcyjna może mieć w sobie implementację, a interface nie (do wersji C# 8.0 opublikowanej w sierpniu 2019).

Od 2019 klasa abstrakcyjna dalej może mieć implementację, a interface może mieć prostą implementację metod.

Prostą to znaczy, że nie może korzystać z np. z wstrzykiwanych przez konstruktor serwisów, repozytoriów itd. (jeżeli nie wiesz o co chodzi spokojnie dowiesz się w kolejnych wpisach).

Interface może dziedziczyć tylko po innych interfejsach. Klasa abstrakcyjna może dziedziczyć po klasach abstrakcyjnych, interfejsach a nawet po zwykłych klasach.

Kiedy używać klasy abstrakcyjnej a kiedy interfejsu ?

Zacznij od interfejsu i używaj interfejsu chyba, że chcesz lub potrzebujesz, aby metoda posiadała implementację, wtedy użyj klasy abstrakcyjnej, która dziedziczy po interfejsie 🙂

Czym jest klasa abstrakcyjna w C#?

Klasa abstrakcyjna jak nazwa wskazuje jest czymś abstrakcyjnym, to znaczy taką klasą, która nie może posiadać instancji. Coś co jest abstrakcyjne (poza sztuką :p ) nie może być realne.

Nasuwa się więc bardzo istotne pytanie.

A po co to? A komu to potrzebne?

Posłużę się tutaj przykładem z wpisu o interfejsach (tutaj) i przykładem jaki tam był.

Read More

Czym jest interface w C#?

Prosto i rzeczowo 🙂

Interface jest definicją(wzorem) dla klas, które będą go implementować.

W interfejsie określa się np. jakie metody mają być zdefiniowane w klasie. Klasa, która będzie dziedziczyć po interfejsie musi posiadać metody zdefiniowane w interfejsie.

Szybki przykład pokazujący o co chodzi w praktyce

public interface IBook
{
    public int GetPageCount();
    public string GetPrice();
}

public class Book : IBook
{
    public int GetPageCount()
    {
        return 300;
    }
    public string GetPrice()
    {
        return "30 złoty";
    }
}
Read More

Projekt sygnalizator świateł

Czas na zrobienie kolejnego kroku i stworzenie kolejnej aplikacji, w której wykorzystamy zdobytą do tej pory wiedzę.

W tej serii wpisów pokażę Ci, jak stworzyć aplikację, która będzie posiadała w sobie sygnalizator świateł znajdujący się na skrzyżowaniach. Zobaczysz, że budowanie aplikacji jest proste i przyjemne 🙂 Aplikacja będzie wykorzystywała wiedzę, którą przedstawiałem do tej pory na blogu tak, żeby pokazać i utrwalić zdobytą wcześniej wiedzę.

Ok, a więc po kolei zaczynajmy.

Pierwszym krokiem jest stworzenie nowego projektu w VisualStudio. W tym celu wybierzmy sobie projekt WPF App, który będzie wykorzystywał .NET Core.

Następnie wybierzmy lokalizację naszego projektu oraz jego nazwę.

Read More

Dawno, dawno temu była sobie klasa. cz. 5 Dziedziczenie

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

Część 5. Dziedziczenie

Jak w każdej historii nadchodzi pora na kolejne pokolenie, które dziedziczy cechy swoich rodziców i rusza we własną podróż. 🙂

W C# istnieje pojęcie dziedziczenia tak jak w prawdziwym życiu. Tutaj jednak klasa może dziedziczyć tylko po jednej klasie (jednym rodzicu), a nie jak w prawdziwym życiu po 2 rodzicach.

Ale po co nam dziedziczenie w programowaniu i do czego może się przydać dziedziczenie?

Już śpieszę z odpowiedzią 🙂

Read More