SlideShare a Scribd company logo
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

More Related Content

PDF
MS_corso base iOS iPhone_partI
MobileSchool
 
PDF
05 - Programmazione: Funzioni
Majong DevJfu
 
PDF
10 - Programmazione: Tipi di dato strutturati
Majong DevJfu
 
PDF
Corso Programmazione Java Base
K-Tech Formazione
 
PDF
03 - Programmazione: Istruzioni C++
Majong DevJfu
 
PDF
08 - Programmazione: Passaggio valori tra funzioni per riferimenti
Majong DevJfu
 
PDF
11 - Programmazione: Tipi di dato strutturati pt. 2
Majong DevJfu
 
PDF
12 - Programmazione: Array dinamici e puntatori
Majong DevJfu
 
MS_corso base iOS iPhone_partI
MobileSchool
 
05 - Programmazione: Funzioni
Majong DevJfu
 
10 - Programmazione: Tipi di dato strutturati
Majong DevJfu
 
Corso Programmazione Java Base
K-Tech Formazione
 
03 - Programmazione: Istruzioni C++
Majong DevJfu
 
08 - Programmazione: Passaggio valori tra funzioni per riferimenti
Majong DevJfu
 
11 - Programmazione: Tipi di dato strutturati pt. 2
Majong DevJfu
 
12 - Programmazione: Array dinamici e puntatori
Majong DevJfu
 

What's hot (20)

PDF
07 - Programmazione: Tipi di base e conversioni
Majong DevJfu
 
ODP
Eclipse emf
Advenias
 
PDF
C# Language Evolution
Marco Parenzan
 
PDF
Py t2 python-moduli
Majong DevJfu
 
PPT
13 Puntatori E Memoria Dinamica
guest60e9511
 
PDF
T7 librerie
Majong DevJfu
 
PPTX
Corso pratico di C# - 2013
Matteo Valoriani
 
PPTX
2011.02.19 Introducing F#
Marco Parenzan
 
PDF
Py a4 python-file
Majong DevJfu
 
PDF
Pe t4 perl-oggetti
Majong DevJfu
 
PDF
Introduzione a JavaScript
Giovanni Buffa
 
PDF
2006 Py03 intermedio
Loris Michielutti
 
PDF
JavaScript Object Oriented
Manuel Scapolan
 
PDF
06 - Programmazione: Scope Variabili
Majong DevJfu
 
PDF
C# e la Framework Class Library
Manuel Scapolan
 
PDF
Dai delegati a LINQ con C#
Manuel Scapolan
 
PDF
Pe a3 perl-metaprogramming
Majong DevJfu
 
PPTX
C#, imparare a programmare e sopravvivere
Matteo Valoriani
 
PDF
OOP with C#
Manuel Scapolan
 
PDF
Py a6 python-database
Majong DevJfu
 
07 - Programmazione: Tipi di base e conversioni
Majong DevJfu
 
Eclipse emf
Advenias
 
C# Language Evolution
Marco Parenzan
 
Py t2 python-moduli
Majong DevJfu
 
13 Puntatori E Memoria Dinamica
guest60e9511
 
T7 librerie
Majong DevJfu
 
Corso pratico di C# - 2013
Matteo Valoriani
 
2011.02.19 Introducing F#
Marco Parenzan
 
Py a4 python-file
Majong DevJfu
 
Pe t4 perl-oggetti
Majong DevJfu
 
Introduzione a JavaScript
Giovanni Buffa
 
2006 Py03 intermedio
Loris Michielutti
 
JavaScript Object Oriented
Manuel Scapolan
 
06 - Programmazione: Scope Variabili
Majong DevJfu
 
C# e la Framework Class Library
Manuel Scapolan
 
Dai delegati a LINQ con C#
Manuel Scapolan
 
Pe a3 perl-metaprogramming
Majong DevJfu
 
C#, imparare a programmare e sopravvivere
Matteo Valoriani
 
OOP with C#
Manuel Scapolan
 
Py a6 python-database
Majong DevJfu
 
Ad

Viewers also liked (11)

KEY
Corso Iphone in 48h (parte 2)
FLT.lab
 
PDF
iOS Development - A Beginner Guide
Andri Yadi
 
PDF
ios-mobile-app-development-intro
Remesh Govind M
 
KEY
iPhone Development Tools
Omar Cafini
 
PDF
Getting started with Xcode
Stephen Gilmore
 
PDF
Mela marcia
Fabio Paolucci
 
KEY
Xcode - Just do it
Stefano Zanetti
 
PDF
Introduction of Xcode
Dhaval Kaneria
 
PPT
iOS Introduction For Very Beginners
Saravanan Vijayakumar
 
