Давно уже не писал ничего на С++, а это мой любимый язык :) Купил недавно замечательную книгу Андрея Александреску на тему шаблонов проектирования в С++, в хочу на практике научится использовать то, что там описано (например списки типов и фабрики обьектов). Но не могу придумать задачу.
Нужно, чтобы при ее реализации имело смысл использование ООП (конечно при желании можно даже Hello World написать с использованием хитрой иерархии классов и шаблонов, но все же хотелось бы чтобы ООП было тут в тему). Причем чем больше — тем лучше.
Практическая ценность задачи может быть и нулевая. По книжке C++ глубоко не изучишь, нужна практика. А просто реализовывать тот или иной изврат на примере классов A, B и C — скучно :) Нужна реальная цель, а не «ух ты, круто, работает, читаем следующую главу».
В общем заранее спасибо за любые мысли по теме :)
Последние комментарии
- OlegL, 17 декабря в 15:00 → Перекличка 21
- REDkiy, 8 июня 2023 года в 9:09 → Как «замокать» файл для юниттеста в Python? 2
- fhunter, 29 ноября 2022 года в 2:09 → Проблема с NO_PUBKEY: как получить GPG-ключ и добавить его в базу apt? 6
- Иванн, 9 апреля 2022 года в 8:31 → Ассоциация РАСПО провела первое учредительное собрание 1
- Kiri11.ADV1, 7 марта 2021 года в 12:01 → Логи catalina.out в TomCat 9 в формате JSON 1
Насколько я понимаю ОО принципы возникли потому, что задачи которые начали решаться на компьютере стали менее алгоритмическими и чисто матеметическими. Их предметной областью стал реальный мир. А реальный мир состоит из объектов. И чтобы программа была более адекватна предметной области в ней тоже нужно использовать концепцию объектов. Можно, конечно, и с помощью процедурного программирования решить задачу, но такая программа будет полна дублирования информации, т.к. использует не ту концепцию.
Что я хочу этим сказать. Бери задачу из реального мира, либо придумай себе мир, что более интересно. По-моему интересней всего сделать игру. Например, стратегию — у тебя там будет много возможностей разные иерархии юнитов построить.
По поводу шаблонов советую не замарачиваться. Ознакомиться с ними полезно, но сувать куда попало не стоит. Применяй их, когда они явно просятся, чтобы их применили :)
Объективист! Живой объективист, это ж надо! Ayn Rand и Nathaniel Branden в одном флаконе. Ату его, ату! :-)
Good Luck,
UT
:D
жжжжошь!
Я что-то неправильно понимаю? Может подискуссируем? :)
[flame]
«хочешь поговорить об этом?"(c)
[/flame]
just kidding ;)
Реальный мир гораздо сложнее, чем совокупность объектов.
LONGBOARD слушай:
мне кажется zIG дело говорит Мне сложно оценить что же позволяют творить шаблоны, тк я предпочитаю C. Но всё же рискну развить тему. Моделирование какой-нибудь системы, сильно сподвигает на использование полиморфизма. Например, можно следом за Кнутом моделировать работу лифта. Но лифт, наверное, слишком простой пример. Так же как стратегия или ещё хуже мир — слишком сложны. Ну так моделируй общественный туалет, метрополитен, аэропорт или ещё что-то. А чтоб совсем весело было, забудь про существование stl.
Гы, а топик то жив :)
Почему я не хочу игру… Эмм, я просто на работе был занят как раз таки над проектом игрухи онлайновой, и у меня уже от слов Hp, Strength, Agility итд начинается понос и краснуха, в общем надоело игры писать :) А идея про модель апщественного туалета — гуд ;)
Что касается моделирования, то вот чего я наслушался и что мне понравилось в универе: «Модель — это то, что позволяет отвечать на заданные вопросы к моделируемой системе с заданной точностью. Моделирование должно иметь цель.» То есть, прежде чем моделировать что-то, нужно определить те вопросы, на которые модель должна будет ответить. Например модель судна делают для проверки плавучих свойств, модель бизнесс-процесса для выяснения возможностей его совершенствования (в том числе и автоматизации).
Поэтому вопрос: какова цель моделирования общественного туалета? Ради самого моделирования?
Модель без цели — это бессмыслица. Если цели нет, то подразумевается, что модель должна отвечать на все вопросы, либо ни на один. Модель, отвечающая на все вопросы — это сам объект. Тебе нужен свой общественный туалет!? :)
Да, буду водить друзей на экскурсию :D
Хм, а на тему моделей процессов — это интересно….
Послушай, zIG, ты и вправду чего-то не того наслушался в своем универе.
Моделирование не обязано иметь каких либо целей или может иметь целью само моделирование. Детские модельки самолетов и автомобилей не призваны ответить ни на какие вопросы. Модели домов из кубиков призваны улучшить способности детей к моделированию.
Во взрослой жизни моделирование называется наукой. Любая наука строит модели, математические или не очень, абстрагируясь от неважных вещей и заменяя терминами (кубиками) вещи важные. Законы Ньютона — часть модели движения, с материальными точками и их скоростями и ускорениями (а также силами, массами и прочим антуражем в реальной жизни не встречающемся) в качестве кубиков. Математика занимается моделированием ради самого моделирования, придумывая новые кубики и исследуя возможности их соединения в конструкции.
ООП — одна из технологий моделирования. Ее отношение к реальной жизни ничуть не более близкое, чем у дифференциальных уравнений. Некоторые задачи удобнее решать в этой парадигме, некоторые — процедурно (чего никак не могут понять разработчики Джавы). Реальный мир состоит из объектов не более, чем он состоит из детских кубиков или функций и их производных. Теория Айн Рэнд — что-то типа мальчика для битья в современной философии. Попытка объявить модели реальными и существующими независимо от модельера привела к краху многие философские течения, не только материалистические, позитивистов, например. Погугли на доктрину «АНАТМАНа» в буддизме, например, если тебе интересно.
Такие вот дела, братец. :-)
Good Luck,
UT
:)
Все делается для чего-то. Математика не просто строит модели от нечего делать. Есть необходимость — строится модель, далее она совершенствуется по мере необходимости. Пример из математики? Сначала люди пользовались только натуральными числами, других было не нужно, других не существовало для людей. Потом появились отрицательные числа и дроби. Почему? Потому что было нужно вычитать и делить. Далее появились вроде бы никому ненужная модель комплексных чисел. Мне она нужна? Нет. И много кому не нужна, но это не значит, что ее построили от нечего делать. Она была нужна для решения специфичных задач.
Я не согласен с тем, что модели можно строить без цели.
Если нет цели моделирования, то что считать критерием важности?
Я не собираюсь утверждать, что ООП подходит для всех задач. Это было бы слишком недальновидно. Наш мир действительно сложен и многообразен. Я только хочу заметить, что его повсеместное использование — это не заговор или кому-то было нечего делать. Просто задачи стали решаться больше такие, где ООП больше подходит.
Ну а вопрос, состоит ли наш мир из объектов или из чего-то еще, оставим философам. Вот они и строят модели без цели и поэтому их модели разваливаются. Общая модель мира — это сам мир!
Поверь мне, именно этим она и занимается. :-) Некоторым математическим разработкам везет, и они используются разными науками ПОСЛЕ ТОГО, КАК они проидуманы. Повезло, например, Леви-Чивитовским тензорам, их Эйнштейн использовал для записи уравнений своей общей теории относительности. Правда, те уравнения в общем случае хрен решишь, так что польза тут тоже весьма сомнительная…
В чем полезность теории Галуа? В теореме Абеля, утверждающей, что уравнение пятой и выше степени не разрешимо в радикалах? Ну и что?
Ньютон и Лейбниц создали дифференциальное и интегральное исчисление вместе с физической теорией движения. А зачем была создана топология? По инерции, при разработке теоретических оснований этого исчисления. Может, когда и ей повезет. Кому нужна теория гомологий, теория пучков и алгебраических систем? Пока никому. В чем прелесть теории категорий? В том, что она такая красивая есть. :-) Кого интересует Великая Теорема Ферма? Всех. А почему? А просто… :-)
Да-да, именно так оно все и было… :-) См выше.
Все, что угодно можно делать бесцельно, а потом оправдывать сколь угодно высокой целью. :-) Или строить с целями, не сводящимися к ответам на вопросы, которые может дать сама модель.
А зачем что-то оставлять кому-то? Мы — мысляшие личности, давай мыслить. :-)
Good Luck,
UT
Uncle_Theodore вам пора сесть за написание книги на тему «Что такое модели и с чем их едят». Честно, очень интересно :)
Убедил :)
Я себе эти факты вполне определенно объясняю особенностями человеческого мышления. Вот как я себе его представляю:
Человеческий мозг имеет модель внешнего мира. Человек может влиять на него добавляя факты о мире. Если факты не укладываются в модель, то мозг пересматривает модель, чтобы нашлось место и для этого факта. А дальше мозг может выдывать интересные вещи, до которых нам кажется мы сознательно додумались. Я хочу сказать, что мышление несознательный процесс.
Вот такое у меня представление. Оно не полное и не претендует на правоту. Я попробовал формализовать более-менее те образы, которыми, я себе все это представляю. Если бы вы знали какими образами я себе ето представляю!
Поэтому давайте не будем про модель мозга и искусственный интеллект? :)
Ну так вот. По мере получения новых данных о мире наш мозг строит все новые модели, объясняющие эти данные. А потом этим моделям находится применение.
Ну, например:
Появилось ограничение на скорости близкие к скорости света — мозг Энштейна обобщил динамику Ньютона и ограничение заняло свое место. Потом его модель была использована для практических целей.
Но это все модели мира в нашем мозгу, которые формируются несознательно. Я же, наверное, хотел сказать о важности определения цели моделирования при изучении систем. То есть нужно четко определить цель изучения и руководствуясь этой целью строить модель.
Хочется просто сказать, что цель важна при целенаправленном изучении систем. Но ведь это масло масленное, и ежу это понятно! :)
Мир такой, какой он есть. Модель в моем мозге отвечает на мои бытовые вопросы (хотя несколько шире, чем нужно было бы) и ограничена вследствие ограниченности моих возможностей для получения фактов о мире. И мне в общем-то неинтересны философские споры :)
Устройся на работу, и там вовсю используй шаблоны проектирования :)
Работал я летом, вовсю использовал (правда не шаблоны, а просто иерархию классов, т.к. приходилось писать на PHP 4) :) А теперь надо учитсо.
Ух ты. Универ отдыхает…
Когда вторая лекция? ;D
Усе, задачу нашол, интересную и все такое ;)
И чего за задача если не секрет??
Я вот тоже хочу вставить свои пять копеек.
Тут вот говорили про ООП, процедурный подход. А ведь вся эта музыка решает лишь заранее формализованые задачи. А 80% задача либо не формализуются, либо это очень проблематично. Вот где поле для деятельности! А вы про ООП и шаблоны.
2 UT
похоже топология себя «нашла», в новых учебниках по мол. биологии и биохимии встречаются узлы второго порядка, и подобная гадость при описании полимеров.
И еще об объективизме, по моему он не только мальчиком для битья работает но и огрызается неплохо.
2 LONGOBARD
давай колись,интересно же.
участие в разработке одной С++ либы, подробностей сказать не могу т.к. обещал не говорить :)