Objective-C: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Nessun oggetto della modifica
OMT5500 (discussione | contributi)
Nessun oggetto della modifica
Riga 18:
Le estensioni a oggetti con cui Objective C arricchisce il modello semantico del C sono ispirate al linguaggio [[Smalltalk]], in particolar modo alla [[comunicazione a scambio di messaggi|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|categorie]] e strumenti legati alla [[riflessione (informatica)|riflessione]].
 
La sua diffusione è principalmente legata al [[framework]] [[OpenStep]] di [[NeXT]] e al suo successore [[Cocoa (informaticasoftware)|Cocoa]], presente nel sistema operativo [[macOS]] di [[Apple]]. A [[NeXT]] si deve il supporto dell'Objective C nel compilatore [[gNU Compiler Collection|gcc]] di [[GNU]].
 
== Storia ==
Riga 40:
 
=== Apple ===
Dopo aver acquisito NeXT nel [[1996]], Apple ha usato OpenStep come base per il suo nuovo [[sistema operativo]] [[macOS]]. Questo le consentì di includere l'Objective C di NeXT ed il suo sistema di sviluppo [[Project Builder]] (in seguito rinominato [[Xcode]]). La maggior parte delle attuali [[Application programming interface|API]] di Apple ([[Cocoa (informaticasoftware)|API Cocoa]]) sono basate sugli oggetti d'interfaccia di OpenStep e costituiscono il più significativo ambiente di sviluppo basato su Objective C attualmente usato.
 
== Sviluppi ==
=== Oggi ===
Oggi Objective C è spesso usato in tandem con librerie fisse di oggetti standard (spesso denominati "kit" o "[[framework]]") come [[Cocoa (informaticasoftware)|Cocoa]] o [[GNUstep]]. Queste librerie sono spesso fornite assieme al [[sistema operativo]]: le librerie GNUstep sono parte della collezione di software GNU e a volte presenti in alcune distribuzioni Gnu/Linux e Cocoa di [[MacOS]]. Il programmatore non è obbligato ad ereditare le funzionalità della classe base esistente (NSObject). Objective C permette la dichiarazione di nuove classi base che non ereditino nessuna delle funzionalità preesistenti. Originariamente gli ambienti di programmazione basati su Objective C offrivano la classe Object con alcune funzionalità di base, ma con l'introduzione di [[OpenStep]], [[NeXT]] ha creato una nuova classe base chiamata NSObject che offriva caratteristiche aggiuntive oltre a quelle di Object. Quasi tutte le classi di Cocoa ereditano da NSObject.
 
La rinominazione non è servita solo per differenziare i nuovi comportamenti delle classi nel nuovo framework, ma ha consentito al codice che ancora usava la classe Object di coesistere (sebbene con alcune limitazioni) nello stesso [[run-time system]]. Nello stesso tempo l'introduzione del prefisso di due lettere è diventato una sorta di surrogato alla mancanza in Objective C degli spacename (o Namespaces che dir si voglia). Usare un prefisso per creare un identificatore di package informale è diventata un'abitudine standard nella comunità di programmatori Objective C.