När jag först lärde mig lite OOP berättade någon följande för mig (ungefär):
Tänk dig att du ska "programmera" en bil. En bil är uppbyggd av en mängd olika komponenter. Man skulle med OOP kunna realisera detta genom dela in bilen i sina olika komponenter och göra klasser som representerar dessa. Dessa klasser kan man sen tilldela olika funktionalitet och attribut.
Man kanske gör en klass som motsvarar motorn och en klass som motsvarar styrningen. Komponenter kan även vara delar av andra större komponenter. Motorn har kanske en generator. Då gör man en klass för generatorn och låter motorklassen "äga" en sådan generatorklass. Man säger att motorn HAR en generator.
Som vi alla vet är en bil ett motorfordon. Om man vill kan man ska en generell klass för motorfordon och låta bilklassen ärva alla egenskaper av denna "superklass". Man säger att en bil ÄR ett motorfordon. Alla motorfordon har ju t.ex. en topphastighet. Genom att ärva egenskaper på detta vis får man en betydligt mycket bättre struktur och överblick i koden. Speciellt när det handlar om lite större projekt.
OOP underlättar dock inte endast visualiseringen av programmeringsprojekt. Med OOP skapar man gränssnitt i sina klasser som underlättar för andra att använda sig av en klass.
Tja, jag orkar inte mer, men det kanske ljusnade lite nu iaf