Översikt
Objektorienterad programmering (OOP) är ett programmeringsparadigm som bygger på begreppet ”objekt”, som kan innehålla data, i form av fält, ofta kända som attribut, och kod, i form av procedurer, ofta kända som metoder. En egenskap hos objekt är att ett objekts procedurer kan få tillgång till och ofta ändra datafälten i det objekt som de är associerade med (objekt har begreppet ”this” eller ”self”). Det finns en betydande mångfald av OOP-språk, men de mest populära är klassbaserade, vilket innebär att objekt är instanser av klasser, som vanligtvis också bestämmer deras typ.
Diskussion
Hittills har vi fokuserat på procedurell programmering. Baserat på strukturerad programmering innehåller procedurer (rutiner, underrutiner eller funktioner) en serie beräkningssteg som ska utföras. En given procedur kan anropas när som helst under ett programs utförande, bland annat av andra procedurer eller av sig själv. Fokus för procedurprogrammering är att dela upp en programmeringsuppgift i en samling variabler, datastrukturer och underrutiner. Små program och skript tenderar att vara lättare att utveckla med hjälp av ett enkelt procedurellt tillvägagångssätt.
Objektsorienterad programmering bryter istället ner en programmeringsuppgift i objekt som avslöjar beteende (metoder) och data (medlemmar eller attribut) med hjälp av gränssnitt. Den viktigaste skillnaden är att medan procedurell programmering använder procedurer för att arbeta med separata datastrukturer, så kombinerar objektorienterad programmering de två tillsammans, så att ett ”objekt”, som är en instans av en klass, arbetar med sin ”egen” datastruktur. Större program drar nytta av bättre isolering och återanvändning av kod och data som tillhandahålls av ett objektorienterat tillvägagångssätt.
Objekt och klasser är ofta utformade för att representera verkliga objekt. Tänk på en dörr som ett exempel på ett verkligt objekt. De flesta dörrar har begränsad funktionalitet. De kan öppnas och stängas samt låsas och låsas upp. I procedurell programmering kan vi utforma funktioner för att öppna, stänga, låsa och låsa upp en dörr, till exempel:
Procedural Programming - FunctionsOpenDoor(door)CloseDoor(door)LockDoor(door)UnlockDoor(door)
Objektsorienterad programmering kombinerar kod och data, så i stället för att ha separata funktioner som agerar på dörrar, utformar vi dörrar som har metoder som kan agera på sig själva. Metoder representerar något som objektet kan göra och definieras vanligtvis med hjälp av verb. Pseudokod för objektorienterade dörrar kan se ut så här:
Object-Oriented Programming - Methodsdoor.Open()door.Close()door.Lock()door.Unlock()
Objekt kan också ha attribut, något som objektet är eller har, och definieras vanligtvis med hjälp av substantiv eller adjektiv. Dörrattribut kan vara:
Object-Oriented Programming - Attributesdoor.Heightdoor.Widthdoor.Colordoor.Closeddoor.Locked
När vi skriver kod för att definiera en generisk dörr skapar vi en dörrklass. Dörrklassen skulle innehålla alla metoder som en dörr kan utföra och alla attribut som en dörr kan ha. Vi skulle sedan skapa instanser av klassen (objekt) för att representera specifika dörrar, t.ex. en ytterdörr, en bakdörr eller en rumsdörr på ett hus, eller en vänsterdörr och en högerdörr på en bil.
Nyckelbegrepp
attribut En specifikation som definierar en egenskap hos ett objekt. klass En förlängningsbar programkodsmall för att skapa objekt, som tillhandahåller initiala värden för tillstånd (medlemsvariabler) och implementeringar av beteende (medlemsfunktioner eller metoder). instance :En konkret förekomst av ett objekt. method En specifikation som definierar en procedur eller ett beteende hos ett objekt. object En särskild instans av en klass där objektet kan vara en kombination av variabler, funktioner och datastrukturer. this, self eller Me Nyckelord som används i vissa datorprogrammeringsspråk för att hänvisa till objektet, klassen eller en annan enhet som den kod som körs för tillfället ingår i.