SlideShare uma empresa Scribd logo
1 de 13
Baixar para ler offline
Desenvolvimento de
aplicativos mobile para iOS
      Aula 2 - MVC e View Controllers
MVC

• Padrão de projeto: Model-View-Controller
• Usado para tornar objetos mais
  reutilizáveis, tornando seu código mais
  extensível e resposivo à mudanças
Papeis e
     relacionamentos

• Três tipos de objetos:
  Models, Views e Controllers
Model

• Representam conhecimento
• Encapsulam dados importantes
• Tentem a serem reutilizáveis
• Não tem conexão direta com a interface
  do usuário
View
• Apresentam informação para o usuário
• Permite edição dos dados (models)
• Não pode ser responsável por gravar dados
• Pode usar cache para performance
• Pode mostrar parte de um ou vários models
• Tem que ser avisada de mudanças no model
Controller
• Age como um intermediário entre views e
  models
• Configura e coordena ações do usuário
• Gerencia o ciclo de vida dos objetos
• Model notifica que foi alterado e o
  controller notifica views para se alterar
Outlets

• É uma variável de instância do objeto
• Configurada através do Interface Builder
• Essas variáveis são inicializadas
  apropriadamente durante a execução
Delegate
• Delegate objects agem em nome de, ou em
  coordenação com outro objeto durante
  um evento
• Um objeto se registra como delegate de
  outro e implementa métodos que serão
  chamados na ocorrência de algum evento
• Eventos: will, did, should
DataSource


• São como delegates, mas ao invés de
  controlar o fluxo de eventos, controlam o
  fluxo de dados
Target-Action

• Representa a intenção do usuário em fazer
  algo na view, como clicar em um botão
• O objeto executa uma action no objeto
  target
Notifications
• Quando um model quer disparar um
  evento que pode ser tratado por diferentes
  objetos
• Objetos se registram como listeners da
  notification
• Notifications são disparadas através do
  Notification Center
Key Value Observer
        (KVO)

• Ser avisado quando uma propriedade de
  um model object for alterada
• Registra-se como listener da propriedade
Vamos fazer uma
  calculadora?

Mais conteúdo relacionado

Semelhante a Desenvolvimento iOS - Aula 2

342336684-GSI030-Aula08-projetoImplementacao.pdf
342336684-GSI030-Aula08-projetoImplementacao.pdf342336684-GSI030-Aula08-projetoImplementacao.pdf
342336684-GSI030-Aula08-projetoImplementacao.pdfGabrielMarchesan
 
Padrões de Projeto - Observer
Padrões de Projeto - ObserverPadrões de Projeto - Observer
Padrões de Projeto - ObserverJuliana Cindra
 
Mediator Padrão de Projeto
Mediator Padrão de ProjetoMediator Padrão de Projeto
Mediator Padrão de ProjetoFlávio França
 
Entendendo a Tríade Model-View-Controller (MVC) Utilizando Padrões de Projeto...
Entendendo a Tríade Model-View-Controller (MVC) Utilizando Padrões de Projeto...Entendendo a Tríade Model-View-Controller (MVC) Utilizando Padrões de Projeto...
Entendendo a Tríade Model-View-Controller (MVC) Utilizando Padrões de Projeto...Lucas Furtado de Oliveira
 
Arquitetura mix thiagoboufleuhr
Arquitetura mix thiagoboufleuhrArquitetura mix thiagoboufleuhr
Arquitetura mix thiagoboufleuhrThiago Boufleuhr
 
Padrão de Projeto Observer
Padrão de Projeto ObserverPadrão de Projeto Observer
Padrão de Projeto ObserverLuiza Uira
 
Agentes inteligentes
Agentes inteligentesAgentes inteligentes
Agentes inteligentesVanessa Biff
 
Linguagem de programação introdução v1
Linguagem de programação   introdução v1Linguagem de programação   introdução v1
Linguagem de programação introdução v1Carlos Melo
 
Do oo para_funcional
Do oo para_funcionalDo oo para_funcional
Do oo para_funcionalPedro Correia
 
