Talen en automaten/2011-12/producten/ObjectiveC

Uit Werkplaats
Ga naar: navigatie, zoeken

Page Break




Algolfrag.jpg

Talen en automaten

Erik Barendsen


 © comments



Objective-C

Abdul Abdi



Talen en automaten 2011-12



14:45 B






Abdul Abdi
 e-mail 

cursuspagina

Abdul Abdi.jpg

Page Break





Beschrijving

Objective-C is een superset van de programmeertaal C. Hij is ontwikkeld door Brad J. Cox in de jaren 80 van de twintigste eeuw, en heeft qua syntaxis wel wat weg van Smalltalk. Tegenwoordig wordt de taal het meest gebruikt in Mac OS X (voor het Cocoa-framework) enGNUstep, maar bijvoorbeeld ook in NeXTSTEP, van NeXT Computer, Inc.

Objective-C is, in tegenstelling tot C++, een superset van C, wat inhoudt dat alles wat in C voorkomt ook geldig is in Objective-C. Het voegt echter (net als C++) de mogelijkheid toe tot object-georiënteerd programmeren, door de toevoeging van klassen. Een (instantie van een) klasse kan een zogeheten message gestuurd worden, die een methode (een stuk code) aanroept, op de volgende manier:

NSObject *anObject;
anObject = [NSObject alloc];
[anObject init];

In de eerste regel wordt de variabele "anObject" van het type NSObject gedeclareerd. Vervolgens wordt er geheugen voor "anObject" gereserveerd (alloc), tenslotte initialiseert de derde regel dit object. Messages kunnen dus gestuurd worden naar zowel klassen als instanties daarvan. Overigens wordt dit specifieke voorbeeld vaak gecombineerd tot

NSObject *anObject = [[NSObject alloc] init];

Verder voegt het ook een nieuw soort pointer toe, die als volgt gedeclareerd wordt:

id var;

Hierdoor is tijdens het schrijven en compileren van de broncode niet bekend naar wat voor gegevenstype de pointer wijst; dit wordt beslist tijdens het uitvoeren van het programma, door de runtime-environment.

(Bron: http://nl.wikipedia.org/wiki/Objective-C )

Regulier?

Een definitie voor de "reguliere taal" is dat het kan worden verwerkt in een deterministische eindige automaat, of uitgedrukt als een ware reguliere expressie.

Aangezien zowel C, Objective-C en C + + gebruik maken nesten van braces, brackets en parentheses, zijn zij geen reguliere talen. Wanneer haakjes namelijk voorkomen in een taal, betekent dit dat de automaat die eruit gecreeerd kan worden een stack moet kunnen maken, deze optie is niet aanwezig bij een DFA.

Contextvrij?