Аватар для Divergence
7 / 7 / 2
Регистрация: 19.06.2013
Сообщений: 174

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

08.06.2014, 18:54. Показов 1287. Ответов 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
Ответ Создать тему
Опции темы

Новые блоги и статьи
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru