Есть проектирование в стиле ОО. От общего к конкретному и наоборот. Если брать стиль разработки TDD, то, вначале берут интерфейс или пустышку и первый прогон красных тестов идёт по ней. Я могу много набросать и ты поймёшь, что не всё просто, что можно и так и эдак. И вообще, рекомендую полистать книжки Мартина