広告
広告
PROGRAMMAZIONE DI SISTEMI MOBILI IOS,
OBJECTIVE-C: IPHONE, IPAD, IPOD..
LEONARDO SEQUI
Corso di Sistemi Distribuiti e Tecnologie Internet, AA.2012-2013
DISIT LAB: Distributed Systems and Internet Technology Lab
Università degli Studi di Firenze
Programmazione sistemi mobili iOS: iPhone, iPad;
Objective C, 2012-2013
1
Objective-C
• Objective-C è il principale linguaggio di
programmazione che si utilizza per creare applicazioni
per OSX.
• È la base da apprendere per utilizzare le librerie
(framework) che Apple mette a disposizione e che
consentono lo sviluppo di applicazioni su OSX, iPhone,
iPod Touch e iPad.
• E' un linguaggio di programmazione ad oggetti (OOP)
molto simile a altri linguaggi come Java o C++.
Programmazione sistemi mobili iOS: iPhone, iPad;
Objective C, 2012-2013
2
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.
Programmazione sistemi mobili iOS: iPhone, iPad;
Objective C, 2012-2013
3
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.
Programmazione sistemi mobili iOS: iPhone, iPad;
Objective C, 2012-2013
4
@implementation
//
Person.m
@implementation Person
@end
@end
By Giuseppe Arici
5
By Giuseppe Arici
6
By Giuseppe Arici
7
- (void) deposit:(NSInteger)amount;
@end
By Giuseppe Arici
8
By Giuseppe Arici
9
By Giuseppe Arici
10
variables
@end
By Giuseppe Arici
11
12
@end
By Giuseppe Arici
13
14
init];
15
16
By Giuseppe Arici
17
{
}
@end
By Giuseppe Arici
18
}
By Giuseppe Arici
19
}
By Giuseppe Arici
20
}
By Giuseppe Arici
21
}
By Giuseppe Arici
22
By Giuseppe Arici
23
By Giuseppe Arici
25
By Giuseppe Arici
26
27
28
By Giuseppe Arici
29
argument name
By Giuseppe Arici
30
Square brackets syntax
By Giuseppe Arici
31
Properties
By Giuseppe Arici
33
copy
retain
assign
34
Properties
Example:
By Giuseppe Arici
35
By Giuseppe Arici
36
•
•
37
38
By Giuseppe Arici
39
Memory Management
•
•
•
By Giuseppe Arici
40
Memory Management
Reference count
Programmazione sistemi mobili iOS: iPhone, iPad;
Objective C, 2012-2013
41
•
•
•
•
alloc
2
retain
1
0
dealloc
By Giuseppe Arici
42
45
By Giuseppe Arici
46
By Giuseppe Arici
47
Protocol
By Giuseppe Arici
48
Protocol
•
•
•
•
Useful in defining
•
•
•
49
Protocol
•
@protocol NSCoding
- (void)encodeWithCoder:(NSCoder *)aCoder;
- (id)initWithCoder:(NSCoder *)aDecoder;
@end
•
50
Design Patterns
Programmazione sistemi mobili iOS: iPhone, iPad;
Objective C, 2012-2013
52
Design Patterns
•
•
•
•
Model View Controller
Protocol
Delegation
Notification Center
Programmazione sistemi mobili iOS: iPhone, iPad;
Objective C, 2012-2013
53
Model View Controller
54
55
56
57
Programmazione sistemi mobili iOS: iPhone, iPad;
Objective C, 2012-2013
60
Programmazione sistemi mobili iOS: iPhone, iPad;
Objective C, 2012-2013
61
Example
Programmazione sistemi mobili iOS: iPhone, iPad;
Objective C, 2012-2013
62
•
63
Notification
Local notification
Notifiche locali schedulate dall’app e gestite dal sistema
operativo del singolo device.
Push Notification
Notifiche inviate dai serverApple (APNsApple Push
Notification service) su tutti i device dove l’app è installata.
Programmazione sistemi mobili iOS: iPhone, iPad;
Objective C, 2012-2013
64
Programmazione sistemi mobili iOS: iPhone, iPad;
Objective C, 2012-2013
65
Programmazione sistemi mobili iOS: iPhone, iPad;
Objective C, 2012-2013
66
Token Generation and Dispersal
Programmazione sistemi mobili iOS: iPhone, iPad;
Objective C, 2012-2013
67
68
Programmazione sistemi mobili iOS: iPhone, iPad;
Objective C, 2012-2013
69
A Concrete
Example
Programmazione sistemi mobili iOS: iPhone, iPad;
Objective C, 2012-2013
70
Programmazione sistemi mobili iOS: iPhone, iPad;
Objective C, 2012-2013
71
Emergenze ospedaliere
Assenza di criteri standard
per la creazione dei piani
di emergenza
Incrementare la reattività e
l’efficienza in caso di emergenza
Comunicazioni durante
l’emergenza non gestite
Semplificare i meccanismi di
comunicazione dell’informazione
Dispositivi mobili in ambito ospedaliero:
accesso a cartelle cliniche, risultati di test e
statistiche vitali dei pazienti tramite iPhone
(M.Sinai Hospital, Toronto)
Programmazione sistemi mobili iOS: iPhone, iPad;
Objective C, 2012-2013
72
Segnalare in modo dettagliato (luogo, stato pazienti, immagini, video) la presenza di
una situazione di emergenza, gestire le segnalazioni effettuate
•
Consultare lo stato delle emergenze in corso, con possibilità di ricevere notifiche
dalla Centrale Operativa
•
individuare e segnalare la propria posizione indoor tramite lettura di un codice QR
posizionato all’interno dei locali della struttura
•
individuare e segnalare la propria posizione esterna sfruttando il ricevitore GPS
•
Localizzare e raggiungere con un sistema di navigazione indoor/outdoor le vie di
uscita più vicine, le aree di raccolta definite dalla centrale operativa
•
Individuare gli operatori presenti all’interno dell’edificio, conoscerne l’ultima
posizione segnalata tramite la visualizzazione di una mappa, comunicare con essi
tramite una sistema di messaggi in modalità broadcast o unicast
•
Consultare una checklist sui compiti assegnati ai ruoli
•
Richiedere informazioni sul Responsabile di un’emergenza o richiedere di diventarlo
•
Consultare mappe edificio e visualizzare i PDI presenti
Programmazione sistemi mobili iOS: iPhone, iPad;
Objective C, 2012-2013
73
Analisi dei requisiti
Segnalazione di
una situazione di
emergenza
Richiesta di
informazioni sulla
propria posizione
Programmazione sistemi mobili iOS: iPhone, iPad;
Objective C, 2012-2013
74
Progettazione della UI
Programmazione sistemi mobili iOS: iPhone, iPad;
Objective C, 2012-2013
75
Architettura del sistema
MOBILE EMERGENCY PRO
CENTRAL STATION
User Interface
User Management
DATABASE
Map Consulting
MOBILE DEVICES AND SENSORS
COMMUNICATION MANAGEMENT
MOBILE EMERGENCY FRONTEND
Emergency Management
Mobile Medicine
Programmazione sistemi mobili iOS: iPhone, iPad;
Objective C, 2012-2013
76
Diagramma delle classi
Programmazione sistemi mobili iOS: iPhone, iPad;
Objective C, 2012-2013
77
Diagramma delle classi
VIEW
+
MODEL
Programmazione sistemi mobili iOS: iPhone, iPad;
Objective C, 2012-2013
78
La base di dati
Programmazione sistemi mobili iOS: iPhone, iPad;
Objective C, 2012-2013
79
Comunicazione Client / Server
•
Comunicazioni tra dispositivi e Centrale Operativa tramite
connessioni HTTP con richieste POST e GET (NSURLConnection)
•
Informazioni inviate dalla Centrale Operativa ai dispositivi sotto
forma di contenuti XML/JSON
Invio di informazione formattata per
ridurre il traffico di rete
Il dispositivo è responsabile della
visualizzazione dei dati
Programmazione sistemi mobili iOS: iPhone, iPad;
Objective C, 2012-2013
80
Comunicazione Client / Server
SERVER
Programmazione sistemi mobili iOS: iPhone, iPad; Objective C, 2012‐2013
81
Comunicazione Client / Server
GET‐Request
Query
Data
DISPLAY DATA
PARSER
XML / JSON
Programmazione sistemi mobili iOS: iPhone, iPad; Objective C, 2012‐2013
82
Programmazione sistemi mobili iOS: iPhone, iPad; Objective C, 2012‐2013
83
Conclusioni
Analisi dei
requisiti
Definizione
del modello
Realizzazione
di mockup
Analisi del
problema
Individuazione
delle entità
Creazione di
mockup
dell’applicazione
Guidelines di
Apple
Individuazione
degli utilizzatori
finali
Individuazione
degli attributi
per ciascuna
entità
Testing virtuale
Design Patterns
Programmazione sistemi mobili iOS: iPhone, iPad; Objective C, 2012‐2013
Scrittura
codice
84
Credit
• Le slide relative alla programmazione sono state derivate dalle slide pubblicate su SlideShare da:
Giuseppe Arici
– [email protected]
– [email protected]
• Le slide relative Mobile Emergency sono derivate da un lavoro svolto al DISIT:
– P. Bellini, S. Boncinelli, F. Grossi, M. Mangini, P. Nesi, L. Sequi, "Mobile Emergency: supporting emergency in hospital with mobile devices", Theme Issue Media Tablets & Apps (Guest editors: Pinciroli & Pagliari), JMIR RESEARCH PROTOCOLS, http://dx.doi.org/10.2196/resprot.2293, 2013.
Programmazione sistemi mobili iOS: iPhone, iPad; Objective C, 2012‐2013
85
Buon lavoro!
Programmazione sistemi mobili iOS: iPhone, iPad; Objective C, 2012‐2013
86">
/
ダウンロード
念のためお知らせします。ドキュメントはここで直接表示できます。しかし最も重要なことは、私たちのAIがすでにそれを読んでいるということです。複雑なことを簡単な言葉で説明したり、あらゆる言語で質問に答えたり、最も長く複雑なドキュメントでもすばやくナビゲートしたりできます。
広告