Software design - Java project