У меня есть класс User, который может «измерять» некоторые параметры, связанные с датой, и вводить их в приложение. Итак, 1 пользователь -> множество параметров многих типов, связанных со многими датами (много измерений). Типы параметров являются фиксированными и могут быть как числовыми c, так и строками, например: вес, рост, потребление калорий, некоторые строки ... которые представлены в виде перечисления.
Теперь моя главная проблема: тот факт, что параметры могут иметь разные типы данных (числа или строки), означает, что общий тип параметра должен иметь специализации для двух подгрупп параметров? Или тип данных для каждого типа параметра подразумевается в самом типе? (например, «вес» подразумевает, что это должно быть число)
Как класс «Параметр» может быть представлен правильно, учитывая, что:
- может быть как числовым, так и строковым
- также существует класс суперпользователя, который может добавлять параметры для определенного c пользователя
- параметров суперпользователя могут вводить некоторые из тех, которые может ввести обычный пользователь, плюс некоторые другие параметры, исключительные для суперпользователя (например, масса тела), поэтому нет соответствия 1-1
- числовые параметры имеют другие дополнительные атрибуты, которые могут быть измененным суперпользователем (например: предельный вес)
- предположительно, суперпользователь должен иметь возможность добавлять "примечания" для некоторых параметров
Моя путаница связана с тем, что у меня есть нет опыта в OOP программировании, и я не могу найти подобные примеры в Интернете. Мне просто нужно ввести в правильном направлении go. Правильно ли изображен рисунок? И почему это, скорее всего, нет? На данный момент проблема заключается в том, как реализовать тот факт, что суперпользователь может также добавлять примечания к некоторым параметрам.
Do I:
- создать один класс параметров с типом перечисления в качестве атрибута, который автоматически подразумевает тип данных ввода, например, weight = number?
- создает два подкласса для каждого пользователя, например, UserParameters и SuperUserParameters, хотя некоторые параметры перекрываются?
- оставить как есть с некоторыми корректировками?
- другой лучший подход?