Sobes.tech
Junior

Opowiedz o paradygmatach i zasadach programowania obiektowego.

sobes.tech AI

Odpowiedź od AI

Paradygmaty programowania obiektowego:

  1. Enkapsulacja: Ukrywanie danych i metod wewnątrz klasy, zapewniając dostęp przez interfejs.
  2. Dziedziczenie: Tworzenie nowych klas (podklas) na podstawie istniejących (nadklas), dziedzicząc ich właściwości i metody.
  3. Polimorfizm: Możliwość używania obiektów różnych klas przez wspólny interfejs, wykonując specyficzne dla każdej klasy zachowania.

Zasady OOP (SOLID):

  1. Single Responsibility Principle (SRP): Każda klasa odpowiada za jedną funkcję.
  2. Open/Closed Principle (OCP): Klasy powinny być otwarte na rozszerzenia, ale zamknięte na modyfikacje.
  3. Liskov Substitution Principle (LSP): Obiekty klasy bazowej mogą być zastąpione obiektami klasy pochodnej bez naruszania poprawności działania programu.
  4. Interface Segregation Principle (ISP): Klienci nie powinni zależeć od interfejsów, których nie używają.
  5. Dependency Inversion Principle (DIP): Moduły wyższego poziomu nie powinny zależeć od modułów niższego poziomu; oba powinny zależeć od abstrakcji.

Przykład enkapsulacji i dziedziczenia:

// Klasa bazowa
public class Animal
{
    public string Name { get; set; }

    public Animal(string name)
    {
        Name = name;
    }

    public virtual void MakeSound()
    {
        Console.WriteLine("Ogólny dźwięk");
    }
}

// Klasa pochodna
public class Dog : Animal
{
    public Dog(string name) : base(name)
    {
    }

    // Nadpisanie metody klasy bazowej
    public override void MakeSound()
    {
        Console.WriteLine("Hau!");
    }
}

Przykład polimorfizmu:

Animal myAnimal = new Dog("Buddy");
myAnimal.MakeSound(); // Wypisze "Hau!"