L’uscita sul mercato dell’iPhone ha dato uno scossone al mercato della telefonia mobile, questo è innegabile, ma anche sotto il profilo della programmazione ha dato linfa vitale ad un mondo di aspiranti sviluppatori desiderosi di confrontarsi con la nuova architettura della macchina di Cupertino. D’altronde è veramente semplice iniziare a fare qualcosa per iPhone, dopotutto lo strumento di sviluppo è gratuito e disponibile a chiunque abbia un Mac (XCode) e, cosa ancora più importante, c’è un fiorire di guide che accompagnano passo-passo l’utente a creare applicazioni.
Spesso, però, si comincia a seguire una guida ben fatta e si arriva ad un risultato appagante in breve tempo senza rendersi conto di come ci si è arrivati o di quello che c’è dietro. Molte guide danno per scontata la conoscenza del linguaggio di programmazione che si utilizza per sviluppare su iPhone (l’Objective-C), e spesso l’abbiamo fatto anche noi, ma la realtà è che chi si avvicina al mondo della programmazione per Mac o iPhone non ha mai neanche visto o sentito parlare di Objective-C o magari ha sempre programmato in un altro linguaggio orientato agli oggetti o addirittura in un linguaggio procedurale (non spaventatevi, sono tutti termini che spiegheremo dopo). Per questi motivi abbiamo deciso di scrivere una serie di guide dedicate all’Objective-C in modo da dare gli strumenti adatti per capire quello che si sta facendo mentre si segue un tutorial.
Con le Guide Teoriche per la Programmazione by iSpazio, non abbiamo la pretesa di insegnare a programmare, ma almeno di suscitare nel lettore la voglia di documentarsi e cercare di capire sempre più nel dettaglio questo fantastico mondo, soprattutto in relazione ad una migliore comprensione dei tutorial che trovate nella sezione SDK e che riguardano la creazione di semplici applicazioni.
Si comincia
Sapete o avete sentito dire che l’Objective-C è un linguaggio di programmazione ad oggetti? Vediamo cosa significa:
Semplificando molto potremmo dire che i linguaggi di programmazione più utilizzati si dividono in due categorie (quasi fazioni a volte) : la categoria dei linguaggi PROCEDURALI e la categoria dei linguaggi AD OGGETTI conosciuti anche come OBJECT ORIENTED oppure OO.
Nella prima categoria ricade per esempio il famoso C mentre nella seconda il celeberrimo C++, la cosa importante da capire è che le due categorie non identificano regole diverse per linguaggi diversi, bensì modi di pensare e di approccio al programma totalmente diversi:
- I linguaggi procedurali, come il C, si occupano, come tutti i linguaggi di programmazione, di svolgere dei compiti e lo fanno tramite FUNZIONI che agiscono su DATI. Questi dati sono memorizzati in VARIABILI. Le funzioni quindi sono il modo che il programma ha per agire sulle variabili e quindi sui dati e se i dati sono di diverso tipo le funzioni che li tratteranno saranno distinte e dovranno sapere su quali dati operare.
- I linguaggi ad oggetti invece “ragionano” in modo differente: il programma non conosce nulla dei dati a disposizione e nemmeno delle funzioni preposte a manipolarli, ma sa che l’utilizzatore nella sua testa “pensa” a manipolare oggetti ed in maniere differenti. La caratteristica fondamentale dei linguaggi ad oggetti è , appunto, di affrontare un problema o un compito da svolgere tramite OGGETTI che sanno come svolgere attività e come trattare dati di diverso tipo.
Visto che l’Objective-C è un programma object oriented ci focalizzeremo solo su quest’ultima tipologia di linguaggi.
Oggetti e classi, questi sconosciuti
Una delle ragioni del successo della programmazione ad oggetti è quello di essere molto vicina al mondo reale e alla sua suddivisione in categorie.
Ma cosa sono gli oggetti? Fortunatamente la lingua in questo caso ci aiuta e possiamo dare una definizione in italiano senza andare troppo lontano dal concetto di oggetto in un linguaggio di programmazione: State leggendo queste righe sul vostro PC o MAC e magari avete una penna a portata di mano.. prendetela ed osservatela. È una penna e la usate tutti i giorni, ma nascosta nel vostro cassetto ce n’è sicuramente un’altra. Anch’essa è una penna, diversa sicuramente da quella che avete in mano adesso, ma è indiscutibilmente una penna. Le due “cose” che state osservando quindi, la penna blu che avete in mano e la penna nera che è nel cassetto sono senza dubbio due rappresentanti della categoria “penne”. Bene, abbiamo appena capito concettualmente cosa sono gli oggetti e le classi in quanto la penna blu e quella nera sono “oggetti” mentre la categoria delle penne è una “classe”. La classe descrive tutte le caratteristiche che una penna necessariamente deve possedere mentre la penna blu che ho in mano è un rappresentante di quella classe, un OGGETTO di quella classe, d’ora in poi diremo che è un ISTANZA della CLASSE “penna”.
Quindi riassumendo: esistono le penne ed hanno tutte la caratteristica di scrivere, di essere di un determinato colore ecc ecc ed esiste la MIA penna blu che è un istanza della classe penna perché ha tutte le caratteristiche che deve avere una penna, ma in particolare scrive in blu ed è la mia.
Andando oltre potremmo dire che la classe “penna” ha delle VARIABILI che la descrivono, per esempio il colore e dei METODI cioè delle funzioni che manipolano le sue variabili, per esempio lo scrivere è una funzione, un metodo della classe “penna”.
Per ora ci fermiamo qui, anche per capire se reputate giusto inziare e continuare con queste “lezioni” teoriche, che sicuramente porteranno ad una migliore comprensione di quello che accade nella sezione iSpazio Developers con gli utilissimi tutorial per creare semplici applicazioni. Se i vostri feedback ce lo permetteranno quindi, nella prossima “puntata” affronteremo i concetti di funzione, variabili, ed oggetti, ma in ottica Objective-C
.
Enzo Francesca per iSpazio.net
Leggi o Aggiungi Commenti