SlideShare une entreprise Scribd logo
1  sur  38
CORSO BASE IPHONE
       Parte 1
INIZIAMO!


• Introduzione

• Programma

• Strumenti   di Sviluppo

• Tecniche   di Sviluppo
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.
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
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
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!
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.
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.
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
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
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
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.
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
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
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
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
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
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
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
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
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
XCODE
L’Ambiente di Lavoro
Gruppi, Files, Risorce
                                 vista di Dettaglio


barra di stato



            Xcode: Interfaccia
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.
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).
INTERFACE BUILDER
    L’Ambiente di Lavoro
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.
INTERFACE BUILDER




Gestore XIB   Vista Interfaccia   Proprietà
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.
LA PRIMA APPLICAZIONE
        Hello Man!
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.
PRIMA APP : INTERFACCIA




UILabel

UITextField

UIButton
PRIMA APP : INTERFACCIA


@interface firstapp1ViewController : UIViewController {
! UILabel *cambia;
! UIButton *pulsante;
! UITextField *scrivi;
!
!
}

@property (nonatomic,retain) IBOutlet UILabel *cambia;
@property (nonatomic,retain) IBOutlet UIButton *pulsante;
@property (nonatomic,retain) IBOutlet UITextField *scrivi;

-(IBAction) pulsante_clicker;

@end
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.
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.
PRIMA APP:SIMULATORE




 Proviamo l’app!
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
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

Contenu connexe

Tendances

07 - Programmazione: Tipi di base e conversioni
07 - Programmazione: Tipi di base e conversioni07 - Programmazione: Tipi di base e conversioni
07 - Programmazione: Tipi di base e conversioniMajong DevJfu
 
Eclipse emf
Eclipse emfEclipse emf
Eclipse emfAdvenias
 
13 Puntatori E Memoria Dinamica
13   Puntatori E Memoria Dinamica13   Puntatori E Memoria Dinamica
13 Puntatori E Memoria Dinamicaguest60e9511
 
Corso pratico di C# - 2013
Corso pratico di C# - 2013Corso pratico di C# - 2013
Corso pratico di C# - 2013Matteo Valoriani
 
2011.02.19 Introducing F#
2011.02.19 Introducing F#2011.02.19 Introducing F#
2011.02.19 Introducing F#Marco Parenzan
 
Introduzione a JavaScript
Introduzione a JavaScriptIntroduzione a JavaScript
Introduzione a JavaScriptGiovanni Buffa
 
JavaScript Object Oriented
JavaScript Object OrientedJavaScript Object Oriented
JavaScript Object OrientedManuel Scapolan
 
06 - Programmazione: Scope Variabili
06 - Programmazione: Scope Variabili06 - Programmazione: Scope Variabili
06 - Programmazione: Scope VariabiliMajong DevJfu
 
C# e la Framework Class Library
C# e la Framework Class LibraryC# e la Framework Class Library
C# e la Framework Class LibraryManuel Scapolan
 
Dai delegati a LINQ con C#
Dai delegati a LINQ con C#Dai delegati a LINQ con C#
Dai delegati a LINQ con C#Manuel Scapolan
 
Pe a3 perl-metaprogramming
Pe a3 perl-metaprogrammingPe a3 perl-metaprogramming
Pe a3 perl-metaprogrammingMajong DevJfu
 
C#, imparare a programmare e sopravvivere
C#, imparare a programmare e sopravvivereC#, imparare a programmare e sopravvivere
C#, imparare a programmare e sopravvivereMatteo Valoriani
 
Py a6 python-database
Py a6 python-databasePy a6 python-database
Py a6 python-databaseMajong DevJfu
 

Tendances (20)

07 - Programmazione: Tipi di base e conversioni
07 - Programmazione: Tipi di base e conversioni07 - Programmazione: Tipi di base e conversioni
07 - Programmazione: Tipi di base e conversioni
 
Eclipse emf
Eclipse emfEclipse emf
Eclipse emf
 
C# Language Evolution
C# Language EvolutionC# Language Evolution
C# Language Evolution
 
Py t2 python-moduli
Py t2 python-moduliPy t2 python-moduli
Py t2 python-moduli
 
13 Puntatori E Memoria Dinamica
13   Puntatori E Memoria Dinamica13   Puntatori E Memoria Dinamica
13 Puntatori E Memoria Dinamica
 
T7 librerie
T7 librerieT7 librerie
T7 librerie
 
Corso pratico di C# - 2013
Corso pratico di C# - 2013Corso pratico di C# - 2013
Corso pratico di C# - 2013
 
2011.02.19 Introducing F#
2011.02.19 Introducing F#2011.02.19 Introducing F#
2011.02.19 Introducing F#
 
Py a4 python-file
Py a4 python-filePy a4 python-file
Py a4 python-file
 
Pe t4 perl-oggetti
Pe t4 perl-oggettiPe t4 perl-oggetti
Pe t4 perl-oggetti
 
Introduzione a JavaScript
Introduzione a JavaScriptIntroduzione a JavaScript
Introduzione a JavaScript
 
2006 Py03 intermedio
2006 Py03 intermedio2006 Py03 intermedio
2006 Py03 intermedio
 
JavaScript Object Oriented
JavaScript Object OrientedJavaScript Object Oriented
JavaScript Object Oriented
 
06 - Programmazione: Scope Variabili
06 - Programmazione: Scope Variabili06 - Programmazione: Scope Variabili
06 - Programmazione: Scope Variabili
 
C# e la Framework Class Library
C# e la Framework Class LibraryC# e la Framework Class Library
C# e la Framework Class Library
 
Dai delegati a LINQ con C#
Dai delegati a LINQ con C#Dai delegati a LINQ con C#
Dai delegati a LINQ con C#
 
Pe a3 perl-metaprogramming
Pe a3 perl-metaprogrammingPe a3 perl-metaprogramming
Pe a3 perl-metaprogramming
 
C#, imparare a programmare e sopravvivere
C#, imparare a programmare e sopravvivereC#, imparare a programmare e sopravvivere
C#, imparare a programmare e sopravvivere
 
OOP with C#
OOP with C#OOP with C#
OOP with C#
 
Py a6 python-database
Py a6 python-databasePy a6 python-database
Py a6 python-database
 

En vedette

Corso Iphone in 48h (parte 2)
Corso Iphone in 48h (parte 2)Corso Iphone in 48h (parte 2)
Corso Iphone in 48h (parte 2)FLT.lab
 
iOS Development - A Beginner Guide
iOS Development - A Beginner GuideiOS Development - A Beginner Guide
iOS Development - A Beginner GuideAndri Yadi
 
ios-mobile-app-development-intro
ios-mobile-app-development-introios-mobile-app-development-intro
ios-mobile-app-development-introRemesh Govind M
 
iPhone Development Tools
iPhone Development ToolsiPhone Development Tools
iPhone Development ToolsOmar Cafini
 
Getting started with Xcode
Getting started with XcodeGetting started with Xcode
Getting started with XcodeStephen Gilmore
 
Xcode 6の新機能
Xcode 6の新機能Xcode 6の新機能
Xcode 6の新機能Shingo Sato
 
Introduction to iOS Development
Introduction to iOS DevelopmentIntroduction to iOS Development
Introduction to iOS DevelopmentAsim Rais Siddiqui
 

En vedette (11)

Corso Iphone in 48h (parte 2)
Corso Iphone in 48h (parte 2)Corso Iphone in 48h (parte 2)
Corso Iphone in 48h (parte 2)
 
iOS Development - A Beginner Guide
iOS Development - A Beginner GuideiOS Development - A Beginner Guide
iOS Development - A Beginner Guide
 
ios-mobile-app-development-intro
ios-mobile-app-development-introios-mobile-app-development-intro
ios-mobile-app-development-intro
 
iPhone Development Tools
iPhone Development ToolsiPhone Development Tools
iPhone Development Tools
 
Getting started with Xcode
Getting started with XcodeGetting started with Xcode
Getting started with Xcode
 
Mela marcia
Mela marciaMela marcia
Mela marcia
 
Xcode - Just do it
Xcode - Just do itXcode - Just do it
Xcode - Just do it
 
Introduction of Xcode
Introduction of XcodeIntroduction of Xcode
Introduction of Xcode
 
iOS Introduction For Very Beginners
iOS Introduction For Very BeginnersiOS Introduction For Very Beginners
iOS Introduction For Very Beginners
 
Xcode 6の新機能
Xcode 6の新機能Xcode 6の新機能
Xcode 6の新機能
 
Introduction to iOS Development
Introduction to iOS DevelopmentIntroduction to iOS Development
Introduction to iOS Development
 

Similaire à Corso Iphone in 48h

Non solo Django: MVC orientato agli oggetti con Plone e Zope Toolkit
Non solo Django: MVC orientato agli oggetti con Plone e Zope ToolkitNon solo Django: MVC orientato agli oggetti con Plone e Zope Toolkit
Non solo Django: MVC orientato agli oggetti con Plone e Zope ToolkitMaurizio Delmonte
 
