Ответ
Объектно-ориентированное программирование (ООП) базируется на четырёх основных принципах, которые помогают создавать гибкий, поддерживаемый и переиспользуемый код.
-
Инкапсуляция — сокрытие внутреннего состояния объекта и деталей реализации. Доступ к данным осуществляется только через публичный интерфейс (методы, свойства). Это защищает целостность данных и позволяет изменять реализацию, не ломая клиентский код.
public class BankAccount { private decimal _balance; // Поле скрыто (инкапсулировано) public decimal Balance { get { return _balance; } } // Только чтение public void Deposit(decimal amount) { if (amount > 0) _balance += amount; // Валидация внутри класса } } -
Наследование — механизм, позволяющий создавать новый класс (производный) на основе существующего (базового), заимствуя его поля и методы. В C# поддерживается одиночное наследование классов.
public class Vehicle // Базовый класс { public string Make { get; set; } public void StartEngine() { Console.WriteLine("Engine started."); } } public class Car : Vehicle // Производный класс { public int NumberOfDoors { get; set; } } // Car автоматически получает свойства Make и метод StartEngine. -
Полиморфизм — способность объектов с одинаковой спецификацией (например, один базовый класс) иметь различную реализацию. Позволяет работать с объектами производных классов через интерфейс базового класса.
public abstract class Shape { public abstract double GetArea(); // Абстрактный метод } public class Circle : Shape { public double Radius { get; set; } public override double GetArea() => Math.PI * Radius * Radius; } public class Square : Shape { public double Side { get; set; } public override double GetArea() => Side * Side; } // Полиморфное поведение: List<Shape> shapes = new List<Shape> { new Circle { Radius = 5 }, new Square { Side = 4 } }; foreach (var shape in shapes) { Console.WriteLine(shape.GetArea()); // Вызовется правильная реализация для каждого типа } -
Абстракция — выделение существенных характеристик объекта и игнорирование несущественных деталей. Реализуется через абстрактные классы и интерфейсы, которые определяют что должен делать объект, но не как.
// Абстракция через интерфейс public interface ILogger { void Log(string message); // Контракт: любой логгер должен уметь логировать } public class FileLogger : ILogger { public void Log(string message) { /* запись в файл */ } } public class ConsoleLogger : ILogger { public void Log(string message) { Console.WriteLine(message); } }
Эти принципы являются фундаментом для более продвинутых принципов проектирования, таких как SOLID.
Видео-ответы
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