Sistemas Multiagentes e Sistemas Distribuídos Sensíveis ao Contexto
Sistemas Multiagentes e Sistemas Distribuídos Sensíveis ao ContextoSistemas Multiagentes e Sistemas Distribuídos Sensíveis ao Contexto
Sistemas Multiagentes e Sistemas Distribuídos Sensíveis ao ContextoHelio Henrique L. C. Monte-Alto
 
Linguagens de programação 12º M11
Linguagens de programação 12º M11Linguagens de programação 12º M11
Linguagens de programação 12º M11Luis Ferreira
 
5507 os principais design patterns
5507   os principais design patterns5507   os principais design patterns
5507 os principais design patternsAndre Baltieri
 
Agent based software development
Agent based software developmentAgent based software development
Agent based software developmentAlan Prando
 
Seminario sma,abms e netlogo
Seminario   sma,abms e netlogoSeminario   sma,abms e netlogo
Seminario sma,abms e netlogoDiogo Winck
 
Paradigma de orientação a objetos -
Paradigma de orientação a objetos - Paradigma de orientação a objetos -
Paradigma de orientação a objetos - André Victor
 
Padrões de projetos
Padrões de projetosPadrões de projetos
Padrões de projetosGustavo Souza
 
JSF com Primefaces
JSF com PrimefacesJSF com Primefaces
JSF com PrimefacesFabio Noth
 

Semelhante a Desenvolvimento iOS - Aula 2 (20)

Padrões de Projeto para Jogos
Padrões de Projeto para JogosPadrões de Projeto para Jogos
Padrões de Projeto para Jogos
 
342336684-GSI030-Aula08-projetoImplementacao.pdf
342336684-GSI030-Aula08-projetoImplementacao.pdf342336684-GSI030-Aula08-projetoImplementacao.pdf
342336684-GSI030-Aula08-projetoImplementacao.pdf
 
Padrões de Projeto - Observer
Padrões de Projeto - ObserverPadrões de Projeto - Observer
Padrões de Projeto - Observer
 
Mediator Padrão de Projeto
Mediator Padrão de ProjetoMediator Padrão de Projeto
Mediator Padrão de Projeto
 
Entendendo a Tríade Model-View-Controller (MVC) Utilizando Padrões de Projeto...
Entendendo a Tríade Model-View-Controller (MVC) Utilizando Padrões de Projeto...Entendendo a Tríade Model-View-Controller (MVC) Utilizando Padrões de Projeto...
Entendendo a Tríade Model-View-Controller (MVC) Utilizando Padrões de Projeto...
 
Arquitetura mix thiagoboufleuhr
Arquitetura mix thiagoboufleuhrArquitetura mix thiagoboufleuhr
Arquitetura mix thiagoboufleuhr
 
Padrão de Projeto Observer
Padrão de Projeto ObserverPadrão de Projeto Observer
Padrão de Projeto Observer
 
Agentes inteligentes
Agentes inteligentesAgentes inteligentes
Agentes inteligentes
 
Linguagem de programação introdução v1
Linguagem de programação   introdução v1Linguagem de programação   introdução v1
Linguagem de programação introdução v1
 
Padroes de Projeto
Padroes de ProjetoPadroes de Projeto
Padroes de Projeto
 
Naked Objects
Naked ObjectsNaked Objects
Naked Objects
 
Do oo para_funcional
Do oo para_funcionalDo oo para_funcional
Do oo para_funcional
 
Sistemas Multiagentes e Sistemas Distribuídos Sensíveis ao Contexto
Sistemas Multiagentes e Sistemas Distribuídos Sensíveis ao ContextoSistemas Multiagentes e Sistemas Distribuídos Sensíveis ao Contexto
Sistemas Multiagentes e Sistemas Distribuídos Sensíveis ao Contexto
 
Linguagens de programação 12º M11
Linguagens de programação 12º M11Linguagens de programação 12º M11
Linguagens de programação 12º M11
 
5507 os principais design patterns
5507   os principais design patterns5507   os principais design patterns
5507 os principais design patterns
 
Agent based software development
Agent based software developmentAgent based software development
Agent based software development
 
Seminario sma,abms e netlogo
Seminario   sma,abms e netlogoSeminario   sma,abms e netlogo
Seminario sma,abms e netlogo
 
Paradigma de orientação a objetos -
Paradigma de orientação a objetos - Paradigma de orientação a objetos -
Paradigma de orientação a objetos -
 
