Objective-C

linguaggio di programmazione

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