2. INIZIAMO!
• Introduzione
• Programma
• Strumenti di Sviluppo
• Tecniche di Sviluppo
martedì 18 ottobre 2011
3. INTRODUZIONE: CHI SIAMO
• MobileSchool •
Diffondiamo la cultura mobile in Italia organizzando
corsi su come realizzare applicazioni per iPhone iOS e
Android eseminari invitando a condividere l’esperienza
di chi ha già lanciato una startup mobile.
• Francesco Lo Truglio
Sviluppatore Senior esperto in tecnologie Web e Mobile.
Per l’occasione il vostro Docente!
• Xcode
L’ambiente di sviluppo su cui lavoreremo e il nostro
principale nemico/alleato durante tutte le fasi dello
Sviluppo!
• Iphone
Melafonino o surrugato di tecnologia, l’oggetto che
vogliamo conquistare con le app che impareremo a
sviluppare.
martedì 18 ottobre 2011
4. PROGRAMMA DI OGGI
• Introduzione alla Programmazione
• Cenni di Objective-C
• L’ambiente di Lavoro (pre)
• Break [10,30]
• XCode
• Interface Builder
• Break [13,00]
• Interfaccia Utente (MVC)
• La nostra prima Applicazione
• UIScroll View/UITableView
martedì 18 ottobre 2011
5. OBJECTIVE -C
Objective-C è il principale linguaggio di
programmazione che si utilizza per creare applicazioni
per OSX.
E' la base da apprendere per utilizzare le librerie
(framework) che Apple mette a disposizione e che
consentono lo sviluppo di applicazioni su:
• OSX
• iPhone
• iPodTouch
martedì 18 ottobre 2011
6. OBJECTIVE C
E' un linguaggio di programmazione ad oggetti (OOP)
molto simile a altri linguaggi come Java o C++.
Le tecniche di OOP seppure utili verranno spiegate
durante il corso, per soffermarci più sul lato pratico. Il
Nostro scopo e fornirvi gli strumenti per iniziare
immediatamente a sviluppare!
martedì 18 ottobre 2011
7. OBJECTIVE C: CENNI SUGLI OGGETTI
CLASSI e OGGETTI sono elementi astratti che permettono di
rappresentare oggetti reali (o immaginari) in oggetti software.
Ogni Oggetto appartiene a una Classe e i nostri
programmi saranno un insieme di oggetti che dialogano
tra loro inviandosi messaggi e ricevendo risposte
attraverso metodi e funzioni.
martedì 18 ottobre 2011
8. OBJECTIVE C: LA PRIMA CLASSE
In Objective-C per definire un oggetto, quindi la classe cui
esso appartiene, abbiamo bisogno di due file:
• uno (.h) che definisce l'interfaccia della classe
• l'altro (.m) che ne definisce l'implementazione
L'interfaccia descrive le azioni (i metodi e funzioni) della
classe e nasconde l'implementazione che definisce il
codice vero e proprio, ovvero ciò che le azioni realmente
eseguono.
martedì 18 ottobre 2011
9. OBJECTIVE C: ESEMPIO DI INTERFACCIA
Un Esempio di Intefaccia (fclass.h)
dichiarazione di interfaccia classe di appartenenza
@interface FClass : NSObject {
nome della classe - int variabile; variabili di classe
- bool variabile2;
}
- (void)Metodo;
metodi (azioni) esposti
@end
martedì 18 ottobre 2011
10. OBJECTIVE C: ESEMPIO DI IMPLEMENTAZIONE
Un Esempio di Implementazione (fclass.m)
interfaccia da implementare
#import "FClass.h"
@implementation FClass
implementazione della classe
- (void) Metodo {
// commento: ...
}
implementazione dei metodi
@end
martedì 18 ottobre 2011
11. OBJECTIVE C: I METODI
Struttura di un metodo:
- (void) Metodo;
tipologia di metodo tipo di risultato nome del metodo
(- di istanza) (void nessun risultato)
(+ di classe)
I metodi possono ricevere dati:
- (bool) maggioredi:(int)num1 compara:(int)num2;
tipo argomento nome argomento
nome argomento metodo
nome argomento esposto
martedì 18 ottobre 2011
12. OBJECTIVE C:PROPRIETÀ
Le variabili, possono essere lette e/o modificate da chi
utilizza le nostre classi, per far questo le nostre variabili
dovranno diventare proprietà e fornire dei metodi
specifici (getter/setter).
Objective-C può generare automaticamente questi
metodi attraverso l'utilizzo delle keyword @properties e
@synthesize.
martedì 18 ottobre 2011
13. OBJECTIVE C:PROPRIETÀ 2
Nel file di Interfaccia dobbiamo dichiarare di quali variabili
vogliamo creare i getter e setter:
@interface FClass : NSObject {
Gli accessori
- int numero; definiscono il
accessori della
comportamento
proprietà
dei metodi di Get
} e Set
@properties (retain) int numero;
- (void)Metodo;
@end
martedì 18 ottobre 2011
14. OBJECTIVE C:PROPRIETÀ 2
Nel file di Interfaccia dobbiamo dichiarare di quali variabili
vogliamo creare i getter e setter:
@interface FClass : NSObject {
Gli accessori
- int numero; definiscono il
accessori della
comportamento
proprietà
dei metodi di Get
} e Set
@properties (retain) int numero;
- (void)Metodo;
@end
martedì 18 ottobre 2011
15. OBJECTIVE C:PROPRIETÀ 2
Nel file di Interfaccia dobbiamo dichiarare di quali variabili
vogliamo creare i getter e setter:
@interface FClass : NSObject {
Gli accessori
- int numero; definiscono il
accessori della
comportamento
proprietà
dei metodi di Get
} e Set
@properties (retain) int numero;
- (void)Metodo;
@end
martedì 18 ottobre 2011
16. OBJECTIVE C:PROPRIETÀ 2
Nel file di Interfaccia dobbiamo dichiarare di quali variabili
vogliamo creare i getter e setter:
@interface FClass : NSObject {
Gli accessori
- int numero; definiscono il
accessori della
comportamento
proprietà
dei metodi di Get
} e Set
@properties (retain) int numero;
- (void)Metodo;
@end
martedì 18 ottobre 2011
17. OBJECTIVE C: CICLO DI VITA DEGLI OGGETTI
• alloc: viene allocata (predisposta) la memoria necessaria ad
ospitare l'oggetto.
• init: viene inizializzato l'oggetto invocando il suo costruttore,
l'oggetto "prende vita".
• use: utilizzo dell'oggetto.
• dealloc: rimozione dalla memoria.
alloc init use dealloc
martedì 18 ottobre 2011
18. OBJECTIVE C: CICLO DI VITA DEGLI OGGETTI
• alloc: viene allocata (predisposta) la memoria necessaria ad
ospitare l'oggetto.
• init: viene inizializzato l'oggetto invocando il suo costruttore,
l'oggetto "prende vita".
• use: utilizzo dell'oggetto.
• dealloc: rimozione dalla memoria.
alloc init use dealloc
martedì 18 ottobre 2011
19. OBJECTIVE C: CICLO DI VITA DEGLI OGGETTI
• alloc: viene allocata (predisposta) la memoria necessaria ad
ospitare l'oggetto.
• init: viene inizializzato l'oggetto invocando il suo costruttore,
l'oggetto "prende vita".
• use: utilizzo dell'oggetto.
• dealloc: rimozione dalla memoria.
alloc init use dealloc
martedì 18 ottobre 2011
20. OBJECTIVE C: CICLO DI VITA DEGLI OGGETTI
• alloc: viene allocata (predisposta) la memoria necessaria ad
ospitare l'oggetto.
• init: viene inizializzato l'oggetto invocando il suo costruttore,
l'oggetto "prende vita".
• use: utilizzo dell'oggetto.
• dealloc: rimozione dalla memoria.
alloc init use dealloc
martedì 18 ottobre 2011
21. OBJECTIVE C: CICLO DI VITA DEGLI OGGETTI
• alloc: viene allocata (predisposta) la memoria necessaria ad
ospitare l'oggetto.
• init: viene inizializzato l'oggetto invocando il suo costruttore,
l'oggetto "prende vita".
• use: utilizzo dell'oggetto.
• dealloc: rimozione dalla memoria.
alloc init use dealloc
martedì 18 ottobre 2011
22. XCODE
L’Ambiente di Lavoro
martedì 18 ottobre 2011
23. Gruppi, Files, Risorce
vista di Dettaglio
barra di stato
Xcode: Interfaccia
martedì 18 ottobre 2011
24. XCODE
•Gruppi e File: gestione file e gruppi (cartelle), aggiunta/
rimozione framework, aggiunta/rimozione classi (con il
wizard), Warning ed Errori
•Vista di Dettaglio: Modifica del codice, Gestione
breakpoint, navigazione tra i file e le classi
•Barra di Stato: mostra lo stato dell’applicazione durante
operazioni come la compilazione.
martedì 18 ottobre 2011
25. XCODE
•Visualizzazione dell’Interfaccia: tenendo premuto
Command e doppio click su una classe o oggetto, verrà
aperta la relativa interfaccia.
Riferimenti alle API: tenedo premuto command e
doppio click su un simbolo verranno mostrate le
informazioni sull’utilizzo del simbolo.
•Completamento del codice: durante la scrittura del
codice, Xcode vi aiuterà nella scrittura del codice.
•Chiusura del codice: sarà possibile “raggruppare” il
codice non utile al momento (es. Metodi non usati).
martedì 18 ottobre 2011
27. INTERFACE BUILDER
Interface Builder rende semplice la costruzione dei
prototipi grafici senza bisogno di scrivere alcuna riga di
codice.
Sarà possibile inserire qualunque degli elementi grafici
standard come per esempio: pulsanti, etichette, campi di
testo, tabelle ecc. solo con il drag&drop.
Xcode, lavora in tempo reale con l’interface builder,
quindi le assegnazioni potranno essere effettuate
semplicemente modificando le interfacce.
martedì 18 ottobre 2011
28. INTERFACE BUILDER
Gestore XIB Vista Interfaccia Proprietà
martedì 18 ottobre 2011
29. INTERFACE BUILDER
•Gestore XIB: permette la gestione degli elementi
presenti nell’interfaccia
•Vista Interfaccia: visualizza in tempo reale l’interfaccia
che si sta creando, inoltre permette la gestione di tutti
gli elementi del Gestore XIB (drag&drop).
•Proprietà: permette di modificare le proprietà degli
oggetti presenti nell’interfaccia e di gestire le
associazioni.
martedì 18 ottobre 2011
31. PRIMA APP
La nostra prima applicazione dovrà contenere gli elementi di
base per l’interfaccia e una semplice interazione.
Conoscenze:
Associazioni, Eventi;
Obiettivo:
Creare un app che mostri il proprio nome in una textLabel
dopo aver letto il valore da una UITextView alla pressione di
un tasto.
martedì 18 ottobre 2011
32. PRIMA APP : INTERFACCIA
UILabel
UITextField
UIButton
martedì 18 ottobre 2011
34. PRIMA APP:ASSEGNAZIONE ELEMENTI
Una volta create le proprietà
dentro il codice, si dovranno
assegnare agli elementi grafici
direttamente con l’INTERFACE
BUILDER.
Per fare ciò basta trascinare gli
elementi dell’Inspector verso gli
oggetti grafici nel layout.
martedì 18 ottobre 2011
35. PRIMA APP:IMPLEMENTAZIONE
Come già spiegato l’interfaccia descrive la classe, mentre
l’implementazione descrive il comportamento:
#import [super
"firstapp1ViewController.h" didReceiveMemoryWarning];
}
@implementation
firstapp1ViewController - (void)viewDidUnload {
@synthesize scrivi, cambia, ! // Release any retained
pulsante; subviews of the main view.
! // e.g. self.myOutlet = nil;
}
-(IBAction) pulsante_clicker {
! NSString *scritto = [scrivi
text]; - (void)dealloc {
! [cambia setText:scritto]; ! [scrivi dealloc];
! ! [cambia dealloc];
} [super dealloc];
}
- (void)didReceiveMemoryWarning {
! // Releases the view if it @end
doesn't have a superview.
martedì 18 ottobre 2011
37. UISCROLLVIEW / UITABLEVIEW
Mostrare elenchi di dati o griglie di essi è la prima attività
necessaria quando si vuole creare un’app di livello
professionale o che si connetta a repository remoti per
scaricare i dati.
Pertanto come prima esercitazione da analizzare e discutere
durante la sessione del corso vi allego un progetto Xcode da
discutere nella prossima sessione:
firstApp.zip
martedì 18 ottobre 2011