Padrões de projetos
Padrões de projetosPadrões de projetos
Padrões de projetos
 
JSF com Primefaces
JSF com PrimefacesJSF com Primefaces
JSF com Primefaces
 

Mais de Saulo Arruda

Oportunidade para desenvolvedores na era das startups
Oportunidade para desenvolvedores na era das startupsOportunidade para desenvolvedores na era das startups
Oportunidade para desenvolvedores na era das startupsSaulo Arruda
 
Growth Hacking Mobile - BRAPPS 2014
Growth Hacking Mobile - BRAPPS 2014Growth Hacking Mobile - BRAPPS 2014
Growth Hacking Mobile - BRAPPS 2014Saulo Arruda
 
Growth hacking - Jera Retrospectiva
Growth hacking  - Jera RetrospectivaGrowth hacking  - Jera Retrospectiva
Growth hacking - Jera RetrospectivaSaulo Arruda
 
#CPBR7 - Métricas para startups
#CPBR7 - Métricas para startups#CPBR7 - Métricas para startups
#CPBR7 - Métricas para startupsSaulo Arruda
 
StartupFarm métricas
StartupFarm métricasStartupFarm métricas
StartupFarm métricasSaulo Arruda
 
Mande seu chefe pentear macaco
Mande seu chefe pentear macacoMande seu chefe pentear macaco
Mande seu chefe pentear macacoSaulo Arruda
 
Sthart - Desenvolvimento Web e Mobile
Sthart - Desenvolvimento Web e MobileSthart - Desenvolvimento Web e Mobile
Sthart - Desenvolvimento Web e MobileSaulo Arruda
 
Como ganhar dinheiro com aplicativos mobile?
Como ganhar dinheiro com aplicativos mobile?Como ganhar dinheiro com aplicativos mobile?
Como ganhar dinheiro com aplicativos mobile?Saulo Arruda
 
Startups - É programando que se empreende
Startups - É programando que se empreendeStartups - É programando que se empreende
Startups - É programando que se empreendeSaulo Arruda
 
TDC 2012 - Querem me comprar, e agora?
TDC 2012 - Querem me comprar, e agora?TDC 2012 - Querem me comprar, e agora?
TDC 2012 - Querem me comprar, e agora?Saulo Arruda
 
Empreendedorismo Agil
Empreendedorismo AgilEmpreendedorismo Agil
Empreendedorismo AgilSaulo Arruda
 
Minicurso Objective-C
Minicurso Objective-CMinicurso Objective-C
Minicurso Objective-CSaulo Arruda
 
Aprendendo a errar ou errando para aprender
Aprendendo a errar ou errando para aprenderAprendendo a errar ou errando para aprender
Aprendendo a errar ou errando para aprenderSaulo Arruda
 
Todo mundo nasce Agil
Todo mundo nasce AgilTodo mundo nasce Agil
Todo mundo nasce AgilSaulo Arruda
 
Workshop Desenvolvimento Agil
Workshop Desenvolvimento AgilWorkshop Desenvolvimento Agil
Workshop Desenvolvimento AgilSaulo Arruda
 

Mais de Saulo Arruda (20)

Oportunidade para desenvolvedores na era das startups
Oportunidade para desenvolvedores na era das startupsOportunidade para desenvolvedores na era das startups
Oportunidade para desenvolvedores na era das startups
 
Growth Hacking Mobile - BRAPPS 2014
Growth Hacking Mobile - BRAPPS 2014Growth Hacking Mobile - BRAPPS 2014
Growth Hacking Mobile - BRAPPS 2014
 
Growth hacking - Jera Retrospectiva
Growth hacking  - Jera RetrospectivaGrowth hacking  - Jera Retrospectiva
Growth hacking - Jera Retrospectiva
 
#CPBR7 - Métricas para startups
#CPBR7 - Métricas para startups#CPBR7 - Métricas para startups
#CPBR7 - Métricas para startups
 
StartupFarm métricas
StartupFarm métricasStartupFarm métricas
StartupFarm métricas
 
Mande seu chefe pentear macaco
Mande seu chefe pentear macacoMande seu chefe pentear macaco
Mande seu chefe pentear macaco
 
