Objective-C
L'Objective C è un linguaggio di programmazione orientato agli oggetti, sviluppato da Brad Cox alla metà degli anni '80 presso la Stepstone Corporation. Come lo stesso nome suggerisce, l'Objective C è un'estensione a oggetti del linguaggio C. Esso mantiene la completa compatibilità col C (a differenza di quanto avviene, per esempio, nel caso del C++). Tra l'altro, anche a causa di questa compatibilità, Objective C non è dotato di forte tipizzazione (caratteristica che invece esibiscono, tra gli altri, sia C++ che Java).
Le estensioni a oggetti con cui Objective C arricchisce il modello semantico del C sono ispirate al linguaggio Smalltalk, in particolar modo alla gestione dei messaggi. Le caratteristiche del runtime system collocano l'Objective C tra i linguaggi ad oggetti dinamici. Sono supportati tutti gli elementi classici della programmazione a oggetti; ma non mancano concetti innovativi anche su questo fronte, come il meccanismo delle categorie e strumenti legati alla riflessione.
La sua diffusione è principalmente legata al framework OpenStep di NeXT e al suo successore Cocoa, presente nel sistema operativo Mac OS X di Apple. A NeXT si deve il supporto dell'Objective C nel compilatore gcc di GNU.
Esempi di codice
Interfaccia di una classe
// file NomeClasse.h #import "NomeSuperclasse.h" @interface NomeClasse : NomeSuperclasse { // variabili d'istanza float v1; int v2; BOOL v3; } // dichiarazione metodi della classe +(id)allocInit; // dichiarazione metodi delle istanze -(id)init; -(void)logTo:(FILE*)destinazione; @end
Implementazione di una classe
// file NomeClasse.m #import <stdio.h> #import "NomeClasse.h" @implementation NomeClasse +(id)allocInit { return [[NomeClasse alloc] init]; } -(id)init { self=[super init]; v1=0; v2=0; v3=YES; return self; } -(void)logTo:(FILE*)destinazione { sprintf(destinazione,"v1=%f v2=%d v3=%s\n", v1, v2, v3?"YES":"NO"); } @end