PDF
Xcode 6の新機能
Shingo Sato
 
PPTX
Introduction to iOS Development
Asim Rais Siddiqui
 
Corso Iphone in 48h (parte 2)
FLT.lab
 
iOS Development - A Beginner Guide
Andri Yadi
 
ios-mobile-app-development-intro
Remesh Govind M
 
iPhone Development Tools
Omar Cafini
 
Getting started with Xcode
Stephen Gilmore
 
Mela marcia
Fabio Paolucci
 
Xcode - Just do it
Stefano Zanetti
 
Introduction of Xcode
Dhaval Kaneria
 
iOS Introduction For Very Beginners
Saravanan Vijayakumar
 
Xcode 6の新機能
Shingo Sato
 
Introduction to iOS Development
Asim Rais Siddiqui
 
Ad

Similar to Corso Iphone in 48h (20)

KEY
[Objective-C] - Introduzione
Jacopo Di Stanislao
 
KEY
[Objective-C] - 02 Properties e Costruttori
Jacopo Di Stanislao
 
PDF
iOS_Course_5
Dario Pizzuto
 
PDF
iOS_Course_6
Dario Pizzuto
 
PPTX
Corso c# - Dalle basi del linguaggio alla creazione di un'applicazione uwp
Giuseppe Cramarossa
 
PPTX
Mobile APPs con Objective-C (iOS 3.1+) - Day 01/02
Alberto Pasca
 
PDF
OOP... Object Whaaat?
Diego Giorgini
 
PPTX
Introduction to C#
Guido Magrin
 
KEY
Non solo cartoon: l’animazione nei new media, videogames, apps
Goran Djukic
 
PPSX
Regole e princìpi e tecniche di programmazione
Andrea Colleoni
 
PPT
Pensiero Orientato Agli Oggetti
Silvano Natalizi - ITIS ALESSANDRO VOLTA PERUGIA
 
PPTX
Programmazione di applicazioni UWP - Dalle basi del C# alla creazione di un’a...
Giuseppe Cramarossa
 
PPTX
ios 8 - parte 1 - intro - ita
Dario Rusignuolo
 
PDF
iOS_course_7
Dario Pizzuto
 
KEY
Progetto su iPhone - Seminario di Reti Wireless
Silvio Daminato
 
PDF
Lezione 8: Design Pattern Comportamentali
Andrea Della Corte
 
PPT
Programmazione ad oggetti
Anna_1969
 
PPT
Vb.Net
Maurizio Farina
 
PDF
Vb.net
ululallanotte
 
[Objective-C] - Introduzione
Jacopo Di Stanislao
 
[Objective-C] - 02 Properties e Costruttori
Jacopo Di Stanislao
 
iOS_Course_5
Dario Pizzuto
 
iOS_Course_6
Dario Pizzuto
 
Corso c# - Dalle basi del linguaggio alla creazione di un'applicazione uwp
Giuseppe Cramarossa
 
Mobile APPs con Objective-C (iOS 3.1+) - Day 01/02
Alberto Pasca
 
OOP... Object Whaaat?
Diego Giorgini
 
Introduction to C#
Guido Magrin
 
Non solo cartoon: l’animazione nei new media, videogames, apps
Goran Djukic
 
Regole e princìpi e tecniche di programmazione
Andrea Colleoni
 
Pensiero Orientato Agli Oggetti
Silvano Natalizi - ITIS ALESSANDRO VOLTA PERUGIA
 
Programmazione di applicazioni UWP - Dalle basi del C# alla creazione di un’a...
Giuseppe Cramarossa
 
ios 8 - parte 1 - intro - ita
Dario Rusignuolo
 
iOS_course_7
Dario Pizzuto
 
Progetto su iPhone - Seminario di Reti Wireless
Silvio Daminato
 
Lezione 8: Design Pattern Comportamentali
Andrea Della Corte
 
Programmazione ad oggetti
Anna_1969
 
Vb.net
ululallanotte
 

More from FLT.lab (6)

PPT
FLTlab Business Presentation 2012
FLT.lab
 
PPTX
Google Analytics - intruduzione
FLT.lab
 
PDF
Flt.lab Business Presentation
FLT.lab
 
PPTX
Presentazione Google Analytics
FLT.lab
 
PPSX
Google Maps for your business
FLT.lab
 
PPTX
Presentazione Google
FLT.lab
 
FLTlab Business Presentation 2012
FLT.lab
 
Google Analytics - intruduzione
FLT.lab
 
Flt.lab Business Presentation
FLT.lab
 
Presentazione Google Analytics
FLT.lab
 
Google Maps for your business
FLT.lab
 
Presentazione Google
FLT.lab
 

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

Editor's Notes