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.
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
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
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!
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.
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.
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
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
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
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.
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
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
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
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
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
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
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
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
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
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.
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).
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.
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.
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.
32. PRIMA APP : INTERFACCIA
UILabel
UITextField
UIButton
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.
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.
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
38. per informazioni FLT.lab - info@fltlab.net
GRAZIE PER L’ATTENZIONE
leggi la seconda parte del corso base in 2 giorni!
MobileSchool è un progetto realizzato in collaborazione con Figmenta S.r.l. - copyright 2012 Figmenta