Hallo zippex,
wie schon gesagt wurde, ist dieses Thema beliebig komplex. Bloß ein paar Hinweise, die mir spontan einfallen:
Versuche, die Klassen zu entkoppeln, also möglichst wenig Abhängigkeiten zu haben. Stell Dir vor, Du änderst eine Methode und darfst dann mal eben fünf, sechs Klassen ändern, damit es wieder passt.
Eine Klasse = eine (!) Aufgabe. Weiß z. B. die Userklasse, dass es einen Bildschirm gibt? Kennt Sie auch das Ausgabeformat (html, xml, svg, ...), die Sprache, das Layout? Wenn ja, wozu? Was hat das mit Usern zu tun?
Habe keine Angst vor vielen kleinen Klassen.
Wenn Du Interfaces hast (z.B. php5 oder Java), mach Gebrauch von Ihnen. So kannst Du auf Schnittstellen und nicht auf Implementierungen zugreifen.
Nicht leicht und erst sinnvoll, wenn Du schon mal Interfaces, abstrakte Klassen und Vererbung rudimentär verstanden hast:
Das Buch „Head First Design Patterns“ (englisch oder deutsch) vom OReilly Verlag.
Ach ja, auch Skizzen mit schönen Rechtecken, Pfeilen etc. helfen beim Entwickeln. Wer es standardkonform mag, schaut sich UML an.
Gruß
Olaf