Dire che il programma 'non fa quello che ti spetti' e' decisamente un po' troppo generale, ovviamente.
E se le classi sono tante, identificare chi e' che 'non fa quello che ti aspetti' dipende da quanti oggetti sono coinvolti nel fare quello che vorresti venga fatto.
L'unico modo per affrontare questo problema e' il seguente: controllare, una per una, le classi che hai scritto, assicurarti che facciano esattamente quello che dovrebbero fare, quindi metterle assieme, una alla volta, e controllare che la loro composizione funzioni esattamente come ti aspetti debba funzionare.
Non ci sono sistemi miracolosi per ovviare a questi passi.