Programação em Apple iOS

  Cursos de Verão na Católica 2011




    Jorge C. S. Cardoso, Luís Gustavo Martins
  jorgecardoso@ieee.org, lmartins@porto.ucp.pt
Apple iOS SDK
● Software Development Kit (SDK) usado no desenvolvimento
  de aplicações
    ○ para iPhone, iPad, iPod Touch (i.e. dispositivos iOS)
    ○ Gratuitamente disponível para download em:

      http://developer.apple.com/technologies/tools/xcode.html

● Inclui:
    ○ XCode IDE (Editor, Organizador de Projectos, …)
    ○ Interface Builder (IB)
    ○ iPhone / iPad Simulator
    ○ Compilador e Linker
            ■ GCC e LLVM, para C, C++, ObjC 2.0
    ○ Debugger, Instruments, …
    ○ Mac e iOS Cocoa / Cocoa Touch APIs
Apple iOS SDK
● Xcode 3
   ○ Ambiente integrado de desenvolvimento (IDE) de
     aplicações
       ■ para iPhone, iPad, iPod Touch e Mac
       ■ Gratuíto e disponível para download em:

    http://developer.apple.com/technologies/tools/xcode.html
Apple iOS SDK
● Apple Application Programming Interfaces (APIs)




   http://www.stanford.edu/class/cs193p/cgi-bin/drupal/downloads-2010-winter
Apple iOS SDK
● Apple Application Programming Interfaces (APIs)




    http://www.stanford.edu/class/cs193p/cgi-bin/drupal/downloads-2010-winter
Apple iOS SDK
● Apple Application Programming Interfaces (APIs)




    http://www.stanford.edu/class/cs193p/cgi-bin/drupal/downloads-2010-winter
Apple iOS SDK
● Apple Application Programming Interfaces (APIs)




    http://www.stanford.edu/class/cs193p/cgi-bin/drupal/downloads-2010-winter
Apple iOS SDK
● Apple Application Programming Interfaces (APIs)




    http://www.stanford.edu/class/cs193p/cgi-bin/drupal/downloads-2010-winter
Apple iOS SDK
● Cocoa Touch Frameworks
   ○ Bibliotecas de objectos, métodos, recursos, documentação




   http://www.stanford.edu/class/cs193p/cgi-bin/drupal/downloads-2010-winter
Desenvolvendo para iOS




  http://www.stanford.edu/class/cs193p/cgi-bin/drupal/downloads-2010-winter
Delegation
 ● É um "Design Pattern" em que um determinado objecto
   "delega" uma determinada tarefa num outro objecto
    ○ O objecto em que é delegada essa tarefa é conhecido como
      "delegate object"
    ○ O delegate object é "especialista" naquela tarefa

                                                                                Delegate
                                                                                 Object
         Some
         Object




                                                     A Delegation é uma alternativa à SubClassing
                                                                      (herança)


    http://www.stanford.edu/class/cs193p/cgi-bin/drupal/downloads-2010-winter
Model-View-Controler
 ● É uma arquitectura de software em que as APIs Cocoa e
   Cocoa Touch são baseadas




     http://www.stanford.edu/class/cs193p/cgi-bin/drupal/downloads-2010-winter
Model-View-Controler
 ● Model
    ○ Gere os dados e estado da aplicação
    ○ Totalmente independente da Interface Gráfica (GUI) da aplicação
    ○ Pode guardar os dados de forma persistente (e.g. num ficheiro em na
      memória FLASH)
    ○ Reutilizável (em diferentes "Views")

 ● View
    ○ Apresenta os dados (i.e. o "Model") ao utilizador através de uma GUI
    ○ Permite ao utilizador manipular e interagir com os dados (i.e. o "Model")
    ○ Não armazena dados (exceptuando caches)
    ○ Facilmente reutilizável e possível de ser configurado para representar
      diferentes dados

 ● Controller
    ○ Intermediário entre o Model e a View
    ○ Actualiza a View quando o Model sofre alterações
    ○ Actualiza o Model quando a View sofre alterações
    ○ É tipicamente aqui que a "lógica" da aplicação é implementada
