Кожного разу, коли від мене вимагали будувати проект, я завжди встигав його скласти, не заздалегідь розробивши план чи дизайн, а після того, як спочатку написав потрібний клас, склавши весь проект, будуючи знизу вгору. Тепер я знаю, що це не правильний спосіб створення програмного забезпечення, але мені непросто обернути голову навколо того, що називається об'єктно-орієнтованим аналізом та дизайном. Я можу легше зрозуміти процедурну конструкцію зверху вниз, оскільки вона полягає в простому розбитті завдань на підзадачі, речі, які мають свого аналога за кодом, функціями. Але об'єктно-орієнтований аналіз та дизайн я не можу легко зрозуміти, бо не розумію, як можна знати, які класи їм знадобляться та як вони будуть взаємодіяти, якщо вони не знають, як їх кодувати.
Оскільки ми впроваджуємо поняття класів та об’єктів у процес проектування, ми вже не можемо проектувати зверху вниз, оскільки ми більше не розбиваємо свої проблеми на ті речі, які можна реалізувати як процедури. Натомість, відповідно до того, що я прочитав з цього приводу, ми повинні визначити, які класи потрібні, та створити різні артефакти в уніфікованій мові моделювання, які потім ми можемо використовувати під час реалізації програмного забезпечення. Але такий процес проектування я не розумію. Бо як хтось знає, які класи їм знадобляться, і як вони будуть взаємодіяти, якщо вони вже не задумали всю систему?
Це тоді моя проблема. Я не розумію, як створити об'єктно-орієнтовану систему, хоча я розумію поняття об'єктно-орієнтованого програмування і можу використовувати ці поняття в будь-якій мові об'єктно-орієнтованого програмування. Тому мені потрібен хтось, який мені пояснить, який простий процес я можу використовувати для проектування об'єктно-орієнтованих систем таким чином, щоб він міг мати сенс для мене.



