Meningen med objektorienterad (OO) programmering/programspråk är att återanvända kod på systematiskt sätt till flera olika objekt.
Själv lärde jag mig det via ett mudd (textbaserad mmorpg) som var skrivet i en OO-variant av enklare c-kod. Där var det ganska enkelt att lära sig saker som klasser, objekt, arv och hur de kunde användas.
Exempel: Ta två troll (Albert och Ben) som väntar på en väg.
Troll skulle då vara en klass, dvs de skulle ha gemensamma funktioner och egenskaper som alla troll kan ha. Vandra,plocka upp saker, slåss eller fly.
Albert och Ben skulle vara två olika objekt av klassen "troll". De kanske har lite olika storlek eller utrustning till att börja med.
Vägen är ett annat objekt, av klassen "plats".
Konstruktörer är funktioner som skapar nya objekt av en klass och ställer in de egenskaper som gäller just det objektet. Konstruktören för klassen "troll" ställer in storlek, färg och namn för nya troll.
Det fina med klasser i OOP är att man kan låta en klass ärva egenskaper/funktioner från en annan klass.
Säg att vi vill stoppa in draken Göran också som dessutom kan spruta eld.
En ny klass "drake" som vi enklast låter ärva alla funktioner/egenskaper/förmågor från klassen "troll", men vi lägger till "spruta eld" som stridsförmåga. Vi definierar om storlek och utseende också så att drakarna inte ser ut som eldsprutande troll.
Nu är den här indelningen klassindelningen kanske inte den bästa (minst sagt) men den funkar. Vill vi lägga till nya förmågor för alla våra kära monster så lägger vi till de förmågorna i basklassen "troll". Vissla kanske ska vara en ny förmåga? Då behöver bara ändra på ett ställe, i klassen troll. En mer genomtänkt klassindelning vore att ha klassen "varelse" för allt som kan röra sig/slåss och låta klasserna "drake" och "troll" ärva därifrån.