te recomiendo una cosa... para el diseño no lo hagas directamente programando.
Existe una herramienta llamada StarUml que te puede ayudar a crear un diagrama de clases y cooperación y con eso luego codificarlo te será mucho más fácil. Yo en mi vida profesional como manager-developer lo gasto bastante al empezar proyectos o retomar los realizados por otras personas para ententer que están haciendo.