|
4 / 3 / 1
Регистрация: 30.11.2021
Сообщений: 101
|
||||||||||||||||
Объект наследованного класса, содержащий объекты родительского класса, соседей по листу13.09.2023, 06:49. Показов 2603. Ответов 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 | |
|
Вектор, содержащий объекты класса
Указатель на объект класса в классе с методом класса обращающимся к элементам класса что указан по указателю
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
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) активировать флаг. . .
|
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо
Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
|
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман.
Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
|