Overzicht
Object-georiënteerd programmeren (OOP) is een programmeerparadigma dat is gebaseerd op het concept van “objecten”, die gegevens kunnen bevatten, in de vorm van velden, vaak attributen genoemd; en code, in de vorm van procedures, vaak methoden genoemd. Een kenmerk van objecten is dat de procedures van een object toegang kunnen hebben tot de gegevensvelden van het object waarmee zij geassocieerd zijn, en deze vaak kunnen wijzigen (objecten hebben een notie van “dit” of “zelf”). Er is een aanzienlijke verscheidenheid aan OOP-talen, maar de meest populaire zijn klassegebaseerd, wat betekent dat objecten instanties van klassen zijn, die gewoonlijk ook hun type bepalen.
Discussie
Tot nu toe hebben we ons gericht op procedureel programmeren. Gebaseerd op gestructureerd programmeren, bevatten procedures (routines, subroutines, of functies) een reeks uit te voeren rekenkundige stappen. Een gegeven procedure kan op elk moment tijdens de uitvoering van een programma worden aangeroepen, ook door andere procedures of zichzelf. De nadruk van procedureel programmeren ligt op het opsplitsen van een programmeertaak in een verzameling variabelen, gegevensstructuren en subroutines. Kleine programma’s en scripts zijn meestal gemakkelijker te ontwikkelen met behulp van een eenvoudige procedurele aanpak.
Object-georiënteerd programmeren splitst in plaats daarvan een programmeertaak op in objecten die gedrag (methoden) en gegevens (leden of attributen) blootleggen met behulp van interfaces. Het belangrijkste onderscheid is dat bij procedureel programmeren procedures worden gebruikt om afzonderlijke gegevensstructuren te bewerken, terwijl bij object-georiënteerd programmeren beide worden gebundeld, zodat een “object”, dat een instantie van een klasse is, op zijn “eigen” gegevensstructuur werkt. Grotere programma’s hebben baat bij de betere isolatie van code en gegevens en het hergebruik dat door een object-georiënteerde aanpak wordt geboden.
Objecten en klassen worden vaak ontworpen om reële objecten voor te stellen. Beschouw een deur als een voorbeeld van een real-world object. De meeste deuren hebben een beperkte functionaliteit. Zij kunnen worden geopend en gesloten, en vergrendeld en ontgrendeld. In procedureel programmeren zouden we functies kunnen ontwerpen om een deur te openen, te sluiten, te vergrendelen en te ontgrendelen, zoals:
Procedural Programming - FunctionsOpenDoor(door)CloseDoor(door)LockDoor(door)UnlockDoor(door)
Object-georiënteerd programmeren combineert code en data, zodat, in plaats van afzonderlijke functies op deuren te laten werken, we deuren ontwerpen die methoden hebben die op zichzelf kunnen werken. Methoden vertegenwoordigen iets dat het object kan doen, en worden meestal gedefinieerd met behulp van werkwoorden. Object-georiënteerde deur pseudocode zou er zo uit kunnen zien:
Object-Oriented Programming - Methodsdoor.Open()door.Close()door.Lock()door.Unlock()
Objecten kunnen ook attributen hebben, iets wat het object is of heeft, en worden meestal gedefinieerd met behulp van zelfstandige naamwoorden of bijvoeglijke naamwoorden. Deur attributen zouden kunnen zijn:
Object-Oriented Programming - Attributesdoor.Heightdoor.Widthdoor.Colordoor.Closeddoor.Locked
Wanneer we code schrijven om een generieke deur te definiëren, zouden we een deurklasse maken. De deurklasse bevat alle methoden die een deur kan uitvoeren en alle attributen die een deur kan hebben. We zouden dan instanties van de klasse (objecten) maken om specifieke deuren voor te stellen, zoals een voordeur, achterdeur of kamerdeur van een huis, of een linker- en rechterdeur van een auto.
Key Terms
attribute Een specificatie die een eigenschap van een object definieert. class Een uitbreidbaar programma-code-template voor het maken van objecten, het leveren van initiële waarden voor de toestand (lidvariabelen) en implementaties van gedrag (lidfuncties of methoden). instantie Een concrete verschijning van een object. methode Een specificatie die een procedure of gedrag van een object definieert. object Een bepaalde instantie van een klasse, waarbij het object een combinatie van variabelen, functies en gegevensstructuren kan zijn. this, self, of Me Sleutelwoorden die in sommige computerprogrammeertalen worden gebruikt om te verwijzen naar het object, de klasse, of een andere entiteit waar de momenteel lopende code deel van uitmaakt.