Junior
Разкажете за парадигмите и принципите на обектно-ориентираното програмиране.
sobes.tech AI
Отговор от AI
Парадигми на обектно-ориентираното програмиране:
- Инкапсулация: Скриване на данни и методи вътре в клас, предоставяне на достъп чрез интерфейс.
- Наследяване: Създаване на нови класове (подкласове) въз основа на съществуващи (базови класове), наследявайки техните свойства и методи.
- Полиморфизъм: Възможност за използване на обекти от различни класове чрез общ интерфейс, изпълнявайки специфично за всеки клас поведение.
Принципи на ООП (SOLID):
- Принцип на единствената отговорност (SRP): Всеки клас трябва да има една конкретна функция.
- Принцип на отвореност/затвореност (OCP): Класовете трябва да са отворени за разширяване, но затворени за промяна.
- Принцип на заместване на Лисков (LSP): Обектите от базовия клас могат да бъдат заменени с обекти от производен клас без нарушаване на коректността на програмата.
- Принцип на разделяне на интерфейсите (ISP): Клиентите не трябва да зависят от интерфейси, които не използват.
- Принцип на инверсия на зависимостите (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(); // Ще изведе "Ууф!"