|
4 / 3 / 1
Регистрация: 30.11.2021
Сообщений: 101
|
||||||||||||||||
Объект наследованного класса, содержащий объекты родительского класса, соседей по листу13.09.2023, 06:49. Показов 2645. Ответов 34
Я запутался в проблеме организации бизнес-логики.
Есть верхний уровень описания структуры с таим вот листом:
Подскажите, возможно есть устоявшийся прием организации для таких случаев?
0
|
||||||||||||||||
| 13.09.2023, 06:49 | |
|
Ответы с готовыми решениями:
34
Использование метода из наследованного класса к объекту базового класса Доступ к методу родительского класса из метода свойства родительского класса |
|
4 / 3 / 1
Регистрация: 30.11.2021
Сообщений: 101
|
|||
| 13.09.2023, 12:18 [ТС] | |||
|
Добавлено через 10 минут
0
|
|||
|
4 / 3 / 1
Регистрация: 30.11.2021
Сообщений: 101
|
|
| 13.09.2023, 15:01 [ТС] | |
|
Да блин! Там в этой таблице с глифами их может быть на законных основаниях меньше чем "количество глифов в шрифте"
Но это я уже просто жалуюсь. Пока пытаюсь что-то реализовать и до нового конкретного вопроса не доотчаялся.
0
|
|
| 13.09.2023, 15:27 | ||
|
Позволю себе продолжить тему, хотя точка вроде бы поставлена.
Не по теме: Если что, то модератор любезно перенесёт это в другую тему. Добавлено через 9 минут LexMcLinn, я не вижу ничего страшного в том чтобы разделить логику и ответственность между разными классами. Например, класс, содержащий описанный ранее мной метод аля Build() может содержать метод типа Save(CombinedGlyph savedItem). Как именно внутри класса будет производиться сохранение в файл дело десятое, т.е. что хочу сказать - совершенно не обязательно CombinedGlyph будет отображать всю внутреннюю организацию файла шрифта, что-то может добавляться/исключаться при чтении/записи файла.
0
|
||
|
4 / 3 / 1
Регистрация: 30.11.2021
Сообщений: 101
|
||||||||||||||||
| 13.09.2023, 20:44 [ТС] | ||||||||||||||||
|
Тут еще и область C# начинается, в которой я не супер-уверенно ся чувствую.
Я тут начал переделывать код для этих глифов и выяснил, что не совсем понимаю следующий момент: делаю базовый класс
А оно должно гарантированно обеспечиваться всеми вариантами глифов из разных унаследованных классов. Может я не к месту вообще применил abstract?
0
|
||||||||||||||||
|
323 / 190 / 45
Регистрация: 25.08.2011
Сообщений: 1,263
|
||
| 14.09.2023, 08:10 | ||
|
Пусть будет обычный класс с виртуальными методами.
0
|
||
|
4 / 3 / 1
Регистрация: 30.11.2021
Сообщений: 101
|
|||||||
| 14.09.2023, 08:50 [ТС] | |||||||
|
Оказалось все можно, я не прав был, что в абстрактном класссе не бывает свойств...
Добавлено через 3 минуты Говорили ранее про фабрики, а по примерах всех в умных книжках реализуют в таких случаях родительский класс как абстрактный, де мол объекты-то все будут создаваться в унаследованных классах, а базовый он не должен использоваться чтобы объект создавать. Добавлено через 24 минуты А вообще насколько грамотно делать так: в одном наследующем классе объявляется свойство типа public int NumOfContours{get num} в другом -- public int NumOfGlyphs {get num} а во внешнем коде приходится разводить if(typeof(baseclassEx) == typeof(InheritedClass1..2..3) )
0
|
|||||||
| 14.09.2023, 09:01 | |||
|
Добавлено через 4 минуты Добавлено через 2 минуты LexMcLinn, почитайте ещё и о interface, тоже весьма полезная штука. Вообще рекомендуется писать с интерфейсами.
1
|
|||
|
4 / 3 / 1
Регистрация: 30.11.2021
Сообщений: 101
|
|||||||||||
| 15.09.2023, 07:53 [ТС] | |||||||||||
|
Ии эта штука у меня не поехала на преобразовании типов.
Что-то я делаю неправильно.
но он его и не содержит, такой метод есть только у SimpleGlyph:Glyph проблема скорее в инкапсуляции неприличной, или в том что я как-то неправильно использую as/is? Добавлено через 11 минут И вот так тоже ругается
0
|
|||||||||||
|
323 / 190 / 45
Регистрация: 25.08.2011
Сообщений: 1,263
|
|||||||
| 15.09.2023, 07:57 | |||||||
1
|
|||||||
|
4 / 3 / 1
Регистрация: 30.11.2021
Сообщений: 101
|
|
| 15.09.2023, 08:00 [ТС] | |
|
Аа, то есть переменной на уровне формы сначала присвоить значение входящей переменной, а потом ее перед действиями, относящимися только к одному из типов переводить в третью переменную конкретного типа уже...
Спасибо.
0
|
|
|
4 / 3 / 1
Регистрация: 30.11.2021
Сообщений: 101
|
||
| 15.09.2023, 14:49 [ТС] | ||
|
то есть я просто помечаю класс К интерфейсом IМожетОтображатьсяЮзерКонтролом№274 для того чтобы компилятор напомнил мне, что этот класс должен реализовывать все фичи, которые нужны в этом контроле, ну и чтобы вместо конкретного класса в конструкторе юзверьконтрола написать переменную с типом IМожетОтображатьсяЭтимЮзерКонтролом объект. Другого значения интерфейса я пока не постиг, потому вижу его необходимость только когда есть несколько классов, у которых должно быть что-то общее в функционале, но через наследование это реализовывать нехорошо или невозможно (ну типа наследование от многих классов не так хорошо пишется, как реализация в классе десятка интерфейсов).
0
|
||
| 15.09.2023, 15:01 | |
|
Применительно к вашей задаче использование абстрактного класса мне видится наиболее выгодным решением, т.к. он описывает базовую функциональность класса, т.е. всех глифов, а не лишь обозначает её, как в случае интерфейса. Тут я с вами согласен. Но если появится глиф не наследующий базовый, то только через интерфейс можно будет собрать их в кучу. Тут коротко и ясно это объясняется.
0
|
|
| 15.09.2023, 15:01 | |
|
Вектор, содержащий объекты класса
Указатель на объект класса в классе с методом класса обращающимся к элементам класса что указан по указателю
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
Nekobox - outbounds[0].transport: unknown transport type: raw
damix 01.10.2026
Фикс ошибки
Правым кликом по серверу -> отладочная информация -> edit
Заменить "net": "raw", на "net": "tcp",
Нажать кнопку reload.
|
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js.
В помощники взял Яндекс-Алису.
Было создано три зала на разные интересы.
исторические и ретро
сериал Хичкок. . .
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
|
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#.
Название изменил на ColorStep.
Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
|
|
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами:
- ВидТО (СправочникСсылка. ВидыТО);
- ВидГСМ. . .
|
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала.
Ниже прикреплён. . .
|
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F
Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU.
Опрашиваются регистры. . .
|
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка:
Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
|