Model-View-Controler
 ● O Model e a View não comunicam directamente entre elas!!
    ○ O Model nada sabe sobre a View
    ○ A View nada sabe sobre o Model
    ○ O Controller sabe sobre os dois, e é o intermediário entre a View
      e o Model




      http://www.stanford.edu/class/cs193p/cgi-bin/drupal/downloads-2010-winter
Model-View-Controler
Interface Builder: Actions e Outlets




        http://www.stanford.edu/class/cs193p/cgi-bin/drupal/downloads-2010-winter
Hello World iPhone
A Label and a Slider :-)

  - Ligação da View ao Model
     - Controller

  - Interface Builder
     - IBOutlet
     - IBAction

    LIVE CODING DEMO
Hello World iPhone
A Label and a Slider :-)




       http://www.stanford.edu/class/cs193p/cgi-bin/drupal/downloads-2010-winter
Hello World iPhone
A Label and a Slider :-)




        http://www.stanford.edu/class/cs193p/cgi-bin/drupal/downloads-2010-winter
Exemplo
iOS App - FractionCalculator
 - Uso do classe Fraction criada antes
    - é o nosso Model


 - Criação da GUI (a View)
 - Criação do Controller e do Delegate



Live Coding Demo! :-)
Bibliografia
http://www.amazon.co.uk/Learning-iPhone-Programming-Xcode-
Store/dp/0596806434/ref=sr_1_1?
ie=UTF8&qid=1315406330&sr=8-1




  http://www.amazon.co.uk/Programming-Objective-C-2-0-
  Developers-Library/dp/0321566157/ref=sr_1_20?
  ie=UTF8&qid=1315406508&sr=8-20
Fim

Cursos de Verão na Católica 2011
     http://porto.ucp.pt/cvc/

  Jorge C. S. Cardoso, Luís Gustavo Martins
jorgecardoso@ieee.org, lmartins@porto.ucp.pt



http://slideshare.net/jorgecardoso (tag: cvc2011)

