Здравствуйте, Lonely Dog, Вы писали:
LD>Здравствуйте, samius, Вы писали:
S>>Интересно, а что делает CCompositeDataProcessor при вызове ReceiveData? Опрашивает несколько IDataProcessor по очереди? LD>Ну да. Это как стек драйверов. При посылке данных идем сверху вниз. При получении наоборот.
Как комбинируются результаты?
LD>>>Надеюсь,навел на интересные мысли
S>>ООП — не самое элегантное решение этой задачи LD>1. Как бы вы ее решили?
В ФП задача решалась бы композицией функций.
LD>2. Постановка задачи проста и понятна. Решение в целом тоже.
Но неясна роль объекта.
Re[2]: На базе чего лучше всего продемонстрировать ООП?
Здравствуйте, Ligen, Вы писали:
L>Я когда то занимался с учеником по основам проектирования — писали змейку классическую ****@ L>Рекомендую, очень простое ТЗ и море удовольствия
А где-то уже на код такой игрушки можно глянуть?
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[13]: На базе чего лучше всего продемонстрировать ООП?
Здравствуйте, Klapaucius, Вы писали:
K>А чем вышеупомянутое реактивное программирование хуже ООП для симуляции вообще и игр в частности?
Хотябы тем что отсутствуют связи межу объектами.
А если ввести кучу исскуственных связей то мы получим проблемы с производительностью на ровном месте.
Возмем к примеру http://ru.wikipedia.org/wiki/Crimsonland
Попробуй представить реализацию проверки попдания пули по монстру используя реактивное программирование.
Здравствуйте, Lonely Dog, Вы писали:
LD>Я в качестве одного из примеров ООП описываю сетевое приложение. Ну или программу для конвертации чего-либо куда-нибудь
Проблема в том, что эти задачи в разы лучше решаются с помощью ФП.
Тут все элементрано. Задачи трансформации лучше решать с помощью ФП. Задачи симуляции — с помощью ООП.
LD>Чуть подробнее: есть сетевое приложение (общается по сокетам, файл перегоняет). Оборачиваем посылку данных в класс с определенным интерфейсом. Например вот так: LD>
LD>Т.о. образом IDataProcessor отвечает за отправку и получение данных. Появляется класс CNetworkDataProcessor, отправляющий данные по сети. CCompositeDataProcessor, отвечающий за вызов нескольких IDataProcessor по очереди. Появляется CCompressDataProcessor для сжатия и CEncryptDataProcessor для шифрования данных. Скорее всего тебе лучше использовать не сеть, а просто сохранение данных в файл.
Ну, какой в этом всем смысл? В дотнете уже есть StreamWriter и StringReader на базе которых элементарно реализуется пайплайн на обычных функциях. Доля ООП там есть, но реально раскрыть ООП таким примером будет сложно.
LD>Надеюсь,навел на интересные мысли
К сожалению, нет. За время общения с миром ФП мои воззрения несколько изменились и теперь я весьма скептически смотрю на применение ООП без особого на то основания. А тут же задача продемонстрировать сам ООП на примере. Хотелось бы чтобы пример не вызвал лишних вопросов, а демонстрировал бы преимущества ООП.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: На базе чего лучше всего продемонстрировать ООП?
FR>>например решение задачи о восьми ферьзях в ООП
VD>Боюсь, что на этом примере можно продемонстрировать только то, что для логических задачах лучше использовать Пролог, а не ООП.
Это да
Но там эта задача рассматривается как задача имитационного моделирования, так что ООП вполне на месте оказывается.
Re[13]: На базе чего лучше всего продемонстрировать ООП?
Здравствуйте, Klapaucius, Вы писали:
K>А чем вышеупомянутое реактивное программирование хуже ООП для симуляции вообще и игр в частности?
В свременных гуи-библиотеках простые задачи решаются так просто, что применение ООП на них толком не объяснить. Ну, а сложная задача уже плохо подходит в качестве примера.
А так, да — реактивное программирование — это классический пример симуляции.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[6]: На базе чего лучше всего продемонстрировать ООП?
Здравствуйте, frontsquat, Вы писали:
F>ООП к месту лишь в узком специализированном классе задач. Например, моделирование. Вряд ли это простой класс задач, подходящий для ваших целей. А в большинстве случаев ООП неуместно, криво, искусственно притянуто за уши. Поэтому лучше вообще не приводите пример с ООП.
Почти согласен, кроме оценки степени. Как раз на практике мест где ООП рулит море. Только практика она обычно далека от простоты и понятности.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: На базе чего лучше всего продемонстрировать ООП?
Здравствуйте, VladD2, Вы писали:
VD> А тут же задача продемонстрировать сам ООП на примере. Хотелось бы чтобы пример не вызвал лишних вопросов, а демонстрировал бы преимущества ООП.
Думаю, что можно стырить идею из какого-нибудь учебника по f# типа Expert f# или Programming f#, которые доступны в электронном виде. И чем не подходят всякие точки, окружности, прямоугольники? Ведь твоя задача продемонстрировать преимущества Немерле при использовании ООП, а не преимущества самого ООП, которые итак многим известны.
Re[4]: На базе чего лучше всего продемонстрировать ООП?
Здравствуйте, FR, Вы писали:
FR>Это да FR>Но там эта задача рассматривается как задача имитационного моделирования, так что ООП вполне на месте оказывается.
А ссылку можно?
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[4]: На базе чего лучше всего продемонстрировать ООП?
Здравствуйте, dsorokin, Вы писали:
D>Думаю, что можно стырить идею из какого-нибудь учебника по f# типа Expert f# или Programming f#, которые доступны в электронном виде.
Возможно. Я их не читал. Предлагай...
D>И чем не подходят всякие точки, окружности, прямоугольники?
Явной бессмысленностью применения ООП для этого. И полному практическому не соответствию действительности.
D>Ведь твоя задача продемонстрировать преимущества Немерле при использовании ООП, а не преимущества самого ООП, которые итак многим известны.
Моя задача не вызвать у читателя ощущения, что ему снова дурят голову разными фибоначами и родословными шариков. Меня самого выворачивает от этого.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[5]: На базе чего лучше всего продемонстрировать ООП?
Можно реализовать приложение для работы с результатами тестов. Тест содержит вопросы с вариантами ответов, некоторые из них правильные. Кроме этого есть критерии оценки прохождения теста и различные метрики, как то — общее количество вопросов в тесте, количество вопросов с правльными оценками, процент правильных ответов, наиболее трудные вопросы. Тесты могут быть иерархичными — получаем группировку метрик. Возможны метрики по студентам: кто ответил лучше всех, средний бал... Вопросы могут быть отмечеты тегами, получаем группировку метрик по тегам (тегам + студентам).
Соответственно можно предусмотреть:
получение входных данных из различных источников: XML, .csv, база данных,
вывод результатов в различных форматах
Re[2]: На базе чего лучше всего продемонстрировать ООП?
Здравствуйте, ZevS, Вы писали:
ZS>Можно реализовать приложение для работы с результатами тестов. Тест содержит вопросы с вариантами ответов, некоторые из них правильные.
Это решается в функциональном стиле гораздо лучше.
... << RSDN@Home 1.2.0 alpha 4 rev. 1472>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[3]: На базе чего лучше всего продемонстрировать ООП?
Здравствуйте, WolfHound, Вы писали:
ZS>>Можно реализовать приложение для работы с результатами тестов. Тест содержит вопросы с вариантами ответов, некоторые из них правильные. WH>Это решается в функциональном стиле гораздо лучше.
Возможно.
Re[6]: На базе чего лучше всего продемонстрировать ООП?
Здравствуйте, dsorokin, Вы писали:
D>Думаю, что можно стырить идею из какого-нибудь учебника по f# типа Expert f# или Programming f#, которые доступны в электронном виде.
Там не ахти какие идеи ООП. Да и подается все под соусом, что читателю наверняка придется писать библиотеки для использования на C#, взаимодействовать с FCL, потому и показывают как готовить объекты.
Re[7]: На базе чего лучше всего продемонстрировать ООП?
Здравствуйте, samius, Вы писали:
S>Здравствуйте, dsorokin, Вы писали:
D>>Думаю, что можно стырить идею из какого-нибудь учебника по f# типа Expert f# или Programming f#, которые доступны в электронном виде.
S>Там не ахти какие идеи ООП. Да и подается все под соусом, что читателю наверняка придется писать библиотеки для использования на C#, взаимодействовать с FCL, потому и показывают как готовить объекты.
Кстати идея, почему бы не написать расширение 2010 студии?
Re[6]: На базе чего лучше всего продемонстрировать ООП?
Здравствуйте, FR, Вы писали:
FR>Здравствуйте, VladD2, Вы писали:
VD>>Там ~300 страниц. Может подскажешь в каком разделе искать интересные примеры?
FR>Главы 5, 6 и 8 ну и в 19 уже сложный пример (IDE)
Кстати, мне очень понравилось первая глава этой книги где товарищ рассуждает о принципе Чёрча (об эквивалентнсоти языков по Тьюрингу) и рассуждения Сапира (лингвиста) из которых следует "язык программирования, на котором записывается решение задачи, напрямую влияет на ход мыслей программиста, заставляя его рассматривать задачу под определенным углом".
Его вывод:
Итак, как для компьютерных, так и для естественных языков справедливо: язык направляет мысли, но не предписывает их.
Очень созвучен моим мыслям. Он отлично объясняет почему многие приводимые тут примеры выглядят хорошими для их авторов и не очень для меня и некоторых других читателей этой темы.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.