Всякий раз, когда мне требовалось построить проект, мне всегда удавалось построить его, не заранее разработав план или проект, а после того, как сначала написал необходимый класс, конкретизировав весь проект, создавая его снизу вверх. Теперь я знаю, что это не правильный способ создания программного обеспечения, но мне нелегко обернуть голову вокруг того, что называется предметно-ориентированным анализом и проектированием. Я могу легче понять нисходящий процедурный дизайн, поскольку он состоит в простом разбиении задач на подзадачи, вещи, которые имеют свой аналог в коде, функции. Но объектно-ориентированный анализ и проектирование я не могу легко понять, потому что я не понимаю, как можно узнать, какие классы им понадобятся и как они будут взаимодействовать, если они не знают, как они будут их кодировать.
Поскольку мы вводим концепцию классов и объектов в процесс проектирования, мы больше не можем проектировать сверху вниз, потому что мы больше не разбиваем наши проблемы на те вещи, которые могут быть реализованы как процедуры. Вместо этого, согласно тому, что я прочитал по этому вопросу, мы должны определить, какие классы необходимы, и создать различные артефакты на языке унифицированного моделирования, которые мы затем можем использовать при реализации программного обеспечения. Но такого рода процесс проектирования мне не понятен. Ибо как узнать, какие классы им понадобятся, и как они будут взаимодействовать, если они уже не представили всей системы?
Это моя проблема. Я не понимаю, как проектировать объектно-ориентированную систему, хотя я понимаю концепции объектно-ориентированного программирования и могу использовать эти концепции на любом известном мне объектно-ориентированном языке программирования. Поэтому мне нужно, чтобы кто-то объяснил мне, какой простой процесс я могу использовать для разработки объектов с ориентацией на объекты, чтобы это имело смысл для меня.