Введение Допустим, у нас есть набор объектов с некоторыми данными, и нам нужно манипулировать этими объектами.
Допустим, самый распространенный пример — наполнить корзину фруктами.
Мы реализуем некий класс Cart, в который будем добавлять фрукты.
Далее нам понадобится базовый класс Fruit, чтобы определить параметр объема, которому мы присвоим значение в зависимости от фрукта.
Проблема решена, фрукты добавляются до тех пор, пока объем корзины не достигнет порога.
После нескольких итераций, когда в нашей программе по наполнению корзины окажется несколько гнилых груш, червивых яблок или что-то еще пойдет не так, мы расширим базовый класс Fruit, включив в него параметры свежести, чистоты и т. д. Появятся новые условия проверки.
.
И здесь начинается проблема.
Да, наш класс стал более универсальным, но не только количество проблем с фруктами может увеличиться, но и сами ситуации сбора фруктов могут быть другими.
Например, мы собираем фрукты, где абсолютно каждый фрукт будет свежим.
Зачем в таком случае нужно поле, отвечающее за свежесть, если все фрукты заведомо свежие? Отгородить ненужный функционал, указать обязательные и необязательные типы? - Конечно, нет. Мы помещаем ряд необязательных типов в массив (словарь), где каждый тип не является непосредственной частью класса.
Наш функционал снова стал умнее, отлично.
Однако я решил пойти дальше и немного развить эту тему.
Идея
Мы определяем тип, который будет отвечать за хранение необязательных переменных в строковом формате.По сути, это оболочка над массивом.
В качестве минимального набора информации мы будем хранить имя переменной, тип (это может быть базовый, int, string, bool или композиция из нескольких базовых) и значение.
Методы этого объекта могут быть разнообразными, но я для себя выделил следующие:
- получение списка переменных и их типов в строковом формате (в общем, можно ограничиться именами).
Это может быть полезно, если мы хотим пометить какой-то объект как «начало координат».
- геттер, который возвращает наш массив с информацией о переменных в постоянном формате.
- получение идентификатора типа и значения из имени переменной (необходимо для приведения к определенному типу).
Теги: #Алгоритмы #программирование #C++ #ООП #унификация #унификация #поток данныхclass IVariable {
-
Бурунди
19 Oct, 24 -
Увеличение Продаж С Помощью Автоответчиков
19 Oct, 24 -
Оценка Квалификации Консультантов
19 Oct, 24 -
13 Типов Разработчиков, С Которыми Я Работал
19 Oct, 24 -
Tencent Полностью Купила Riot Games
19 Oct, 24 -
Летучая Мышь! 3.98.4
19 Oct, 24