Objectgeoriënteerde programmering

Object-georiënteerd programmeren (OOP) is een manier om computerprogramma's te schrijven die het idee van "objecten" gebruikt om gegevens en methoden weer te geven. Meestal waren computerprogramma's slechts een lijst met instructies voor de computer, die de computer vertellen om bepaalde dingen op een bepaalde manier te doen, wat procedurele programmering wordt genoemd. Bij objectgeoriënteerd programmeren maken computerprogramma's echter gebruik van objecten die met elkaar praten en om de gegevens in die objecten te veranderen, om te werken op een manier die de gebruiker wil. Ook helpt het, door de manier waarop object-georiënteerd programmeren is ontworpen, de ontwikkelaar door toe te staan dat code gemakkelijk hergebruikt kan worden door andere delen van het programma of zelfs door andere mensen.

De meeste programmeertalen zijn een mix van verschillende soorten manieren om computerprogramma's te schrijven. Zo maakt Python het bijvoorbeeld mogelijk om computerprogramma's zowel in objectgeoriënteerde programmering als in procedurele programmering te schrijven. Er zijn veel programmeertalen die het mogelijk maken om computerprogramma's in OOP te schrijven, sommige van deze programmeertalen zijn dat bijvoorbeeld: C++, Java, Ruby, Perl, Emarald, Sapphire, PHP, Python, enz.

Kenmerken

Het belangrijkste idee van objectgeoriënteerd programmeren is dat alles een object is. Het object kan echter van verschillende types zijn:

  • Variabelen kunnen informatie (of gegevens) van verschillende typen bevatten die door de programmeertaal worden ondersteund. Voorbeelden hiervan zijn het gehele gegevenstype en de lijsten met de gegevensstructuur. Variabelen is een idee dat al beschikbaar is vanuit procedurele programmeertalen. In de objectgeoriënteerde programmering worden variabelen voornamelijk attributen genoemd.
  • Procedures (ook wel bekend als functies, methoden of routines) zijn een lijst met instructies die de computer vertellen om invoer te nemen, enkele berekeningen te doen of gegevens te wijzigen, en de uitvoer terug te sturen naar de gebruiker. Procedures is ook een idee dat al beschikbaar is vanuit procedurele programmeertalen. In de objectgeoriënteerde programmering zijn procedures vooral bekend als methoden.
  • Klassen zijn een verzameling van verschillende variabelen en procedures. Klassen praten meestal met elkaar om wijzigingen in de gegevens aan te brengen om te werken op een manier die de gebruiker wil.

Objecten is een term die wordt gebruikt om te verwijzen naar instanties van klassen.

Voorbeelden

In de onderstaande voorbeelden creëren we een klasse die Menselijk wordt genoemd. Deze klasse bevat de attributen naam (voor de naam van de persoon) en vriend (voor de naam van de vriend). Elk van de methoden in de Human class bevat een lijst met instructies die gebruik maken van zowel de naam als de vriendschapsattributen.

Python

Deze code staat in Python.

klasse Mens(object): def __init__(zelf, naam, vriend=niet): zelf. naam = naam zelf. vriend = vriend def zeg_naam(zelf): druk("Mijn naam is "+zelf. naam) def zeg_goodnight(self): als zelf. vriend is Geen: druk("Goedenacht niemand.") anders: druk("Goedenacht "+zelf. vriend."). naam) # Creëer een nieuw Menselijk object met de naam "Stephen" stephen = Menselijk("Stephen") # Creëer een nieuw Menselijk object met de naam "Joe" en stephen als een vriend joe = Menselijk("Joe", stephen) stephen. say_name() # Laat 'Mijn naam is Stephen' stiefen zien. say_goodnight() # Laat 'Good night nobody.' joe. say_name() # Laat 'My name is Joe' joe. say_goodnight() # Laat 'Good night Stephen' zien.

Java

Deze code is in Java.

De menselijke klasse

klasse Mens { privé String name = "unnamed"; // de naam van deze Mens privé Menselijke vriend = null; // de vriend van de Mens // Deze methode creëert een nieuw Menselijk object wanneer hij de naam en vriend openbaar Mens (String name, Human friend) krijgt { deze. naam = naam; deze. vriend = vriend;      } // Deze methode creëert ook een nieuw Menselijk object wanneer alleen de naam publiek Mens(String naam) wordt gegeven { deze. naam = naam; deze. vriend = nul;      } // Deze methode creëert een nieuw Menselijk object wanneer niet zowel de naam als de vriend publiek Mens() wordt gegeven { dit. naam = "ongenoemd"; dit. vriend = ongeldig;      } publiek nietig zegNaam() { Systeem. uit. println("Mijn naam is " + deze. naam); } publiek void sayGoodnight() { als (vriend ==nietig) { Systeem. uit. println("Goedenacht niemand.");          } anders { Systeem. uit. println("Goedenacht" + vriend. naam);          } } }

Een methode om te praten met de menselijke klasse boven

class Main { publieke statische nietige hoofd(String[] args) { // Creëer een nieuw Menselijk object stiefen met naam "Stephen" Menselijke stiefen = nieuwe Mens ("Stephen"); // Creëer een nieuw Menselijk object joe met naam "Joe" en stiefen als vriend Menselijke joe = nieuwe Menselijke ("Joe", stiefen); stiefen. sayName(); // Toont 'Mijn naam is Stephen' stiefen. sayGoodnight(); // Toont 'Good night nobody.' joe. sayName(); // Toont 'My name is Joe' joe. sayGoodnight(); // Toont 'Good night Stephen'      } }

Kritiek

Hoewel object georiënteerde programmering populair is, zijn er veel mensen die denken dat het slecht is en het bekritiseren.

  • Luca Cardelli schreef een artikel met de titel 'Bad Engineering Properties of Object-Oriented Languages'.
  • Richard Stallman schreef in 1995: "Het toevoegen van OOP aan Emacs is niet duidelijk een verbetering; ik gebruikte OOP bij het werken aan de Lisp Machine raamsystemen, en ik ben het niet eens met de gebruikelijke opvatting dat het een superieure manier van programmeren is".
  • Een studie van Potok et al. vertelt ons dat er zeer weinig verschil in productiviteit is tussen OOP en procedurele benaderingen.
  • Christopher J. Date zei dat het vergelijken van OOP met andere dingen, vooral hoe OOP en het andere ding gerelateerd zijn, moeilijk is omdat mensen het niet eens zijn over de betekenis van OOP.
  • Alexander Stepanov stelde voor dat OOP een standpunt geeft dat beperkt is tot wiskunde, en noemde het, "bijna net zo veel van een bedrog als Kunstmatige Intelligentie".
  • Paul Graham, een succesvolle internetverkoper en programmeur, heeft gesuggereerd dat het doel van OOP is om te fungeren als een kudde-mechanisme dat de gemiddelde programmeurs in gemiddelde organisaties ervan weerhoudt om "te veel schade aan te richten". Dit vertraagt ook snellere, betere programmeurs die weten hoe ze de dingen op een krachtigere en compactere manier moeten doen. [1]

AlegsaOnline.com - 2020 / 2021 - License CC3