Учебный пример ООП13.09.2016, 11:26. Показов 9333. Ответов 123
Метки нет (Все метки)
Добрый день
Знакомство ООП часто начинается с этого примера. Ну не "строчка в строчку" (это я взял первый попавшийся в гугле), но те же классы и методы.
С уважением Игорь
0
|
||||||
| 13.09.2016, 11:26 | |
|
Ответы с готовыми решениями:
123
Не работает учебный пример с БД: "произошла ошибка, связанная с сетью или с определенным экземпляром" |
|
Модератор
3141 / 2289 / 469
Регистрация: 26.03.2015
Сообщений: 8,920
|
||||||||||
| 18.09.2016, 22:47 | ||||||||||
И сравните это с другим вариантом, где я написал одну строчку кода, а компилятор создаст по отдельной функции для каждого типа, для которого в коде встретится вызов этой обобщённой функции. В данном случае будет два: вариант для int и для double, которые будут использовать разные операторы сложения.
0
|
||||||||||
|
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
||||
| 18.09.2016, 23:21 | ||||
|
Добавлено через 5 минут Добавлено через 4 минуты Добавлено через 4 минуты Хотя суть именно этого примера была в другом - метод в принципе не параллелится. Хоть функционально хоть импиритивно хоть с изменяемыми состояниями хоть с неизменяемыми. Т.е. вывод прост - параллелятся или нет вычисления зависит от характера вычислений а не от неизменяемости переменных. При этом подавляющее большинство вычислений именно интегрирование дифуров по той или иной конечно-разностной схеме (т.е. следующий шаг вычислений требует результатов предыдущего что не праллелится в принципе )
0
|
||||
|
Модератор
3141 / 2289 / 469
Регистрация: 26.03.2015
Сообщений: 8,920
|
||||||
| 19.09.2016, 00:41 | ||||||
|
Сначала Вы просите показать преимущества неизменяемых переменных на придуманном Вами примере. То есть, из моей фразы "неизменяемость имеет свои преимущества" Вы сделали вывод, что эти преимущества проявляются на любом примере? Потом из того, что я указал Вам на Вашу ошибку в логике, Вы сделали вывод, что "без империтивщины и состояний даже корень извлечь невозможно". Вы, действительно, так думаете или просто тролите?
0
|
||||||
|
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
|||||||||
| 19.09.2016, 00:56 | |||||||||
|
Добавлено через 2 минуты Добавлено через 6 минут
Добавлено через 5 минут При этом какая то часть возможных действий с с группой типов одинакова для всех членов группы независимо от а.type. Эти действия выделяются в невиртуальные методы и диспетчеризируются статически.
0
|
|||||||||
|
Модератор
3141 / 2289 / 469
Регистрация: 26.03.2015
Сообщений: 8,920
|
||||||
| 19.09.2016, 01:22 | ||||||
|
Добавлено через 24 минуты
0
|
||||||
|
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
|||||||||||
| 19.09.2016, 06:30 | |||||||||||
|
Добавлено через 4 минуты Добавлено через 2 минуты Добавлено через 2 минуты Добавлено через 1 час 25 минут Добавлено через 10 минут
0
|
|||||||||||
| 19.09.2016, 06:39 [ТС] | |||
|
расчеты - 95% накладные - 5% (в лучшем случае) И вот Вы упорно доказываете как можно ужать 5% - а толку? 95%-то останется. Не надо так злоупотреблять горячительным (std) ![]()
0
|
|||
| 19.09.2016, 13:06 | |||||
|
Не по теме:
Кликните здесь для просмотра всего текста
:) Есть интуиция, которая проверяется профилировщиком. Что простыми оптимизациями не устраняется, устраняется изменениями алгоритмов, но это всё от конкретной программы зависит. Разумеется программы разные и одни и те же рецепты оптимизаций окажут разный эффект. На этот случай есть профилировщик и программист.
0
|
|||||
|
Модератор
3141 / 2289 / 469
Регистрация: 26.03.2015
Сообщений: 8,920
|
||||||||||||
| 19.09.2016, 16:42 | ||||||||||||
|
Так в приведённом мной примере тип Shape, и компилятор это знает без всяких ид. Надеюсь, Вы не путаете автоматический вывод типов с динамической типизацией?
0
|
||||||||||||
| 20.09.2016, 09:12 [ТС] | |
|
Переменные изменяемые и нет, отложенные вычисления, изумительно компактный синтаксис и.т.п. - все это конечно хорошо, но это подробности языка. Это не концепции. Хорошо или плохо но стартовый пример весьма конкретно учит что надо делать. В грубо-примитивной форме
- не держи данные открытыми (рисуй геттеры/сеттеры) - выделяй базовые классы и наследуйся чтобы потом не переписывать одно и то же - заряжай виртуалы И миллионы людей делают именно это - с различным успехом. Что это не решает всех проблем и всегда найдется масса исключений - очевидно. Но вот скажите - а что взамен? Хорошо, допустим критики правы и ООП отжило свое. Как тогда я должен программировать? Каких принципов придерживаться, к чему стремиться? Где это сформулировано? (хоть как-то, о таком примере как стартовый я и не мечтаю).
0
|
|
|
Модератор
3141 / 2289 / 469
Регистрация: 26.03.2015
Сообщений: 8,920
|
|||
| 20.09.2016, 19:02 | |||
|
Например, в С++ нельзя связывать переменные. (Есть только присваивание - связывание переменной и значения). А в некоторый языках, например, записи A=B и B=A эквивалентны. Вам ссылку на статью, серию статей, книгу? Какой объём информации Вас интересует?
0
|
|||
|
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
||||||||
| 20.09.2016, 19:33 | ||||||||
|
Добавлено через 1 минуту Добавлено через 1 минуту Добавлено через 3 минуты Добавлено через 2 минуты Добавлено через 4 минуты
0
|
||||||||
|
Модератор
3141 / 2289 / 469
Регистрация: 26.03.2015
Сообщений: 8,920
|
|||||||
| 20.09.2016, 20:53 | |||||||
|
Тормозов нет. Вы не сможете ускорить этот код даже на 1 микросекунду. Кроме того, код становится короче, что так же упрощает понимание (больше информации умещается на один экран). У меня есть неизменяемые переменные (readonly) и изменяемые переменные. Зачем мне может понадобиться принципиальная возможность менять readonly переменные? если я, наоборот, хочу, чтобы их нельзя было поменять (даже лишнее слово пишу в коде)?
0
|
|||||||
|
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
||
| 20.09.2016, 21:02 | ||
|
Виртуалный метод - вызов по таблице - переход номер раз. Возврат - переход номер двас.
0
|
||
|
Модератор
3141 / 2289 / 469
Регистрация: 26.03.2015
Сообщений: 8,920
|
||
| 20.09.2016, 22:28 | ||
|
з.ы. А если вызов не заинлайнился, значит функция достаточно большая, чтобы не считать затраты на вызов. Хотя, лично я считаю, что невиртуальный вызов + переход по таблице (не вызов, а переход... стек не задействован) не займут больше времени, чем виртуальный вызов.
0
|
||
|
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
|||||
| 20.09.2016, 23:29 | |||||
|
Добавлено через 11 минут Добавлено через 1 минуту Добавлено через 1 минуту
0
|
|||||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|||
| 21.09.2016, 03:04 | |||
|
имена переменных которые начинаются с подчеркиваний - ф топку.
в качестве глобальных имен могут быть макросы.
0
|
|||
| 21.09.2016, 10:24 [ТС] | |||
Ладно, давайте использовать его. Вот парадигма(ы) ООП мне хорошо известны, а о парадигмах того же ФП - ничего. Все что я слышу типа "а вот здесь можно вот так - и это круто". Конечно в каких-то ситуациях какой-то язык может оказаться куда эффективнее, так что с того? Не вижу "парадигм", а лишь "подробности языка".Рекомендация "выбирать удачную парадигму" выглядит вяло. Напр на этом форуме я предложил работающему на хаскеле неск задач и сравнить с плюсовой реализацией. Первой было "найти расстояние от точки до отрезка" (что нередко оказывается затруднительным для знатоков). Ответ был - здесь хаскель не имеет каких-то преимуществ, задачка слишком банальна. Было предложено решить ее на хаскеле итеративно. Остроумно, я бы никогда не догадался, но зачем? Вторая задачка - то же самое. Третью я предложил из фундаментальных, вот там что-то интересное мелькнуло, но .. далековато от жизни. В общем, отчетливо видно что "задача подгоняется под язык", я не увидел никаких концепций, принципов, парадигм, а лишь "интересную игру в необычное" (кстати хочу и сам попробовать )С чисто практической, утилитарной точки зрения выбор удачной парадигмы - голубая мечта, учитывая что основную массу времени программиста занимает рутинная работа и имеется багаж наработок и библиотек. Вряд ли кто станет искать парадигму когда надо сделать работу в срок. "Если это новое так хорошо, то почему оно не задавило старое?" (да, здравый смысл обывателя). Как в свое время ООП задавило процедурное. Не по теме: Да, и, в конце-концов, перестаньте "кормить тролля". Ну увлекается человек "скоростью", сам переболеет, "и это пройдет"
0
|
|||
|
Модератор
3141 / 2289 / 469
Регистрация: 26.03.2015
Сообщений: 8,920
|
|||||||||
| 21.09.2016, 12:49 | |||||||||
|
Добавлено через 23 минуты Если Вам нужно выполнить какое-то действие для каждого узла дерева, Вы можете использовать шаблон Посетитель: подготовить базовый класс, затем пронаследоваться от него и перегрузить нужные методы, добавив в них выполнение требуемого действия. Или можете написать ForEach(myAction). (Кроме приличного багажа наработок у Вас ещё и коллеги, которые понимают С++ и не понимают Хаскель). ![]() Добавлено через 6 минут
0
|
|||||||||
| 21.09.2016, 13:07 [ТС] | ||||
В моих планах лишь "ознакомиться" Но вот их почему-то не видно...
0
|
||||
| 21.09.2016, 13:07 | |
|
ООП пример Пример ООП на D
Нужен пример использования ООП Нужен пример с использованием ООП Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер
На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
|
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/
TL DR
Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
|
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык.
Возвращает он вот это:
https:/ / i. **********/ vqBWLe2. png
Нужную строчку в 3й колонке просто выдумал. .
Это. . .
|
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor.
Это. . .
|
|
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js.
В помощники взял Яндекс-Алису.
Было создано три зала на разные интересы.
исторические и ретро
сериал Хичкок. . .
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
|
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#.
Название изменил на ColorStep.
Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
|
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами:
- ВидТО (СправочникСсылка. ВидыТО);
- ВидГСМ. . .
|