Warum betreiben wir modularen Klassenentwurf?

An dieser Stelle kann man sich mit zwei Fragestellungen befassen:

Warum macht man das überhaupt? Könnte man nicht einfach alles Funktionalität in einer Klasse unterbringen, anstatt das Programm auf viele einzelne Klassen(dateien) zu verteilen?

Wenn die OO-Modellierung eine Problems nicht eindeutig ist - woran erkennt man dann, ob man es „gut“ gemacht hat?