| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Проектирование приложений |
| Автор: HappyLife 30.10.2008, 11:48 |
| Здравствуйте уважаемые форумчане. C++ воистину сильный язык разработки приложений. Он гибкий и устойчивый. Он максимизирует границы возможного. И трудность в разработке приложения чаще заключается не в его написании, а к проектированию. Боюсь, для меня это проблема. Каждый раз как я беру листок бумаги, у меня возникает сложность в структурировании данных, в путающихся листочках, в методах записи. В итоге моя структура превращается не что-то структурированное, а в настоящую паутину, в которой я запутываюсь. Так что же говорить о самом написании программы!!! Какие есть система, метод, способ проектирование приложения? Я продолжаю делать самостоятельный поиск этой информации в интернете, однако параллельно буду ждать ответов и здесь, от Вас уважаемые Гуру. Спасибо за понимание. |
| Автор: Gunslinger 30.10.2008, 11:56 |
| Такая же проблема. Пытаюсь прописать все возможные методы для класса, но предугадать и правильно разграничить не получается с первого раза. В тоге - итерационная разработка. Проблему решил, работаешь дальше - бац - появилась новая проблема, которая не стыкуется с предыдущим решением - приходится перепроектировать. зы. мне кажется, дело не в незнании UML. |
| Автор: Alek86 30.10.2008, 12:09 |
| это написано во всех книжках по проектированию - точно угадать, как нужно будет поменять прогу, не получится. потому нужно стараться проектировать не только текущую задачу, а и оставлять немного на будущее. с опытом приходит "интуиция", следуя которой можно уменьшить потребность в перепроектировании в общем для начала я бы просто советовал не писать больших функций, монолитных классов, общирных интерфейсов и т.п., чтобы перепроектирование было как можно более безболезненным |
| Автор: HappyLife 30.10.2008, 12:19 |
| Где можно почитать, насчет того как правильно составить архитектуру программы? |
| Автор: Alek86 30.10.2008, 12:27 |
| Макконелл "Совершенный код" и что значит "правильно"? единого решения не существует |
| Автор: Lazin 30.10.2008, 13:03 |
| Э. Гамма, Р. Хелм, Р. Джонсон, Дж. Влиссидес. (GOF) Приемы обьектно - ориентированного проектирования Паттерны Проектирования. http://www.citforum.ru/SE/project/pattern/ |
| Автор: HappyLife 30.10.2008, 13:08 |
Спасибо! |
| Автор: HappyLife 30.10.2008, 13:55 |
| Посоветуй пожалуйста неплохое приложение для создание архитектуры приложения. Сейчас я использую Microsoft Visio. |
| Автор: Lazin 30.10.2008, 14:03 |
| текстовый редактор. я серьезно |
| Автор: Alek86 30.10.2008, 14:40 |
| лично мне удобнее бумажка и ручка а уже ПОТОМ, когда научишься боле-мене архитектурить (я вот еще не научился), можно использовать Rational Rose или Enterprice Architecht ну, или если надо с удаленными коллегами обмениваться |
| Автор: HappyLife 30.10.2008, 17:49 |
Да, но у этого способ есть существенные недостатки. Бумага ограничена в объеме. Между блоками, невозможно вставить третий, без перечертежки, или усердной работы ластиком. И вообще порой происходит невозможность модифицирования, без полного перерисования. У меня нет четкого план-схемы по созданию Архитектуры. Я не придумал способы разграничения, участков кода и форм, базу данных и что-нибудь еще, когда нужно написать просто список свойств, а когда нужно каждое свойство заносить в отдельный блок. Я еще не придумал полноценной собственной системы проектирования. (Ведь нужно же на что-то опираться: методы, условные обозначения, порядок действий, на каком этапе проектировать GUI). Поэтому, скорее всего, на компьютере оно экономичнее. Друзья, может быть вы поделитесь вашими методами проектирования? |
| Автор: baldina 30.10.2008, 21:22 |
| проектирование, так же как и программирование, и вообще любая инженерная деятельность (а может и вообще любая) имеет общие принципы. среди них один из важнейших - разделяй и влавствуй. он означает разделение задачи на подзадачи, что уменьшает число сущностей, рассматриваемых одновременно. на этом пути широко используется абстракция - выделение главного, обобщение, отбрасывание несущественного. как методологию удобно использовать объектно-ориентированный подход, как хорошо зарекомендовавший себя для проектирования крупных задач. к тому же результаты объектго-ориентированного анализа и проектирования легко отображаются на объектно-ориентированный язык, например С++ Я бы рекомендовал г.буч сотоварищи "объектно-ориентированный анализ и проектирование" как достаточно свежий фундаментальный труд на эту тему. отмечу, что такие вещи, как специализированный софт, языки типа uml, бумажка с ручкой - всего лишь инструменты. идеи, они в голове |
| Автор: MAKCim 31.10.2008, 17:49 |
| проектированию научится нельзя это как талант, либо он есть, либо его нет иначе все были бы архитекторами и некому было бы писАть код все имхо |
| Автор: HappyLife 1.11.2008, 10:02 | ||
И раскладывать все листочки на полу, оградить комнату ленточками, на двери повесить табличку идет проектирование, и лишь когда будешь заложен последний листик с надписью exit(0) все сфотографировать и снять опечатку комнаты) Тем неменее ваша мысль ясно правильно. Однако, когда приходится на этом самом листочке снова делить блок, то... нехватает места, и.... нужно брать новый листик) Просто порой сразу не угадаешь, уместишь или нет.))) |
| Автор: baldina 1.11.2008, 11:30 | ||
Хорошие способности, талант - прекрасно. Но анализ, архитектура, проектирование - не шаманство. Есть подходы, принципы, методологии. Обучившись и следуя им человек со средними способностями будет выдавать приличный результат. Конечно, есть и элемент искусства, но это любой инженерной деятельности касается. Не могу не привести слова моего препода по матану на 1м курсе: "Дифференцировать можно уметь или не уметь. Дифференцировать можно научить и обезьяну. А интегррировать можно не уметь, можно уметь, а можно уметь здорово интегрировать. Вот я - здорово интегрирую" |
| Автор: mes 1.11.2008, 11:51 | ||
Судя по первой цитате понята не до конца. Зачем постоянно одновременно держать разложенными все листочки? Обычно во взаимодействие участвуют два-три объекта, вот их и выкладывайте. Остальные пусть себе себе спокойно лежат в коробочке |
| Автор: Lycifer 3.11.2008, 11:40 |
| Не время приводят к опыту,а события... Только практика проектирования научит разрабатывать архитектуру программ |
| Автор: Lazin 3.11.2008, 13:22 |
| Не время приводят к опыту,а события... Только практика пилотирования научит управлять самолетом |
| Автор: Torsten 5.11.2008, 12:37 | ||
| хе, это называется попса. Один сказал - другие подвхатили и стали развивать, как будто единственный метод проектирования заключается в рисовании. Думать шаблонами - вредно (я имею в виду не программерские шаблоны, а шаблонные мысли - кто-то сказал, посоветовал, сделать так - я сделаю так), каждая ситуация различна и применять одинаковый метод к решению похожих задач нельзя, т.к. условия всегда будут разными и результаты соотвественно тоже. Искать нужно, не сходства, а отличия. Можно все делать и без рисования, если ясно и четко представлять что есть и что нужно.
Пьешь кофе, смотришь в потолок, напрягаешь мозги - отбираешь мысли, сортируешь их. Нету методов, нету. Все зависит от конретной ситуации здесь и сейчас. Только если ничего не делать - результата тоже не будет. |
| Автор: Vyacheslav 5.11.2008, 13:42 | ||
Rational Rose |
| Автор: aleks88 17.2.2012, 15:08 |
| Товарищи Господа! Во первых всех приветствую, а во вторых думаю, что данная тема наиболее подходит для нижеописанного вопроса Ситуация следующая: база данных FireBird + клиентское приложение, что я выполнил и уже работает, работает корректно, однако, чует мое сердце, что за такую реализацию в приличных кругах дают по морде Я бы хотел описать, как я сделал и получить ваши комментарии по этому поводу. База данных, содержит n полей. Каждая группа пользователей видит несколько полей и может их редактировать, но есть и такие, которые редактировать не может, а только просматривать, редактирует их другая группа. Первая группа видит все записи, остальные только после того, как некоторое поле будет не пусто. Я сделал одну общую таблицу и представления по условию where _fieldname_ is not null. Клиентские программы написаны на C++ Builder + FIBPlus + EgLib (только DBGridEh). Соответственно, для каждой группы своя программка. Подключения каждой из программ идет по стандартному имени и паролю для firebird (админские права), но на уровне самой программы, доступ ограничен как бы визуальными компонентами Соответственно, если в структуру таблицы, вносятся изменения, то нужно дорабатывать клиентские приложения. В общем пока все, хочется критики и советом, как делают умные люди. |
| Автор: boostcoder 17.2.2012, 15:34 |
| aleks88, нельзя постить не в свои темы! это первое. второе - тема скончалась три года назад! нельзя беспокоить покойников! |
| Автор: Result 17.2.2012, 16:10 |
| Только из своего маленького опыта: Вначале читал и "Совершенный код" и паттерны банды 4-х, и Бэка ТДД, статьи и тд., но какой-то реальный качественный скачок получил после труда Роберта Мартина "Чистый Код". |
| Автор: boostcoder 17.2.2012, 16:11 |
| еще один некрофил. |
| Автор: Result 17.2.2012, 18:15 |
| В пятничный вечер не посмотрел на даты |