Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
 Аватар для Divergence
7 / 7 / 2
Регистрация: 19.06.2013
Сообщений: 174

Средства для проектирования больших проектов с использованием ООП

08.06.2014, 18:54. Показов 1275. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет!
Когда пишешь небольшую программу, все получается уместить в голове и ничего проектировать не нужно. Сейчас впервые я пытаюсь сделать что-то настолько громадное, что мозга все запомнить просто не хватает.
Опять же, из-за дилетантского подхода, у меня проектирование идет параллельно кодированию, что привело меня к тому, что я чаще переписываю код, чем добавляю новый функционал. Потому что если проект будет плохо спроектирован, то я просто умру при попытке там что-то исправлять или добавлять.
Отсюда мой вопросы:
1) Какое ПО используется для проектирования больших проектов? (я вижу это созданием логически связанных диаграмм с классами, функциями и переменными).
2) Какие книги можете посоветовать, которые рассказывают о том как правильно проектировать большие ООП проекты?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
08.06.2014, 18:54
Ответы с готовыми решениями:

Какие средства ООП можно применить для описания Игрока и Противника?
Всем доброго времени суток! Ситуация следующая: написал игру на курсовой в универе. Основная цель: написать графическую игру с...

Удобная среда для чтение больших проектов
Господа, есть ли удобная среда какая-то которая бы облегчала чтение больших проектов. Пример скажем подключая проект - "силой...

Методы и средства проектирования ПЛИС
Подскажите литературу по методам и средствам проектирования ПЛИС

5
Заблокирован
09.06.2014, 07:50
Что, не помогает никто?
А потому что такого особенно и нет.
Модель предметной области строит Protege, но ИМХО это фуфло - получается, в сущности, база данных, только еще к ней можно схему нарисовать покрасивше.
Для алгоритмов - блок-схемы.
А с переменными и функциями! - такого нет.
Меня сильно заинтересовал ваш проект, что же там ТАКОГО сложного)))))))
Если хотите, дайте мне ТЗ и кратко изложите свои идеи, постараюсь помочь с проектированием.
И конечно, не спроектировав хотя бы стратегически, лучше не кодите, а то потом не разберетесь.
1
Эксперт С++
2924 / 1274 / 114
Регистрация: 27.05.2008
Сообщений: 3,465
09.06.2014, 12:32
А что в твоем понимании "что-то настолько громадное, что мозга все запомнить просто не хватает"?
0
 Аватар для Divergence
7 / 7 / 2
Регистрация: 19.06.2013
Сообщений: 174
09.06.2014, 23:30  [ТС]
Цитата Сообщение от Блондинка с ОЗМ Посмотреть сообщение
Модель предметной области строит Protege, но ИМХО это фуфло - получается, в сущности, база данных, только еще к ней можно схему нарисовать покрасивше.
Для алгоритмов - блок-схемы.
А с переменными и функциями! - такого нет.
Я просто думал, что в больших проектах используются какие-то удобные средства для проектирования. Почитал про UML-диаграммы, скачал пару программ, но меня не впечатлило... Как то не очень наглядно получается, особенно при большом количестве переменных. Возможно я просто использовал не те программы и до конца не проникся идеей... Я пока остановился на простом диаграммо-стройщике. Но там чего-то не хватает, не могу понять чего. Как то все выглядит просто и наглядно. Мелкие детали сложно учитывать, общение между классами и функциями сложно учитывать (не всегда понимаешь как это нарисовать так, чтобы было сразу понятно что происходит).
Цитата Сообщение от Блондинка с ОЗМ Посмотреть сообщение
Если хотите, дайте мне ТЗ и кратко изложите свои идеи, постараюсь помочь с проектированием.
И конечно, не спроектировав хотя бы стратегически, лучше не кодите, а то потом не разберетесь.
ТЗ у меня пока нет. Пробую написать 2D игру (в Direct2D). Я сейчас в такой ситуации, что для того, чтобы понять что я хочу, мне надо понять что я могу. Поэтому, пока все сводится просто к наброскам и тестированию функционала. Но дело постепенно движется вперед, и без четкого плана двигаться дальше становится все сложнее.
Меня в первую очередь интересуют правила грамотного взаимодействия классов между собой. А так же реализация различных "триггеров" - что-то произошло; какое-то время идет реакция; конец "триггера".
Когда просто размышляешь об этом - кажется что все просто и очевидно. А на практике получается немного по другому...

