Создание любой программы (особенно на объектно-ориентированном языке) начинается с проектирования ее структуры, что существенно облегчает дальнейшую ее разработку, ведь так?
Я думаю данная тема будет полезна для тех, кто пока еще не может четко представлять себе необходимую иерархию классов и необходимые связи элементов программы (особенно мне
), а писать все на абум уже надоело. 
По-этому, прошу помощи у вас, уважаемые программисты, подскажите какие-нибудь материалы по технике проектирования структуры программы (иерархии классов и всего что необходимо).
Стоит начинать пожалуй с разработки требований (ну или ТЗ). Там описать как раз все в терминах предметной области. Какие задачи должна решать программа. Причем, составление ТЗ - часто задача не тривиальная

. Но очень сильно помогает определиться с целью ИМХО.
Если в проекте участвует более чем 1 человек, то пожалуй стоит определиться так же с тем, что и как делать в различных ситуациях.
Ну а дальше, проектирование, реализация, отладка, проектирование, реализация, отладка, проектирование, реализация, отладка....
Что почитать... ну хз, вот передомной лежит книга "UML - проектирование систем реального времени, распределенных и параллельных приложений" от Хассана Гома. Все идет в контексте использования UML(различных диаграмм, для чего, что и как) - для ООП полезно. Полезно почитать паттерны проектирования, опять же для ООП.
Лично я, иногда пользую UML, бумажки

Где-то так. Сумбурно конечно и не претендует на истину

.