11.
Objektorienterad Programmering
1. OOP - ObjektOrienterad Programmering.
1. OOP - Objektorienterad Programmering.
Från början hade man inget programmeringsspråk. Man matade in maskininstruktioner bit för bit, byte för byte, från programmets början och framåt. Uppstod det ett behov av att styra bearbetningen villkorligt, tog man beslut om att eventuellt hoppa, framåt eller bakåt i minnet. Man tänkte i samma struktur som minnets logiska adresseringsstruktur suggererade: linjärt.
När vi i dag ser tillbaka på detta, och ser hur man ibland fortsatt tänka linjärt även med moderna programmeringsspråk som COBOL, BASIC, PASCAL och C, trots att de har möjlighet till procedurorienterat tänkande, så kallar man detta för ‘linjär programmering’.
Så småningom kom en man vid namn Jackson (tror jag det var) på att definiera regler för hur man ska tänka när man strukturerar om sina program, Jacksons Structured Programming. Detta fungerade alldeles utmärkt på existerande språk.
JSP är mallen för strukturerad programmering. Eftersom tonvikten ligger vid att dela upp programmet i procedurer (eller funktioner) säger man att metoden är procedurorienterad.
Man talade om att man skulle finna problemets struktur, men ofta var problemet så komplext att man mer eller mindre måste anpassa problemet efter strukturen. Detta medförde ofta effektivare kontorsrutiner, när man tvingades revidera dem enligt de nya tankarna.
Nu är dock problemen mycket komplexa (grafik etc.) och man vinner inget på att förenkla dem. I stället grundar man struktur efter data.
C++ anpassar språket till problemet. Man konstruerar dataformer enligt problemet. Dessa dataformer innehåller såväl strukturen för data som den programkod som arbetar med data. Detta är som en utökning av egendefinierade strukturtyper i C.
En sådan dataform kallas i C++ klass (eng. class). Precis som man deklarerar en variabel av en vis strukturtyp, deklarerar man ett objekt av en viss klass. Objektet innehåller det aktuella data tillsammans med programkoden. Man kan sedan definiera flera objekt från samma klass.
En struktur kan innehålla andra strukturer såväl som vanliga datatyper. När man programmerar enligt OOP kan man också baka in befintliga klasser i nya, men man kan dessutom låta en klass ärva egenskaper av en annan, och samtidigt lägga till sina egna skräddarsydda funktioner och datadeklarationer.
OOP ger dig möjlighet att komma åt problemets struktur, medan man har kvar fördelarna från C - ett kraftfullt, välstrukturerat språk där man har lika full kontroll som när man programmerar i assembler.
Vill man senare lära sig att programmera i Windowsmiljö kommer man att finna att Windows är starkt OOP-anpassat. Dock har man inte riktigt samma kontroll över hårdvara och operativsystem, Microsoft har förbehållit sig rätten att sätta normer för hur ett Windowsprogram ska se ut och fungera, och har t.o.m. försvårat alltför vilda avsteg från ‘sin’ standard.
Detta är inte helt av ondo, vilket många anser. Tvärtom är det mycket bra för en användare att ‘en gång för alla’ lära sig att använda Windowsprogram, och sedan bara koncentrera sig på varje nytt programs problemorienterade specialiteter.
En kommission ställde upp regler för hur OOP ska fungera. Ett språk som heter Simula var det första, och det konstruerades just för OOP. Programmerigsspråket C däremot, klarade inte kraven.
Allteftersom kraven på moderna datorprogram ökar krävs en allt bättre strukturering av dem. Man strukturerade enligt JSP och kom långt på vägen. Nu kunde man skriva större program utan att tappa överblicken, och om man använde vettiga namn på sina variabler och funktioner samt skrev ordentliga kommentarer kunde de underhållas länge.
Nu är dock kraven så stora att vi behöver gå ett steg längre. Man hanterar grafik, mus, ljud, fonter m.m. förutom allt det som fanns tidigare.
Nu gäller objektorienterad programmering. Och för att kunna använda objekt-orienterad programmering ställs, som vi sett, även större krav på programmeringsspråken.
C dög inte längre. Språket byggdes ut och förbättrades tills kraven kunde mötas. Men nu hade man ett nästan nytt språk. Ett nytt språk måste ha ett nytt namn, men C var ju fortfarande på det hela taget en delmängd av det nya språket, så det måste framgå av namnet att det fortfarande är i grund och botten programmeringsspråket C.
Man har ökat språkets värde. Nu måste man öka namnets. I C ökar man värdet på en variabel genom att skriva ++ efter variabelns namn. Då kan vi ju faktiskt öka värdet av namnet C genom att skriva C++!