Учебный пример ООП13.09.2016, 11:26. Показов 9500. Ответов 123
Метки нет (Все метки)
Добрый день
Знакомство ООП часто начинается с этого примера. Ну не "строчка в строчку" (это я взял первый попавшийся в гугле), но те же классы и методы.
С уважением Игорь
0
|
||||||
| 13.09.2016, 11:26 | |
|
Ответы с готовыми решениями:
123
Не работает учебный пример с БД: "произошла ошибка, связанная с сетью или с определенным экземпляром" |
|
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
||
| 16.09.2016, 21:31 | ||
|
0
|
||
|
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
||
| 16.09.2016, 21:38 | ||
|
0
|
||
|
510 / 272 / 60
Регистрация: 14.12.2010
Сообщений: 548
|
|||
| 16.09.2016, 22:21 | |||
А если ограничиться только известными типами? А если их немного и динамическое расширение не требуется? Мне представляется, что ты в крайность впадаешь. Выбирайся из неё. Там за пределами динамического связывания есть жизнь Ну, мне так видится.
0
|
|||
|
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
||||||
| 16.09.2016, 23:17 | ||||||
|
При этом сам принцип переключения на момент компиляции неизвестен (набор взаимосвязей переключателей и список установленных пушек в датапаке). Как на меня уж лучше иметь кое где виртуальные методы, но при этом иметь 100kb экзешки и 50кб хорошо читаемого кода, и пользоваться такими штукенциями как датабиндинг и т.п., чем тонны мозговныносящей свиньи, десятки метров экзешника и кучу ограничений. В результате и быстрее и надежнее будет. А от индирект вызовов все равно никуда не денешься ни c DX ни с OpenGL, их функционал на 100% из dll тянется а соответственно живет на индирект вызовах. Так же как и весь WinAPI. Не от хорошей жизни с праметрическим полиморфизмом в HLSL ООП и динамическое связывание ввели. Добавлено через 15 минут
0
|
||||||
|
Модератор
3142 / 2290 / 469
Регистрация: 26.03.2015
Сообщений: 8,920
|
||
| 17.09.2016, 00:01 | ||
|
У хаскеля, действительно, проблемы с памятью. Они выражаются в том, что программу надо писать, понимая, как это будет выполняться на уровне железа. Но эти проблемы связаны с ленивостью языка. И хаскель - единственный ленивый функциональный язык, который я знаю. У других ФЯ таких проблем нет. Нет таких проблем и у С#.
0
|
||
|
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
|||
| 17.09.2016, 01:09 | |||
|
Добавлено через 25 минут
0
|
|||
| 17.09.2016, 09:40 [ТС] | |||
|
Если Model-View (Qt) то объект должен быть табличкой (строки/столбцы), где ячейки могут хранить фиксированный набор типов (хотя он велик и расширяем статически). Без этого "view" нечего рисовать Если же никакой общности нет (Квадраты и Заказы), то остается откатиться в процедурное программирование, возможнно с темплейтами для "отрисовки всех" В любом случае смешивать данные и отрисовку - грубая ошибка архитектуры
0
|
|||
|
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
|||||
| 17.09.2016, 12:20 | |||||
|
Добавлено через 9 минут Добавлено через 5 минут При этом никакой разнецы нет будут закешированы данные инстанса до вызова при VMT-лукапе или изнутри вызываемой функции при доступе. При этом код вызываемой функции окажется в кеше гораздо вероятнее для динамического полиморфизма нежели для статического, как и то что сама VMT будет в кеше, особенно если типов не очень много.
0
|
|||||
|
Модератор
3142 / 2290 / 469
Регистрация: 26.03.2015
Сообщений: 8,920
|
|||
| 17.09.2016, 20:55 | |||
|
0
|
|||
|
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
|||
| 17.09.2016, 21:20 | |||
|
Добавлено через 4 минуты А вот если это касается просто передачи параметров в функции, то если программист не знает какие из заказанных им же данных ему нужны это уже очень большие проблемы.
0
|
|||
|
Модератор
3142 / 2290 / 469
Регистрация: 26.03.2015
Сообщений: 8,920
|
|||||
| 17.09.2016, 23:05 | |||||
|
В строгих языках так же нередко используется ленивость, но её приходится задавать явно, и это усложняет код. Элементарный пример: функция для поиска значения по ключу может принимать вторым аргументом значение, которое необходимо вернуть, если ключ не найден. Например, при чтении настроек (файлов конфигурации) такой подход используется почти всегда. Понадобится ли второй аргумент? А парсер методом рекурсивного списка писали когда-нибудь? Есть варианты использования и посложнее. Но чтобы их понять, нужно знать про алгебраические типы данных и сопоставление по образцу.
0
|
|||||
|
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
||||
| 17.09.2016, 23:48 | ||||
|
0
|
||||
|
Модератор
3142 / 2290 / 469
Регистрация: 26.03.2015
Сообщений: 8,920
|
||||
| 18.09.2016, 00:34 | ||||
|
string.Format("{0:0.0}", Resourses.MyFile.MyKey) Про "параметрический полиморфизм" Вы ошибаетесь.
0
|
||||
|
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
|||
| 18.09.2016, 01:43 | |||
|
Добавлено через 42 минуты
0
|
|||
|
Модератор
3142 / 2290 / 469
Регистрация: 26.03.2015
Сообщений: 8,920
|
||||||||||||||||
| 18.09.2016, 13:09 | ||||||||||||||||
|
Если Вы ни разу не писали/не использовали функцию, в которой в зависимости от значений одних параметров другие могут не использоваться, то, значит, Вы писали очень однообразные программы. Пример параметрического полиморфизма:
Вот пример использования АТД:
Получение целочисленного значения из базы данных. Функция возвращает либо целое число, либо NULL. Аналогично, поиск целочисленного значения по ключу в словаре (вместо традиционной корявой конструкции с out параметрами). И, кстати, код "Вариант 1" - это неуклюжая попытка имитировать АТД. (Неуклюжая, потому что enum может принимать не только значения из списка)
0
|
||||||||||||||||
|
510 / 272 / 60
Регистрация: 14.12.2010
Сообщений: 548
|
|||||||
| 18.09.2016, 13:32 | |||||||
|
Кликните здесь для просмотра всего текста
Тут виртуальность дала просадку по скорости в два раза. Компилятор не смог устранить виртуализацию, хотя, теоретически, мог бы это сделать. Так, например, переделка кода с Java на C++ без изменения алгоритмов проводит к увеличению скорости до 20 раз, за счёт убирания ненужных косвенных вызовов и последующих оптимизаций компилятора. Вот такие нынче времена
0
|
|||||||
| 18.09.2016, 16:06 [ТС] | ||||||||
|
Кликните здесь для просмотра всего текста
0
|
||||||||
|
510 / 272 / 60
Регистрация: 14.12.2010
Сообщений: 548
|
||||||||
| 18.09.2016, 19:38 | ||||||||
![]() Указатель - барьер для оптимизаций. Увеличив косвенность вдвое, скорость падает ещё в два раза, итого более четырёх раз. Кликните здесь для просмотра всего текста
Как увеличение порядка косвенности работает смотри выше. ЗЫ: Не призываю выкидывать виртуальность, а лишь указываю, что есть ряд случаев, когда она тормозит программу и её можно устранить с выгодой.
0
|
||||||||
|
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
||||||
| 18.09.2016, 21:01 | ||||||
|
Добавлено через 9 минут Добавлено через 20 минут А насчет независимости то вы ошибаетесь,неопределенность фактического типа АДТ при возможности многократного присваивания ведет к комбинаторному взрыву при генерации кода. Добавлено через 16 минут Добавлено через 3 минуты
0
|
||||||
| 18.09.2016, 21:01 | |
|
ООП пример Пример ООП на D
Нужен пример использования ООП Нужен пример с использованием ООП Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Генератор паролей (вариант №4)
Maks 01.11.2026
После публикации 3-го варианта генератора паролей, разослал его своим коллегам (с целью оценки), в итоге были получены следующие рекомендации:
1. Вернуть возможность использования знаков | 1 l I;. . .
|
Генератор паролей (вариант №3)
Maks 30.10.2026
Финальная версия генератора паролей 1С.
Доработка решения в этот раз коснулась только визуальной части, а именно, добавлен реквизит ДопПараметры (тип Булево), который скрывает/ отображает реквизиты:. . .
|
Магическое мышление и магия, современная наука не отличима от магии (говорит ИИ Джемени)
zorxor 30.10.2026
Джемени, расскажи, пожалуйста, что такое магическое мышление, что такое магия, почему современная наука чем-то напоминает магию?
Фраза «Любая достаточно развитая технология неотличима от магии». . .
|
За какое время ИИ может подобрать пароль по хешу (рассказывает Джемени ИИ)
zorxor 30.10.2026
Расскажи, Джемени, если известен хэш МД5, например, за сколько ИИ сможет подобрать соответствующий пароль?
Искусственный интеллект (ИИ) может подобрать простой или средний по сложности пароль по. . .
|
|
Кто убил Suno? Почему наше солнышко погасло? (диалог с ИИ Джемени)
zorxor 30.10.2026
Как убивали Suno. Хронология.
«Убийство» музыкальной нейросети Suno — это затяжной процесс, в котором технологический хайп стартапа разбился о жесткую реальность судебных исков от гигантов. . .
|
Генератор паролей (вариант №2)
Maks 30.10.2026
Обновленная версия ранее созданной обработки.
Добавлены следующие реквизиты типа Булево:
- Буквы;
- Цифры;
- Символы.
Изменена логика команды "Сгенерировать" и процедуры "ПриОткрытии":. . .
|
Генератор паролей (вариант №1)
Maks 29.10.2026
Реализация из решения ниже выполнена исключительно по моей инициативе, дабы облегчить себе работу в создании паролей для администрируемых мною сервисов и пользователей.
Самым главным критерием для. . .
|
Установка ChatGPT (Codex) на Windows без использования Microsoft Store
Fabien159 28.10.2026
Здравствуйте всем читающим! Опишу процесс установки ChatGPT (Codex) на Windows, если по каким-то причинам у вас не получается устанавить его через Microsoft Store.
И так:
1. Скачиваем с. . .
|