Objective-C: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Riga 213:
Objective C è stato esteso da [[NeXT]] per introdurre il concetto di [[ereditarietà multipla (informatica)|ereditarietà multipla]] di specifica, ma non di implementazione, attraverso l'uso dei protocolli. Questo è un [[design pattern|pattern]] ottenibile sia mediante una forma di ereditarietà multipla da una [[classe astratta]] (come in C++), sia (come più comunemente in Java o [[C sharp|C#]]) mediante l'uso di un'[[interfaccia (informatica)#Interfaccia nella programmazione orientata agli oggetti|interfaccia]] (anche in c++ ci sono le interfacce, anche se non esiste una keyword esplicita per dichiararle). Objective C fa uso di entrambi i protocolli, chiamati ''protocolli informali'' e di protocolli imposti dal compilatore detti ''protocolli formali.
 
Un protocollo informale è una lista di [[metodo (informatica)|metodi]] che unapossono classeessere puòimplementati implementareda una classe. Viene specificato nella documentazione, dato che non è presente esplicitamente nel linguaggio. I protocolli informali spesso includono metodi opzionali, dove l'implementazione del metodo può cambiare il comportamento della classe.
Ad esempio una classe con un [[campo (informatica)|campo]] di testo potrebbe avere un "delegato" che dovrebbe implementare un protocollo informale con un metodo opzionale di [[autocompletamento]]. Il campo di testo scopre se il delegato implementa o meno il metodo (attraverso il meccanismo della [[riflessione (informatica)|riflessione]]), e, in caso positivo, lo chiama per supportare l'autocompletamento.