PROGRAMMAZIONE DI SISTEMI MOBILI
cod. 1006702

Anno accademico 2022/23
3° anno di corso - Secondo semestre
Docente responsabile dell'insegnamento
Simone CIRANI
insegnamento integrato
6 crediti
sede: PARMA
insegnamento
in ITALIANO

Obiettivi formativi



Introduzione allo sviluppo su piattoforme mobili.
Architettura delle piattaforme mobili e componenti chiave.
Programmazione su Piattaforma iOS.
Introduzione alla piattaforma Android, Android SDK e tool di sviluppo.

Prerequisiti



Prerequisiti:
- Programmazione di base (algoritmi e strutture dati)
Le seguenti voci sono fortemente consigliate:
- Esperienza con la programmazione orientata agli oggetti
- Design pattern

Contenuti dell'insegnamento


La finalità del corso è quella di affrontare i principi di base per lo sviluppo
su piattaforme mobili di ultima generazione.
In particolare verrà fornita allo studente la capacità di comprendere:
- i principi e gli aspetti chiave della programmazione in ambiente mobile
- le caratteristiche delle due principali piattaforme principali per
smartphone e tablet: Android e iOS.
Lo studente imparerà ad applicare tali competenze e sarà capace di
programmare semplici applicazioni su smartphone in ambiente iOS ed
Android.

Programma esteso


Modulo I: iOS

- Introduzione al Mobile Computing. Introduzione all'Objective-C.
Mobile Computing & Development Introduzione: architettura del sistema mobile e sfide di sviluppo.

- Objective-C - parte I: Nozioni di base sul linguaggio Objective-C, Classi e oggetti, Metodi, Variabili di istanza e proprietà, Binding dinamico e introspezione, Foundation Framework.

- OOP con Objective-C
Objective-C - parte II: Creazione di oggetti, Gestione della memoria, Automatic Reference Counting, Protocolli, Categorie.

- Sistema operativo iOS e UIKit
iOS SDK: sistema operativo iOS, iOS SDK, Tools of the trade, Model-View-Controller, Pattern di interazione MVC, View Controller.
Viste e controlli UIKit: ciclo di vita di ViewController, UIColor, UIFont, NSAttributedString, view e control: UILabel, UIButton, UISlider, UISwitch, UITextField, UITextView, NSNotificationCenter, notifiche tastiera

- Controller di ViewController
MVC multipli, UINavigationController , Segues, UITabBarController

- Concurrency & Networking
Blocchi di concorrenza e rete, concorrenza, networking: blocchi, concorrenza e multi-threading, Grand Central Dispatch (GCD), networking, UIImage e UIImageView.

- Scroll View, Table View, Collection View, Web View
Scroll views, Table views, Data source e Delegate, Table view cells, Collection views, Web views

- CoreLocation e MapKit, sensori e multimedia, auto-layout
Core Location e Map Kit: Core Location, Recupero della posizione dell'utente. Geocoding, MapKit, Annotazione di mappe, Segue programmatiche, Utilizzo di JSON.

- Sensori e Multimedia: Core Motion, Audio&Video:
Media Player, System Sound Services, AVFoundation, Fotocamera e Libreria Foto. Auto-Layout.

Modulo II: Android

- La piattaforma Android
Introduzione ad activity, service, intent, MVC e interfacce utente

- Interfaccia utente grafica Android 1
Linear Layout, Relative Layout, Table Layout, Grid View, Tab Layout, List View, Custom List View
Element, Fragments

- utente grafico Android Interfaccia 2
Application Menu, ActionBar, Handling Actions with the ActionBar, Navigation with the ActionBar, ActionBar & Tabs, View Pager, Action Bar & View Pager

- Interfaccia utente grafica Android 3
Toast Notifications, Dialogs, WebView, Web Client / Web Chrome Client, Load Local Web Content,
WebView Javascript Interface, Supporting Multiple Screens

- Posizione e mappe
Introduzione a GPS, Servizi basati sulla posizione, Android e location service, Location service, Modello di applicazione LBS, API Android v2 di Google Maps, Configurazione, MapFragment, Marker, Eventi, Geocoder, applicazione mappa e navigatore

- Data Persistence
Shared Preferences, Internal Storage, External Storage, JSON Appendix, SQLite Database

- Concorrenza
Concorrenza in Java, concorrenza e interfaccia utente, concorrenza e Android, Handler, AsyncTask, Status Bar Notification

- Background Services
Android Service, Service Life Cycle, Unbound Service, Bound Service, Intent & Intent Filter ,
Broadcast Receiver

- Networking
Android e Networking, HTTP,Connectivity Manager,WifiManager,TelephonyManager, Bluetooth

- Sensori e sensori di gestione dei media
Sensors: Introduzione,Framework,Android; Multimedia:Framework,Fotocamera

Bibliografia



Programming iOS 7
by Matt Neuburg
O'Reilly Media - December 2013
iOS 7 Programming Fundamentals
by Matt Neuburg
O'Reilly Media - October 2013

"Learning Android" by Marko Gargenta, Masumi Nakamura
O'Reilly Media.
"Programming Android: Java Programming for the New Generation of
Mobile Devices"
by Zigurd Mednieks, Laird Dornin, G. Blake Meike, and Masumi Nakamura
O'Reilly Media.
"Android Wireless Application Development", Second Edition
by Lauren Darcey and Shane Conder
Addison Wesley.

Metodi didattici



Didattica frontale ed esercitazioni.

Modalità verifica apprendimento



Progetti individuali di fine corso per piattaforme Android ed iOS.

Altre informazioni

- - -

Obiettivi agenda 2030 per lo sviluppo sostenibile

- - -