У меня вопрос, касающийся реализации проекта, а конкретнее - как спроектировать (придумать) архитектуру программы?
То есть, я получил ТЗ, представляю как действует программа, но вот как именно реализовать ее через код, как связать все это, понятия не имею.
Какие нужны классы, какие объекты, методы и т. д.
Что в таких случаях делается?
Максим Федоров, в средних и больших проектах такое уже перестает работать. Или работает на столько криво, что дальнейшее поддержание или развитие таких проектов обходится работадателю в "еще больше" денег, чем могло бы быть ))
Максим Федоров, задавать вопрос конкретнее. Но тут есть вторая проблема, если его расписать как следует, то людям тут придется делать всю работу за автора ему на ладонь)) А так как уже и написал в комменте OOAD очень интересная область, это кстати был мой любимый предмет и по мне так такое проэктирование даже интереснее самого кодинга :D Да и программ для этого достаточно есть, который (ЕСЛИ все правильно сделать) потом генерируют большую часть кода из всех связей. Потом только уже писать алгоритмы для функций и тесты. Но это в идеале конечно... От друга слышал, что они так и работают. Я же в reseach отделе. У нас все через жопу, и эта боль чувствуется сильно хД Т.к. проекты не маленькие.
Ключевые слова:
- Обьектно-ориентированный анализ и дизайн
- UML
- Use case's
- Class Diagramm
Гайд на скорую руку тык
На эту тему есть конечно же много книг. В зависимости от состояния проета используются разные методы. Иначе же на этот вопрос нельзя конкретно ответить.
Не скажу за всех, потому что по-моему это индивидуально у каждого архитектора,
лично я составляю "mind map" то есть схему по блокам (блок - отдельный класс) кто чем занимается, что куда передаёт, сначала просто тупо следуя тз, что бы это примерно выполняло задание, потом уже рефакторинг - как сделать проще, какой блок выкинуть (например дублирует какой-либо другой), изменяю связи. Потому сажусь писать код ибо в схеме проще исправить, чем в сотнях строк кода. Ну и разумеется "опыт".
Плясать от того, что разбить функционал программы на логические модули - это и будут ваши классы. Их уже разбивать по тому, что они делают - на методы и свойства. И так далее, по принципу "Разбиваем на модули, группируем однотипные модули, повторяем".
А остальному - почитайте про паттерны, по ходу их изучения все поймете сами. Хотя бы 5 паттернов вы должны понимать перед тем как браться за серьезный проект. Не знать наизусть - а именно понимать, что и для чего делается.