Учебный пример ООП13.09.2016, 11:26. Показов 9278. Ответов 123
Метки нет (Все метки)
Добрый день
Знакомство ООП часто начинается с этого примера. Ну не "строчка в строчку" (это я взял первый попавшийся в гугле), но те же классы и методы.
С уважением Игорь
0
|
||||||
| 13.09.2016, 11:26 | |
|
Ответы с готовыми решениями:
123
Не работает учебный пример с БД: "произошла ошибка, связанная с сетью или с определенным экземпляром" |
|
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
|||||||||
| 16.09.2016, 15:50 | |||||||||
|
Добавлено через 2 минуты Добавлено через 8 минут
0
|
|||||||||
|
Модератор
3141 / 2289 / 469
Регистрация: 26.03.2015
Сообщений: 8,920
|
||
| 16.09.2016, 16:06 | ||
|
з.ы. Добавление ещё одного уровня абстракции - TScreenRender - к теме не относится, так как она выполняет другую задачу.
0
|
||
|
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
||||||||
| 16.09.2016, 16:15 | ||||||||
0
|
||||||||
| 16.09.2016, 17:01 [ТС] | ||||||||||||||||
При сериализации это еще рельефнее. Сериализуем а) в бинарник (можно записать строку "Circlrе", а можно просто число (id) б) в текст - а вот здесь надо записать строку "Name = Circle" И вот текстовый поток хоть наизнанку вывернется - ну не может он знать про "Name". Circle может, но это разваливает общность - что же тогда с бинарником? И вообще, ну чего так много написано? Ведь по существу хотели
)
0
|
||||||||||||||||
|
Модератор
3141 / 2289 / 469
Регистрация: 26.03.2015
Сообщений: 8,920
|
||
| 16.09.2016, 17:06 | ||
|
Так что никаких проблем из сообщения #4 Ваш код не решает.
0
|
||
|
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
||
| 16.09.2016, 17:16 | ||
|
0
|
||
|
Модератор
3141 / 2289 / 469
Регистрация: 26.03.2015
Сообщений: 8,920
|
|||
| 16.09.2016, 17:22 | |||
|
А у Fulcrum_013 каждый рендер должен знать про все фигуры (добавил одну - и меняй все рендеры), либо каждая фигура должна знать про все рендеры. Добавлено через 4 минуты Напишите код, который будет выводить 1, 2, 3 или 4 в зависимости от комбинации фигура-рендер.
0
|
|||
|
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
||
| 16.09.2016, 17:23 | ||
|
0
|
||
|
510 / 272 / 60
Регистрация: 14.12.2010
Сообщений: 548
|
|||||||
| 16.09.2016, 17:28 | |||||||
|
Разница в том, что динамический полиморфизм вводит бесконечность указателем, а статическому полиморфизму нужна бесконечная память для эквивалентности. Поэтому приходится пользоваться чаще динамическим полиморфизмом, т.к. память ограничена. Вот пример по теме: Кликните здесь для просмотра всего текста
Составил каждую фигуры из классов по принципу Модель-Представление. Использовал статическую сборку фигуры из указанных компонент с использованием шаблонов. Получилось интересно ![]() Ну и заодно демонстрация статического и динамического полиморфизма в действии. Вообще, где возможно, надо статически разрешать проблемы. Это очень быстрое решение всегда. Динамическое решение всегда медленнее, но чаще удобнее.
0
|
|||||||
|
Модератор
3141 / 2289 / 469
Регистрация: 26.03.2015
Сообщений: 8,920
|
||
| 16.09.2016, 17:35 | ||
|
У Вас частный случай общей задачи. Есть промежуточный язык/формат/протокол, поэтому задача сразу решается сама собой: один класс переводит данные в этот формат, а другой - из этого формата. В общем случае так не получится.
0
|
||
|
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
||||||
| 16.09.2016, 17:48 | ||||||
|
Добавлено через 1 минуту Добавлено через 7 минут
0
|
||||||
|
510 / 272 / 60
Регистрация: 14.12.2010
Сообщений: 548
|
||||
| 16.09.2016, 17:58 | ||||
|
Если компилятор может статически вызовы разобрать, он начинает встраивать вызовы. При этом никаких шансов у динамического вызова нет по скорости исполнения цепочек таких вызовов.
0
|
||||
|
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
|||||||
| 16.09.2016, 18:30 | |||||||
|
Добавлено через 26 секунд Добавлено через 3 минуты Добавлено через 1 минуту Добавлено через 4 минуты Добавлено через 13 минут
0
|
|||||||
|
Модератор
3141 / 2289 / 469
Регистрация: 26.03.2015
Сообщений: 8,920
|
||||||
| 16.09.2016, 18:49 | ||||||
|
У меня сейчас нет времени расписывать аргументы - позже напишу. А сейчас просто скажу, что Ваш вариант очень прост и не требует использования ООП. Вот код на Хаскеле - как всегда в 5 раз короче.
0
|
||||||
|
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
||
| 16.09.2016, 18:54 | ||
|
0
|
||
|
Модератор
3141 / 2289 / 469
Регистрация: 26.03.2015
Сообщений: 8,920
|
|||
| 16.09.2016, 18:58 | |||
|
Например, там, где на другом языке мне надо писать "(x => x + 4)" на Хаскеле я могу написать "(+4)". К сожалению, Хаскель не является лучшим функциональным языком. Есть у него свои недостатки. Сейчас, пожалуй, лучший (наиболее перспективный) - это F#... но никак не могу себя заставить его учить (хотя уже около 60 небольших программ на нём написал). Добавлено через 2 минуты
0
|
|||
|
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
||||||
| 16.09.2016, 19:28 | ||||||
|
Добавлено через 3 минуты Добавлено через 11 минут Добавлено через 4 минуты Добавлено через 5 минут
0
|
||||||
|
510 / 272 / 60
Регистрация: 14.12.2010
Сообщений: 548
|
|||
| 16.09.2016, 19:52 | |||
|
Просто каждый новый вызываемый метод должен быть шаблонным, что порождает много ветвлений. Поэтому упираемся очень быстро в память. Да, комбинаторный взрыв по памяти. Это к вопросу об эквивалентности статического и времени исполнения полиморфизмов. (Я пример приводил, где статически все вызовы разрешены. Так делать можно, но сложно.) А если появился динамический вызов, то как его обойдёшь во время компиляции? Никак. Потому и тормозить будет не только указателем, но и накладными расходами на вызов и его последствиями для компиляции. Это существенно для числодробилок. ЗЫ: Ничего против полиморфизма времени исполнения не имею, т.к. идеальной реализации на все случае жизни в C++ пока нет.
0
|
|||
|
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
|||||||
| 16.09.2016, 20:24 | |||||||
|
Добавлено через 2 минуты Добавлено через 8 минут Добавлено через 1 минуту Добавлено через 4 минуты При этом не стоит забывать что VMT тоже данные и тоже кешируются. Так же как и указатель на VMT является данными инстанса. т.е. в результате основной задержкой является никак не тип вызова и даже не сам вызов, а доступ к данным инстанса который и там и там тянет на одинаковую задержки если его нет в кеше. При этом учитывая что в большинстве случаев данные инстанса больше чем линия кеша, то остается только уповать на телепатора-предсказателя потребного предкешиования в обоих случаях. Добавлено через 3 минуты Добавлено через 9 минут
0
|
|||||||
|
510 / 272 / 60
Регистрация: 14.12.2010
Сообщений: 548
|
||
| 16.09.2016, 21:31 | ||
|
Посмотри пример варианта с кортежами ещё раз. Там всё статически и без вариантов. Ладно, ты похоже фанат динамики... оставлю как есть.
0
|
||
| 16.09.2016, 21:31 | |
|
ООП пример Пример ООП на D
Нужен пример использования ООП Нужен пример с использованием ООП Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет!
За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
|
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык.
Возвращает он вот это:
https:/ / i. **********/ vqBWLe2. png
Нужную строчку в 3й колонке просто выдумал. .
Это. . .
|
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor.
Это. . .
|
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, со следующими реквизитами:
- ВидТО (СправочникСсылка. ВидыТО);
- ВидГСМ. . .
|