Sobes.tech
Junior
109
questionbank

Расскажите о парадигмах и принципах объектно-ориентированного программирования.

Ответ от нейросети

sobes.tech AI

Парадигмы ООП:

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

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

  1. Single Responsibility Principle (SRP): Каждый класс отвечает за одну конкретную функцию.
  2. Open/Closed Principle (OCP): Классы должны быть открыты для расширения, но закрыты для изменения.
  3. Liskov Substitution Principle (LSP): Объекты базового класса могут быть заменены объектами производного класса без нарушения корректности работы программы.
  4. Interface Segregation Principle (ISP): Клиенты не должны зависеть от интерфейсов, которыми они не пользуются.
  5. Dependency Inversion Principle (DIP): Модули верхних уровней не должны зависеть от модулей нижних уровней. Оба должны зависеть от абстракций. Абстракции не должны зависеть от деталей. Детали должны зависеть от абстракций.

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

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

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

    public virtual void MakeSound()
    {
        Console.WriteLine("Some generic sound");
    }
}

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

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

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

Animal myAnimal = new Dog("Buddy");
myAnimal.MakeSound(); // Выведет "Woof!"