Sobes.tech
Junior

Разкажете за парадигмите и принципите на обектно-ориентираното програмиране.

sobes.tech AI

Отговор от AI

Парадигми на обектно-ориентираното програмиране:

  1. Инкапсулация: Скриване на данни и методи вътре в клас, предоставяне на достъп чрез интерфейс.
  2. Наследяване: Създаване на нови класове (подкласове) въз основа на съществуващи (базови класове), наследявайки техните свойства и методи.
  3. Полиморфизъм: Възможност за използване на обекти от различни класове чрез общ интерфейс, изпълнявайки специфично за всеки клас поведение.

Принципи на ООП (SOLID):

  1. Принцип на единствената отговорност (SRP): Всеки клас трябва да има една конкретна функция.
  2. Принцип на отвореност/затвореност (OCP): Класовете трябва да са отворени за разширяване, но затворени за промяна.
  3. Принцип на заместване на Лисков (LSP): Обектите от базовия клас могат да бъдат заменени с обекти от производен клас без нарушаване на коректността на програмата.
  4. Принцип на разделяне на интерфейсите (ISP): Клиентите не трябва да зависят от интерфейси, които не използват.
  5. Принцип на инверсия на зависимостите (DIP): Модулите от по-високо ниво не трябва да зависят от модулите от по-ниско ниво; и двата трябва да зависят от абстракции. Абстракциите не трябва да зависят от детайлите, а детайлите трябва да зависят от абстракциите.

Пример за инкапсулация и наследяване:

// Базов клас
public class Animal
{
    public string Name { get; set; }

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

    public virtual void MakeSound()
    {
        Console.WriteLine("Общ звук");
    }
}

// Производен клас
public class Dog : Animal
{
    public Dog(string name) : base(name)
    {
    }

    // Презаписване на метода на базовия клас
    public override void MakeSound()
    {
        Console.WriteLine("Ууф!");
    }
}

Пример за полиморфизъм:

Animal myAnimal = new Dog("Buddy");
myAnimal.MakeSound(); // Ще изведе "Ууф!"