Objective-C
Objective-C | ||||
---|---|---|---|---|
Paradigma | objectgeoriënteerd | |||
Verschenen | 1986 | |||
Ontworpen door | Brad Cox en Tom Love | |||
Ontwikkeld door | Apple | |||
Typesysteem | statisch, zwak, duck-typing | |||
Implementaties | GCC, Apple | |||
Beïnvloed door | Smalltalk, C | |||
Invloed op | Java, TOM | |||
Website | https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/ProgrammingWithObjectiveC/Introduction/Introduction.html | |||
|
Objective-C is een programmeertaal die een uitbreiding is van de programmeertaal C. Ze werd in de jaren 80 van de twintigste eeuw ontwikkeld door Brad J. Cox, en heeft qua syntaxis wel wat weg van Smalltalk. Tegenwoordig wordt de taal het meest gebruikt in Mac OS X (voor het Cocoa-framework), iOS en GNUstep, maar bijvoorbeeld ook in NeXTSTEP, van NeXT Computer, Inc.
Kenmerken
[bewerken | brontekst bewerken]Objective-C is, in tegenstelling tot C++, een superset van C, wat inhoudt dat elk correct C-programma ook een correct Objective-C-programma is. Het voegt echter (net als C++) de mogelijkheid toe tot object-georiënteerd programmeren, door de toevoeging van klassen. Aan een instantie van een klasse kan een bericht (message) gestuurd worden, die een methode (een stuk code) aanroept, op de volgende manier:
NSString *string = @"Objective-C"; NSUInteger l = [string length];
In de eerste regel wordt object van het type NSString gedefinieerd met de inhoud "Objective-C". In de tweede wordt een bericht "length" naar dit object gestuurd. Dit heeft tot gevolg dat de lengte van de string teruggegeven wordt. Het is ook mogelijk berichten met parameters te sturen:
unichar ch = [string characterAtIndex:4];
Verder voegt Objective-C 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.