Цитата Сообщение от CheshireCat Посмотреть сообщение
А что в твоем понимании "что-то настолько громадное, что мозга все запомнить просто не хватает"?
Вспомните свои первые шаги в программировании: 1-2 функции, маленькая задача, код на 3-4 монитора. Я не гений, поэтому код бОльшего размера у меня в голове не умещается, а если не кодить 2-3 дня, то к такому громадному коду возвращаешься как в чужую страну. Поэтому, задача стоит сделать так, чтобы с первого взгляда было понятно что-где и чтобы можно было безболезненно добавлять новые фишки, не ломая старые (и не модифицируя старый код).
Как-то так.
Вдогонку хочу еще спросить про паттерны проектирования: можно ли найти подходящие? Я купил книгу, но пока читаю Страуструпа, поэтому паттерны пока изучать не начинал. Стоит ли?
0
Эксперт С++
2924 / 1274 / 114
Регистрация: 27.05.2008
Сообщений: 3,465
10.06.2014, 10:01
Цитата Сообщение от Divergence Посмотреть сообщение
Вспомните свои первые шаги в программировании: 1-2 функции, маленькая задача, код на 3-4 монитора. Я не гений, поэтому код бОльшего размера у меня в голове не умещается, а если не кодить 2-3 дня, то к такому громадному коду возвращаешься как в чужую страну. Поэтому, задача стоит сделать так, чтобы с первого взгляда было понятно что-где и чтобы можно было безболезненно добавлять новые фишки, не ломая старые (и не модифицируя старый код). Как-то так. Вдогонку хочу еще спросить про паттерны проектирования: можно ли найти подходящие? Я купил книгу, но пока читаю Страуструпа, поэтому паттерны пока изучать не начинал. Стоит ли?
Гм. Ну, на этом этапе паттерны проектирования тебе без надобности. Хотя книжка (GoF ?) пригодится в дальнейшем, через несколько лет.

Что касается "кода горомадного размера": практика, только практика. Ты думаешь, бегуны с первого подхода пробегают стометровку за 9 секунд? Ага, как же. Это достигается только долгими тренировками. Так и у тебя: качество кода будет улучшаться постепенно. Правильные имена функций, переменных, комментарии позволят не запутаться в коде.
0
Заблокирован
10.06.2014, 11:31
Ну так и начните со схемы классов. Какие классы объектов у вас будут? какие из них имеет смысл наследовать и от каких? Какие в них будут поля?
Я бы делала это в базе данных вроде Access или в электронных таблицах, каждая переменная (или иное поле, например массив) имеет свою запись, колонки - классы, значение ячейки - нужна ли эта переменная в этом классе. Там можно получать выборки визуально. И вот отсюда и определить, что от чего наследовать. Если в классе 1 переменные 1-15, а в классе 2 4-10, 12 и 16-18, то 2 наследует от 1.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
10.06.2014, 11:31
Помогаю со студенческими работами здесь

Классик ООП и проектирования о множественном наследовании
Бертран Мейер, один из главных вдохновителей ООП-проектирования, автор принципа "open-close" SOLID(буква O) пишет следующее: ...

Разработать ПО для управления справочником с использованием ООП
Здравствуйте. Ребят пожалуйста, конечно если возможно то просто ссылки накидайте на сопутствующую литературу. Заранее благодарен. Суть...

Написание больших проектов
Пишу проект, но возникла проблема: проект так разросся, что обычные комментарии в коде не спасают, очень часто приходится долго искать и...

Дебаг больших проектов
Имеется большой проект - движок сайта с кучей либ и методов, естественно чужой. Некоторые связи можно проследить, но понять целиком где...

Разработать программу для учета сотрудников с использованием средств ООП
Всем привет от новичка. Мне отправили 2 тестовых задания по вакансии стажер-программист C#. 1-е я сделал консольное, но без применения...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru