Zdobądź zawód w IT!     |       Ścieżki Kariery 30% taniej     |      Jeszcze przez:

2 dni 17 godzin
close
Cart icon
User menu icon
User icon
Skontaktuj się z nami:
+48 888-916-333
Lightbulb icon
Jak to działa?
FAQ icon
FAQ
Contact icon
Kontakt
Terms of service icon
Regulamin zakupów
Privacy policy icon
Polityka prywatności
Co to jest abstrakcja w programowaniu w języku C#?

C# - abstrakcja i enkapsulacja

Język C# jest językiem typowo obiektowym. W programowaniu obiektowym mamy pewne reguły, które umożliwiaja nam tworzenie bardziej czytelnego i łatwiejszejszego w utrzymaniu kodu. W tym artykule przedstawimy dwie takie reguły: abstrakcję oraz enkapsulację. Pokażemy m.in przykłady kodu stworzonego z użyciem tych dwóch istotnych koncepcji.

Dlaczego enkapsulacja jest istotna w rozwoju w C#?

Dowiedz się jak programować obiektowo w popularnym języku C#

Dowiedz się więcej

Czym jest abstrakcja i jak ją rozumieć

Abstrakcja to koncepcja polegająca na ukryciu skomplikowanych szczegółów i pokazaniu tylko niezbędnych funkcji obiektu. To trochę jak korzystanie z samochodu: nie musisz rozumieć dokładnie, jak działa silnik, aby móc prowadzić samochód. Wystarczy, że wiesz, jak używać kierownicy, pedałów i innych podstawowych elementów sterujących.

Prosty przykład abstrakcji

Wyobraźmy sobie, że tworzymy program do zarządzania pojazdami. Zaczynamy od stworzenia abstrakcyjnej klasy bazowej o nazwie Vehicle, która zawiera podstawowe właściwości i metody wspólne dla wszystkich typów pojazdów.

public abstract class Vehicle
{
    public abstract void StartEngine();
    
    public void StopEngine()
    {
        Console.WriteLine("Engine stop");
    }
}

Klasa Vehicle zawiera abstrakcyjną metodę StartEngine, która musi być zaimplementowana w klasach pochodnych oraz zwykłą metodę StopEngine, która ma już swoją implementację.

Następnie tworzymy konkretną klasę Car, która dziedziczy z Vehicle i implementuje metodę StartEngine.

public class Car : Vehicle
{
    public override void StartEngine()
    {
        Console.WriteLine("Engine start");
    }
}

Jak użyć takiej abstrakcji? Oto przykład.

class Program
{
    static void Main()
    {
        Vehicle myCar = new Car();
        myCar.StartEngine();
        myCar.StopEngine();
    }
}

W powyższym przykładzie, Car jest konkretnym pojazdem, który implementuje abstrakcyjne zachowania zdefiniowane w Vehicle.

Podsumowanie

Abstrakcja to sposób na ukrycie skomplikowanych szczegółów i pokazanie tylko tego, co niezbędne. Abstrakcyjna klasa w C# to taka, która może zawierać abstrakcyjne metody (bez implementacji) oraz zwykłe metody. Klasy pochodne implementują abstrakcyjne metody i mogą używać zwykłych metod z klasy abstrakcyjnej. Dzięki temu twój kod staje się bardziej uporządkowany i łatwiejszy do zarządzania.

Czym jest enkapsulacja

Enkapsulacja w języku C# to sposób na ukrycie szczegółów implementacji klasy i udostępnienie tylko tego, co jest potrzebne do jej użytkowania. Można to porównać do odbiornika telewizyjnego: jako użytkownik znasz funkcje, takie jak włączanie, zmiana kanałów czy regulacja głośności, ale nie musisz wiedzieć, jak telewizor działa w środku. Enkapsulacja pozwala na ukrycie "wnętrza" obiektu i eksponowanie tylko bezpiecznych do użycia elementów.

Prosty przykład enkapsulacji

Wyobraźmy sobie, że masz klasę BankAccount. Chcesz, aby saldo na koncie było bezpieczne i zmieniane tylko w kontrolowany sposób.

public class BankAccount
{
    private decimal balance;
    
    public void Deposit(decimal amount)
    {
        if (amount > 0)
        {
            balance += amount;
        }
    }
    
    public bool Withdraw(decimal amount)
    {
        if (balance >= amount && amount > 0)
        {
            balance -= amount;
            return true;
        }
        return false;
    }
    
    public decimal GetBalance()
    {
        return balance;
    }
}

Co takiego dzieje się w powyższym kodzie?

  • Prywatne pole balance jest prywatnym polem, co oznacza, że do jego wartości można dostęp tylko wewnątrz klasy BankAccount. To zapobiega przypadkowej lub nieautoryzowanej zmiany salda.
  • Metody Deposit(), Withdraw() i GetBalance() to publiczne metody, które pozwalają na interakcję z kontem bankowym. Możesz wpłacać i wypłacać pieniądze oraz sprawdzać saldo, ale nie możesz bezpośrednio zmienić balance.
  • Kontrola Dostępu: Użytkownik klasy BankAccount może korzystać z publicznych metod, ale nie ma bezpośredniego dostępu do wewnętrznego stanu (saldo konta), co jest esencją enkapsulacji.

Podsumowanie

Enkapsulacja to jak posiadanie sejfu w banku. Możesz włożyć lub wyjąć pieniądze (metody Deposit() i Withdraw()) i sprawdzić, ile masz (metoda GetBalance()), ale nie masz bezpośredniego dostępu do mechanizmów wewnętrznych sejfu, który chroni twoje pieniądze.

Jak abstrakcja i enkapsulacja przyczyniają się do organizacji kodu?

Naucz się programować w popularnym i przyjaznym języku C#. Zdobądź wartościowe umiejętności.

Dowiedz się więcej

Parę słów na koniec

Mamy nadzieję, że dzięki lekturze tego artykułu wiesz już na czym polega abstrakcja oraz enkapsulacja. To bardzo powszechnie stosowane techniki programowania obiektowego. Pozwalają one na tworzenie lepszego, bardziej bezpiecznego i przewidywalnego kodu.