Overblik
Objektorienteret programmering (OOP) er et programmeringsparadigme baseret på begrebet “objekter”, som kan indeholde data i form af felter, ofte kendt som attributter, og kode i form af procedurer, ofte kendt som metoder. En egenskab ved objekter er, at et objekts procedurer kan få adgang til og ofte ændre datafelterne i det objekt, som de er knyttet til (objekter har begrebet “this” eller “self”). Der findes en betydelig mangfoldighed af OOP-sprog, men de mest populære er klassebaserede, hvilket betyder, at objekter er instanser af klasser, som typisk også bestemmer deres type.
Diskussion
Der er hidtil fokuseret på procedurel programmering. Baseret på struktureret programmering indeholder procedurer (rutiner, underrutiner eller funktioner) en række beregningstrin, der skal udføres. En given procedure kan blive kaldt på et hvilket som helst tidspunkt i løbet af et programs udførelse, herunder af andre procedurer eller af sig selv. Procedurel programmering fokuserer på at opdele en programmeringsopgave i en samling af variabler, datastrukturer og underrutiner. Små programmer og scripts har tendens til at være nemmere at udvikle ved hjælp af en simpel proceduremæssig tilgang.
Objektorienteret programmering opdeler i stedet en programmeringsopgave i objekter, der eksponerer adfærd (metoder) og data (medlemmer eller attributter) ved hjælp af grænseflader. Den vigtigste forskel er, at mens procedurel programmering anvender procedurer til at operere på separate datastrukturer, så samler objektorienteret programmering de to dele sammen, så et “objekt”, som er en instans af en klasse, opererer på sin “egen” datastruktur. Større programmer nyder godt af den bedre kode- og dataisolering og genbrug, som en objektorienteret tilgang giver.
Objekter og klasser er ofte designet til at repræsentere virkelige objekter i den virkelige verden. Tag en dør som et eksempel på et objekt fra den virkelige verden. De fleste døre har en begrænset funktionalitet. De kan åbnes og lukkes, og de kan låses og låses op. I procedurel programmering kan vi måske designe funktioner til at åbne, lukke, låse og låse en dør op, som f.eks.:
Procedural Programming - FunctionsOpenDoor(door)CloseDoor(door)LockDoor(door)UnlockDoor(door)
Objektorienteret programmering kombinerer kode og data, så i stedet for at have separate funktioner, der virker på døre, designer vi døre, der har metoder, som kan virke på sig selv. Metoder repræsenterer noget, som objektet kan gøre, og de er typisk defineret ved hjælp af verber. Pseudokode til objektorienterede døre kan se således ud:
Object-Oriented Programming - Methodsdoor.Open()door.Close()door.Lock()door.Unlock()
Objekter kan også have attributter, noget objektet er eller har, og de defineres typisk ved hjælp af navneord eller adjektiver. Dørattributter kan omfatte:
Object-Oriented Programming - Attributesdoor.Heightdoor.Widthdoor.Colordoor.Closeddoor.Locked
Når vi skriver kode til at definere en generisk dør, vil vi oprette en dørklasse. Dørklassen vil indeholde alle de metoder, som en dør kan udføre, og alle de attributter, som en dør kan have. Vi ville derefter oprette instanser af klassen (objekter) for at repræsentere specifikke døre, f.eks. en fordør, bagdør eller værelsesdør på et hus eller en venstre dør og en højre dør på en bil.
Nøglebegreber
attribut En specifikation, der definerer en egenskab ved et objekt. class En udvidelig programkode-skabelon til oprettelse af objekter, der giver indledende værdier for tilstand (medlemsvariabler) og implementeringer af adfærd (medlemsfunktioner eller metoder). instance :En konkret forekomst af et objekt. method En specifikation, der definerer en procedure eller adfærd for et objekt. object En bestemt forekomst af en klasse, hvor objektet kan være en kombination af variabler, funktioner og datastrukturer. this, self eller Me Nøgleord, der bruges i nogle computerprogrammeringssprog til at henvise til det objekt, den klasse eller anden enhed, som den aktuelt kørende kode er en del af.