Sviluppare app native per iOS
Sviluppare app native per iOSSviluppare app native per iOS
Sviluppare app native per iOSGaspare Novara
 
Sviluppare apps native per iOS - Lo Stretto Digitale
Sviluppare apps native per iOS - Lo Stretto DigitaleSviluppare apps native per iOS - Lo Stretto Digitale
Sviluppare apps native per iOS - Lo Stretto Digitalelostrettodigitale
 
Lezione 16 (2 aprile 2012)
Lezione 16 (2 aprile 2012)Lezione 16 (2 aprile 2012)
Lezione 16 (2 aprile 2012)STELITANO
 
Lezione 10 (21 marzo 2012)2
Lezione 10 (21 marzo 2012)2Lezione 10 (21 marzo 2012)2
Lezione 10 (21 marzo 2012)2STELITANO
 
What is new in C# 2018
What is new in C# 2018What is new in C# 2018
What is new in C# 2018Marco Parenzan
 
Mobile APPs con Objective-C (iOS 3.1+) - Day 01/02
Mobile APPs con Objective-C (iOS 3.1+) - Day 01/02Mobile APPs con Objective-C (iOS 3.1+) - Day 01/02
Mobile APPs con Objective-C (iOS 3.1+) - Day 01/02Alberto Pasca
 
Py a3 python-metaprogramming
Py a3 python-metaprogrammingPy a3 python-metaprogramming
Py a3 python-metaprogrammingMajong DevJfu
 
Lezione 6: Remote Method Invocation
Lezione 6: Remote Method InvocationLezione 6: Remote Method Invocation
Lezione 6: Remote Method InvocationAndrea Della Corte
 
Sviluppo Di Applicazioni Su I Os
Sviluppo Di Applicazioni Su I OsSviluppo Di Applicazioni Su I Os
Sviluppo Di Applicazioni Su I OsNoDelay Software
 
Esercitazione 1 (27 febbraio 2012)
Esercitazione 1 (27 febbraio 2012)Esercitazione 1 (27 febbraio 2012)
Esercitazione 1 (27 febbraio 2012)STELITANO
 
Diversamente Javascript: si.. può.. fare! (di Mirko Ravaioli)
Diversamente Javascript: si.. può.. fare! (di Mirko Ravaioli)Diversamente Javascript: si.. può.. fare! (di Mirko Ravaioli)
Diversamente Javascript: si.. può.. fare! (di Mirko Ravaioli)From The Front
 
.Net 4.0 Preview @ UGIdotNet
.Net 4.0 Preview @ UGIdotNet.Net 4.0 Preview @ UGIdotNet
.Net 4.0 Preview @ UGIdotNetMauro Servienti
 

Similaire à Corso Iphone in 48h (20)

[Objective-C] - Introduzione
[Objective-C] - Introduzione[Objective-C] - Introduzione
[Objective-C] - Introduzione
 
Non solo Django: MVC orientato agli oggetti con Plone e Zope Toolkit
Non solo Django: MVC orientato agli oggetti con Plone e Zope ToolkitNon solo Django: MVC orientato agli oggetti con Plone e Zope Toolkit
Non solo Django: MVC orientato agli oggetti con Plone e Zope Toolkit
 
Sviluppare app native per iOS
Sviluppare app native per iOSSviluppare app native per iOS
Sviluppare app native per iOS
 
Sviluppare apps native per iOS - Lo Stretto Digitale
Sviluppare apps native per iOS - Lo Stretto DigitaleSviluppare apps native per iOS - Lo Stretto Digitale
Sviluppare apps native per iOS - Lo Stretto Digitale
 
Vb.Net
Vb.NetVb.Net
Vb.Net
 
Inferno Limbo Italian
Inferno Limbo ItalianInferno Limbo Italian
Inferno Limbo Italian
 
Lezione 16 (2 aprile 2012)
Lezione 16 (2 aprile 2012)Lezione 16 (2 aprile 2012)
Lezione 16 (2 aprile 2012)
 
Lezione 10 (21 marzo 2012)2
Lezione 10 (21 marzo 2012)2Lezione 10 (21 marzo 2012)2
Lezione 10 (21 marzo 2012)2
 
What is new in C# 2018
What is new in C# 2018What is new in C# 2018
What is new in C# 2018
 
Corso Java
Corso JavaCorso Java
Corso Java
 
What's new in C# 7
What's new in C# 7What's new in C# 7
What's new in C# 7
 
Mobile APPs con Objective-C (iOS 3.1+) - Day 01/02
Mobile APPs con Objective-C (iOS 3.1+) - Day 01/02Mobile APPs con Objective-C (iOS 3.1+) - Day 01/02
Mobile APPs con Objective-C (iOS 3.1+) - Day 01/02
 
Corso c++
Corso c++Corso c++
Corso c++
 
Py a3 python-metaprogramming
Py a3 python-metaprogrammingPy a3 python-metaprogramming
Py a3 python-metaprogramming
 
Lezione 6: Remote Method Invocation
Lezione 6: Remote Method InvocationLezione 6: Remote Method Invocation
Lezione 6: Remote Method Invocation
 
Sviluppo Di Applicazioni Su I Os
Sviluppo Di Applicazioni Su I OsSviluppo Di Applicazioni Su I Os
Sviluppo Di Applicazioni Su I Os
 
Lezione 11 - Bridge
Lezione 11 - BridgeLezione 11 - Bridge
Lezione 11 - Bridge
 
Esercitazione 1 (27 febbraio 2012)
Esercitazione 1 (27 febbraio 2012)Esercitazione 1 (27 febbraio 2012)
Esercitazione 1 (27 febbraio 2012)
 
Diversamente Javascript: si.. può.. fare! (di Mirko Ravaioli)
Diversamente Javascript: si.. può.. fare! (di Mirko Ravaioli)Diversamente Javascript: si.. può.. fare! (di Mirko Ravaioli)
Diversamente Javascript: si.. può.. fare! (di Mirko Ravaioli)
 
.Net 4.0 Preview @ UGIdotNet
.Net 4.0 Preview @ UGIdotNet.Net 4.0 Preview @ UGIdotNet
.Net 4.0 Preview @ UGIdotNet
 

Plus de FLT.lab

FLTlab Business Presentation 2012
FLTlab Business Presentation 2012FLTlab Business Presentation 2012
FLTlab Business Presentation 2012FLT.lab
 
Google Analytics - intruduzione
Google Analytics - intruduzioneGoogle Analytics - intruduzione
Google Analytics - intruduzioneFLT.lab
 
Flt.lab Business Presentation
Flt.lab Business PresentationFlt.lab Business Presentation
Flt.lab Business PresentationFLT.lab
 
Presentazione Google Analytics
Presentazione Google AnalyticsPresentazione Google Analytics
Presentazione Google AnalyticsFLT.lab
 
Google Maps for your business
Google Maps for your businessGoogle Maps for your business
Google Maps for your businessFLT.lab
 
Presentazione Google
Presentazione GooglePresentazione Google
Presentazione GoogleFLT.lab
 

Plus de FLT.lab (6)

FLTlab Business Presentation 2012
FLTlab Business Presentation 2012FLTlab Business Presentation 2012
FLTlab Business Presentation 2012
 
Google Analytics - intruduzione
Google Analytics - intruduzioneGoogle Analytics - intruduzione
Google Analytics - intruduzione
 
Flt.lab Business Presentation
Flt.lab Business PresentationFlt.lab Business Presentation
Flt.lab Business Presentation
 
Presentazione Google Analytics
Presentazione Google AnalyticsPresentazione Google Analytics
Presentazione Google Analytics
 
Google Maps for your business
Google Maps for your businessGoogle Maps for your business
Google Maps for your business
 
Presentazione Google
Presentazione GooglePresentazione Google
Presentazione Google
 

Dernier

Eleonora Sordella, Headhunter, Coach, Formatrice e Chiara Bonomi, Training De...
Eleonora Sordella, Headhunter, Coach, Formatrice e Chiara Bonomi, Training De...Eleonora Sordella, Headhunter, Coach, Formatrice e Chiara Bonomi, Training De...
Eleonora Sordella, Headhunter, Coach, Formatrice e Chiara Bonomi, Training De...Associazione Digital Days
 
Pamela Serena Nerattini, Consulente LinkedIn e HR – “Ascoltare per crescere i...
Pamela Serena Nerattini, Consulente LinkedIn e HR – “Ascoltare per crescere i...Pamela Serena Nerattini, Consulente LinkedIn e HR – “Ascoltare per crescere i...
Pamela Serena Nerattini, Consulente LinkedIn e HR – “Ascoltare per crescere i...Associazione Digital Days
 
Luca Faccin, CEO @PerformancePPC – “Tool AI per migliorare i processi aziendali”
Luca Faccin, CEO @PerformancePPC – “Tool AI per migliorare i processi aziendali”Luca Faccin, CEO @PerformancePPC – “Tool AI per migliorare i processi aziendali”
Luca Faccin, CEO @PerformancePPC – “Tool AI per migliorare i processi aziendali”Associazione Digital Days
 
BioClima_Da gestori a custodi del territorio_Modulo 2
BioClima_Da gestori a custodi del territorio_Modulo 2BioClima_Da gestori a custodi del territorio_Modulo 2
BioClima_Da gestori a custodi del territorio_Modulo 2Etifor srl
 
Enrico Busto, Strategic Technology Advisor fondatore di @Eticrea – “Reskillin...
Enrico Busto, Strategic Technology Advisor fondatore di @Eticrea – “Reskillin...Enrico Busto, Strategic Technology Advisor fondatore di @Eticrea – “Reskillin...
Enrico Busto, Strategic Technology Advisor fondatore di @Eticrea – “Reskillin...Associazione Digital Days
 
Gianni Clocchiatti, Consulente per l’innovazione e la creatività d’impresa, F...
Gianni Clocchiatti, Consulente per l’innovazione e la creatività d’impresa, F...Gianni Clocchiatti, Consulente per l’innovazione e la creatività d’impresa, F...
Gianni Clocchiatti, Consulente per l’innovazione e la creatività d’impresa, F...Associazione Digital Days
 
Edoardo Marrone, Direttore Commerciale di @Across- “Valorizzare il tesoro nas...
Edoardo Marrone, Direttore Commerciale di @Across- “Valorizzare il tesoro nas...Edoardo Marrone, Direttore Commerciale di @Across- “Valorizzare il tesoro nas...
Edoardo Marrone, Direttore Commerciale di @Across- “Valorizzare il tesoro nas...Associazione Digital Days
 
Mario Madafferi, Innovation Manager @Progesia SRL Società Benefit – “L’Integr...
Mario Madafferi, Innovation Manager @Progesia SRL Società Benefit – “L’Integr...Mario Madafferi, Innovation Manager @Progesia SRL Società Benefit – “L’Integr...
Mario Madafferi, Innovation Manager @Progesia SRL Società Benefit – “L’Integr...Associazione Digital Days
 
Simone Bonamin, Partner di @Argo Business Solutions S.r.l. – “Online Brand Pr...
Simone Bonamin, Partner di @Argo Business Solutions S.r.l. – “Online Brand Pr...Simone Bonamin, Partner di @Argo Business Solutions S.r.l. – “Online Brand Pr...
Simone Bonamin, Partner di @Argo Business Solutions S.r.l. – “Online Brand Pr...Associazione Digital Days
 
Limmi un successo che mette radici da un solo frutto: il limone di Sicilia
Limmi un successo che mette radici da un solo frutto: il limone di SiciliaLimmi un successo che mette radici da un solo frutto: il limone di Sicilia
Limmi un successo che mette radici da un solo frutto: il limone di SiciliaLimmi
 
Giulia Pascuzzi – Coach & Business Leader – Parlare di diversità è davvero in...
Giulia Pascuzzi – Coach & Business Leader – Parlare di diversità è davvero in...Giulia Pascuzzi – Coach & Business Leader – Parlare di diversità è davvero in...
Giulia Pascuzzi – Coach & Business Leader – Parlare di diversità è davvero in...Associazione Digital Days
 

Dernier (11)

Eleonora Sordella, Headhunter, Coach, Formatrice e Chiara Bonomi, Training De...
Eleonora Sordella, Headhunter, Coach, Formatrice e Chiara Bonomi, Training De...Eleonora Sordella, Headhunter, Coach, Formatrice e Chiara Bonomi, Training De...
Eleonora Sordella, Headhunter, Coach, Formatrice e Chiara Bonomi, Training De...
 
Pamela Serena Nerattini, Consulente LinkedIn e HR – “Ascoltare per crescere i...
Pamela Serena Nerattini, Consulente LinkedIn e HR – “Ascoltare per crescere i...Pamela Serena Nerattini, Consulente LinkedIn e HR – “Ascoltare per crescere i...
Pamela Serena Nerattini, Consulente LinkedIn e HR – “Ascoltare per crescere i...
 
Luca Faccin, CEO @PerformancePPC – “Tool AI per migliorare i processi aziendali”
Luca Faccin, CEO @PerformancePPC – “Tool AI per migliorare i processi aziendali”Luca Faccin, CEO @PerformancePPC – “Tool AI per migliorare i processi aziendali”
Luca Faccin, CEO @PerformancePPC – “Tool AI per migliorare i processi aziendali”
 
