Junior
108
questionbank
Расскажите о парадигмах и принципах объектно-ориентированного программирования.
Answer from AI
sobes.tech AI
Парадигмы ООП:
- Инкапсуляция: Сокрытие данных и методов внутри класса, предоставление доступа к ним через интерфейс.
- Наследование: Создание новых классов (наследников) на основе существующих (родителей), унаследовав их свойства и методы.
- Полиморфизм: Возможность использовать объекты разных классов через общий интерфейс, выполняя специфичное для каждого класса поведение.
Принципы ООП (SOLID):
- Single Responsibility Principle (SRP): Каждый класс отвечает за одну конкретную функцию.
- Open/Closed Principle (OCP): Классы должны быть открыты для расширения, но закрыты для изменения.
- Liskov Substitution Principle (LSP): Объекты базового класса могут быть заменены объектами производного класса без нарушения корректности работы программы.
- Interface Segregation Principle (ISP): Клиенты не должны зависеть от интерфейсов, которыми они не пользуются.
- 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!"