Как реализовать программу?
Ключевые слова: 
 - Обьектно-ориентированный анализ и дизайн
 - UML
 - Use case's
 - Class Diagramm
Гайд на скорую руку тык
На эту тему есть конечно же много книг. В зависимости от состояния проета используются разные методы. Иначе же на этот вопрос нельзя конкретно ответить.
Плясать от того, что разбить функционал программы на логические модули - это и будут ваши классы. Их уже разбивать по тому, что они делают - на методы и свойства. И так далее, по принципу  "Разбиваем на модули, группируем однотипные модули, повторяем".
А остальному - почитайте про паттерны, по ходу их изучения все поймете сами. Хотя бы 5 паттернов вы должны понимать перед тем как браться за серьезный проект. Не знать наизусть - а именно понимать, что и для чего делается.