Introdução à programação em Android e iOS - iOS

  • 1.
    Programação em AppleiOS Cursos de Verão na Católica 2011 Jorge C. S. Cardoso, Luís Gustavo Martins jorgecardoso@ieee.org, lmartins@porto.ucp.pt
  • 2.
    Apple iOS SDK ●Software Development Kit (SDK) usado no desenvolvimento de aplicações ○ para iPhone, iPad, iPod Touch (i.e. dispositivos iOS) ○ Gratuitamente disponível para download em: http://developer.apple.com/technologies/tools/xcode.html ● Inclui: ○ XCode IDE (Editor, Organizador de Projectos, …) ○ Interface Builder (IB) ○ iPhone / iPad Simulator ○ Compilador e Linker ■ GCC e LLVM, para C, C++, ObjC 2.0 ○ Debugger, Instruments, … ○ Mac e iOS Cocoa / Cocoa Touch APIs
  • 3.
    Apple iOS SDK ●Xcode 3 ○ Ambiente integrado de desenvolvimento (IDE) de aplicações ■ para iPhone, iPad, iPod Touch e Mac ■ Gratuíto e disponível para download em: http://developer.apple.com/technologies/tools/xcode.html
  • 4.
    Apple iOS SDK ●Apple Application Programming Interfaces (APIs) http://www.stanford.edu/class/cs193p/cgi-bin/drupal/downloads-2010-winter
  • 5.
    Apple iOS SDK ●Apple Application Programming Interfaces (APIs) http://www.stanford.edu/class/cs193p/cgi-bin/drupal/downloads-2010-winter
  • 6.
    Apple iOS SDK ●Apple Application Programming Interfaces (APIs) http://www.stanford.edu/class/cs193p/cgi-bin/drupal/downloads-2010-winter
  • 7.
    Apple iOS SDK ●Apple Application Programming Interfaces (APIs) http://www.stanford.edu/class/cs193p/cgi-bin/drupal/downloads-2010-winter
  • 8.
    Apple iOS SDK ●Apple Application Programming Interfaces (APIs) http://www.stanford.edu/class/cs193p/cgi-bin/drupal/downloads-2010-winter
  • 9.
    Apple iOS SDK ●Cocoa Touch Frameworks ○ Bibliotecas de objectos, métodos, recursos, documentação http://www.stanford.edu/class/cs193p/cgi-bin/drupal/downloads-2010-winter
  • 10.
    Desenvolvendo para iOS http://www.stanford.edu/class/cs193p/cgi-bin/drupal/downloads-2010-winter
  • 11.
    Delegation ● Éum "Design Pattern" em que um determinado objecto "delega" uma determinada tarefa num outro objecto ○ O objecto em que é delegada essa tarefa é conhecido como "delegate object" ○ O delegate object é "especialista" naquela tarefa Delegate Object Some Object A Delegation é uma alternativa à SubClassing (herança) http://www.stanford.edu/class/cs193p/cgi-bin/drupal/downloads-2010-winter
  • 12.
    Model-View-Controler ● Éuma arquitectura de software em que as APIs Cocoa e Cocoa Touch são baseadas http://www.stanford.edu/class/cs193p/cgi-bin/drupal/downloads-2010-winter
  • 13.
    Model-View-Controler ● Model ○ Gere os dados e estado da aplicação ○ Totalmente independente da Interface Gráfica (GUI) da aplicação ○ Pode guardar os dados de forma persistente (e.g. num ficheiro em na memória FLASH) ○ Reutilizável (em diferentes "Views") ● View ○ Apresenta os dados (i.e. o "Model") ao utilizador através de uma GUI ○ Permite ao utilizador manipular e interagir com os dados (i.e. o "Model") ○ Não armazena dados (exceptuando caches) ○ Facilmente reutilizável e possível de ser configurado para representar diferentes dados ● Controller ○ Intermediário entre o Model e a View ○ Actualiza a View quando o Model sofre alterações ○ Actualiza o Model quando a View sofre alterações ○ É tipicamente aqui que a "lógica" da aplicação é implementada
  • 14.
    Model-View-Controler ● OModel e a View não comunicam directamente entre elas!! ○ O Model nada sabe sobre a View ○ A View nada sabe sobre o Model ○ O Controller sabe sobre os dois, e é o intermediário entre a View e o Model http://www.stanford.edu/class/cs193p/cgi-bin/drupal/downloads-2010-winter
  • 15.
    Model-View-Controler Interface Builder: Actionse Outlets http://www.stanford.edu/class/cs193p/cgi-bin/drupal/downloads-2010-winter
  • 16.
    Hello World iPhone ALabel and a Slider :-) - Ligação da View ao Model - Controller - Interface Builder - IBOutlet - IBAction LIVE CODING DEMO
  • 17.
    Hello World iPhone ALabel and a Slider :-) http://www.stanford.edu/class/cs193p/cgi-bin/drupal/downloads-2010-winter
  • 18.
    Hello World iPhone ALabel and a Slider :-) http://www.stanford.edu/class/cs193p/cgi-bin/drupal/downloads-2010-winter
  • 19.
    Exemplo iOS App -FractionCalculator - Uso do classe Fraction criada antes - é o nosso Model - Criação da GUI (a View) - Criação do Controller e do Delegate Live Coding Demo! :-)
  • 20.
  • 21.
    Fim Cursos de Verãona Católica 2011 http://porto.ucp.pt/cvc/ Jorge C. S. Cardoso, Luís Gustavo Martins jorgecardoso@ieee.org, lmartins@porto.ucp.pt http://slideshare.net/jorgecardoso (tag: cvc2011)