In primo luogo, è piuttosto difficile riassumere qualcosa di complicato come OO in poche frasi. Ti consiglierei di trovare dei buoni libri sull'argomento e leggerli mentre pratichi ciò che predicano.
Detto questo, una breve spiegazione sarebbe: l'orientamento dell'oggetto è semplicemente un modo particolare di strutturare il codice. Stai provando a creare pezzi di codice che sono liberamente accoppiati e coesi. Abbastanza sciolto significa che non si appoggiano inutilmente l'uno sull'altro, e il significato coeso che le cose che dovrebbero essere vicine, lo sono. L'incapsulamento è il principio di far apparire una classe il più semplice possibile al mondo esterno, pur contenendo la complessità necessaria, dentro di sé. Stai anche cercando di ridurre la ripetizione e la duplicazione di codice e logica (DRY, ecc.).
Questi sono i principi generali e dovresti dedicare molto tempo a cercare di capire perché questi sono buoni principi e cosa significano. Tendono ad essere abbastanza universali, quindi sarai in grado di applicarlo al di fuori di OO. Una volta che avete questi "principi fondamentali" (e sono non semplice) verso il basso, si capirà whys , e può fare le proprie chiamate di giudizio sul design. Sfortunatamente, non riesco a pensare a nessun altro modo per entrare nei dettagli senza scrivere pagine e pagine, quindi lo lascerò. Ultimi suggerimenti: cerca di essere sicuro di capire perché stai facendo qualcosa; ma sii paziente: non ho quasi mai visto nessuno che fosse più che poco competente in OO con meno di 5 anni di esperienza.