BioClima_Da gestori a custodi del territorio_Modulo 2
BioClima_Da gestori a custodi del territorio_Modulo 2BioClima_Da gestori a custodi del territorio_Modulo 2
BioClima_Da gestori a custodi del territorio_Modulo 2
 
Enrico Busto, Strategic Technology Advisor fondatore di @Eticrea – “Reskillin...
Enrico Busto, Strategic Technology Advisor fondatore di @Eticrea – “Reskillin...Enrico Busto, Strategic Technology Advisor fondatore di @Eticrea – “Reskillin...
Enrico Busto, Strategic Technology Advisor fondatore di @Eticrea – “Reskillin...
 
Gianni Clocchiatti, Consulente per l’innovazione e la creatività d’impresa, F...
Gianni Clocchiatti, Consulente per l’innovazione e la creatività d’impresa, F...Gianni Clocchiatti, Consulente per l’innovazione e la creatività d’impresa, F...
Gianni Clocchiatti, Consulente per l’innovazione e la creatività d’impresa, F...
 
Edoardo Marrone, Direttore Commerciale di @Across- “Valorizzare il tesoro nas...
Edoardo Marrone, Direttore Commerciale di @Across- “Valorizzare il tesoro nas...Edoardo Marrone, Direttore Commerciale di @Across- “Valorizzare il tesoro nas...
Edoardo Marrone, Direttore Commerciale di @Across- “Valorizzare il tesoro nas...
 
Mario Madafferi, Innovation Manager @Progesia SRL Società Benefit – “L’Integr...
Mario Madafferi, Innovation Manager @Progesia SRL Società Benefit – “L’Integr...Mario Madafferi, Innovation Manager @Progesia SRL Società Benefit – “L’Integr...
Mario Madafferi, Innovation Manager @Progesia SRL Società Benefit – “L’Integr...
 
Simone Bonamin, Partner di @Argo Business Solutions S.r.l. – “Online Brand Pr...
Simone Bonamin, Partner di @Argo Business Solutions S.r.l. – “Online Brand Pr...Simone Bonamin, Partner di @Argo Business Solutions S.r.l. – “Online Brand Pr...
Simone Bonamin, Partner di @Argo Business Solutions S.r.l. – “Online Brand Pr...
 
Limmi un successo che mette radici da un solo frutto: il limone di Sicilia
Limmi un successo che mette radici da un solo frutto: il limone di SiciliaLimmi un successo che mette radici da un solo frutto: il limone di Sicilia
Limmi un successo che mette radici da un solo frutto: il limone di Sicilia
 
Giulia Pascuzzi – Coach & Business Leader – Parlare di diversità è davvero in...
Giulia Pascuzzi – Coach & Business Leader – Parlare di diversità è davvero in...Giulia Pascuzzi – Coach & Business Leader – Parlare di diversità è davvero in...
Giulia Pascuzzi – Coach & Business Leader – Parlare di diversità è davvero in...
 

Corso Iphone in 48h

  • 2. INIZIAMO! • Introduzione • Programma • Strumenti di Sviluppo • Tecniche di Sviluppo
  • 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
  • 23. Gruppi, Files, Risorce vista di Dettaglio barra di stato Xcode: Interfaccia
  • 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).
  • 26. INTERFACE BUILDER L’Ambiente di Lavoro
  • 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.
  • 28. INTERFACE BUILDER Gestore XIB Vista Interfaccia Proprietà
  • 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.
  • 30. LA PRIMA APPLICAZIONE Hello Man!
  • 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
  • 33. PRIMA APP : INTERFACCIA @interface firstapp1ViewController : UIViewController { ! UILabel *cambia; ! UIButton *pulsante; ! UITextField *scrivi; ! ! } @property (nonatomic,retain) IBOutlet UILabel *cambia; @property (nonatomic,retain) IBOutlet UIButton *pulsante; @property (nonatomic,retain) IBOutlet UITextField *scrivi; -(IBAction) pulsante_clicker; @end
  • 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

Notes de l'éditeur

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n
  23. \n
  24. \n
  25. \n
  26. \n
  27. \n
  28. \n
  29. \n
  30. \n
  31. \n
  32. \n
  33. \n
  34. \n
  35. \n
  36. \n
  37. \n
  38. \n
  39. \n
  40. \n
  41. \n