Sthart - Desenvolvimento Web e Mobile
Sthart - Desenvolvimento Web e MobileSthart - Desenvolvimento Web e Mobile
Sthart - Desenvolvimento Web e Mobile
 
Como ganhar dinheiro com aplicativos mobile?
Como ganhar dinheiro com aplicativos mobile?Como ganhar dinheiro com aplicativos mobile?
Como ganhar dinheiro com aplicativos mobile?
 
Startups - É programando que se empreende
Startups - É programando que se empreendeStartups - É programando que se empreende
Startups - É programando que se empreende
 
SCRUM - Aula 2
SCRUM - Aula 2SCRUM - Aula 2
SCRUM - Aula 2
 
SCRUM - Aula1
SCRUM - Aula1SCRUM - Aula1
SCRUM - Aula1
 
TDC 2012 - Querem me comprar, e agora?
TDC 2012 - Querem me comprar, e agora?TDC 2012 - Querem me comprar, e agora?
TDC 2012 - Querem me comprar, e agora?
 
Empreendedorismo Agil
Empreendedorismo AgilEmpreendedorismo Agil
Empreendedorismo Agil
 
Minicurso Ruby
Minicurso RubyMinicurso Ruby
Minicurso Ruby
 
Minicurso Objective-C
Minicurso Objective-CMinicurso Objective-C
Minicurso Objective-C
 
Rails nas Nuvens
Rails nas NuvensRails nas Nuvens
Rails nas Nuvens
 
Aprendendo a errar ou errando para aprender
Aprendendo a errar ou errando para aprenderAprendendo a errar ou errando para aprender
Aprendendo a errar ou errando para aprender
 
JBoss TRE - Aula1
JBoss TRE - Aula1JBoss TRE - Aula1
JBoss TRE - Aula1
 
Todo mundo nasce Agil
Todo mundo nasce AgilTodo mundo nasce Agil
Todo mundo nasce Agil
 
Workshop Desenvolvimento Agil
Workshop Desenvolvimento AgilWorkshop Desenvolvimento Agil
Workshop Desenvolvimento Agil
 

Desenvolvimento iOS - Aula 2

  • 1. Desenvolvimento de aplicativos mobile para iOS Aula 2 - MVC e View Controllers
  • 2. MVC • Padrão de projeto: Model-View-Controller • Usado para tornar objetos mais reutilizáveis, tornando seu código mais extensível e resposivo à mudanças
  • 3. Papeis e relacionamentos • Três tipos de objetos: Models, Views e Controllers
  • 4. Model • Representam conhecimento • Encapsulam dados importantes • Tentem a serem reutilizáveis • Não tem conexão direta com a interface do usuário
  • 5. View • Apresentam informação para o usuário • Permite edição dos dados (models) • Não pode ser responsável por gravar dados • Pode usar cache para performance • Pode mostrar parte de um ou vários models • Tem que ser avisada de mudanças no model
  • 6. Controller • Age como um intermediário entre views e models • Configura e coordena ações do usuário • Gerencia o ciclo de vida dos objetos • Model notifica que foi alterado e o controller notifica views para se alterar
  • 7. Outlets • É uma variável de instância do objeto • Configurada através do Interface Builder • Essas variáveis são inicializadas apropriadamente durante a execução
  • 8. Delegate • Delegate objects agem em nome de, ou em coordenação com outro objeto durante um evento • Um objeto se registra como delegate de outro e implementa métodos que serão chamados na ocorrência de algum evento • Eventos: will, did, should
  • 9. DataSource • São como delegates, mas ao invés de controlar o fluxo de eventos, controlam o fluxo de dados
  • 10. Target-Action • Representa a intenção do usuário em fazer algo na view, como clicar em um botão • O objeto executa uma action no objeto target
  • 11. Notifications • Quando um model quer disparar um evento que pode ser tratado por diferentes objetos • Objetos se registram como listeners da notification • Notifications são disparadas através do Notification Center
  • 12. Key Value Observer (KVO) • Ser avisado quando uma propriedade de um model object for alterada • Registra-se como listener da propriedade
  • 13. Vamos fazer uma calculadora?

Notas do Editor

  1. \n
  2. \n
  3. Todos os objetos da aplicação serão de um dos três tipos\n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n