• Saltar al contenido principal
  • Skip to secondary menu
  • Saltar a la barra lateral principal
  • Saltar al pie de página
  • INICIO
  • CANAL DE YOUTUBE
  • CONTACTAR

másQteclas

Tecnología para todos

  • Podcasts
  • Noticias
  • Artículos
  • Tutoriales

iOS I. Modelo Vista Controlador (MVC)

24 marzo, 2012 por José Manuel Ramírez

Soy un programador con experiencia en el desarrollo de aplicaciones, principalmente en Java y Microsoft .NET. Llevo tiempo pensando en aprender a crear aplicaciones para el sistema operativo móvil de Apple, denominado iOS pero nunca encuentro el momento.

Siempre que me pongo a leer y estudiar material, me surgen otras cosas, exámenes, preparación de clases, etc. y al final cuando consigo volverme a poner, no me acuerdo de aspectos importantes que tengo que volver a repasar. Voy a aprovechar el blog para ir tomando notas y compartir mis avances con vosotros, en una especie de curso llamado Desarrollo de Apps para iOS. Esta es entonces la primera de una serie de publicaciones con las que pretendo mostrar cómo construir aplicaciones para dispositivos con iOS (iPhone, iPad, etc). Como prerequisito imprescindible para seguir el curso, es tener experiencia en OOP (Programación Orientada a Objetos) y conocer a fondo el Modelo Vista Controlador.

Modelo Vista Controlador

Tendrás de dominar los siguientes términos básicos:

  • Clase. Descripción o plantilla para un objeto
  • Instancia. Manifestación de una clase
  • Mensaje. Enviado a un objeto para hacerlo actuar
  • Método. Código invocado por un mensaje
  • Variable de instancia. Almacenamiento dentro de un objeto
  • Superclase/Subclase. Términos de herencia
  • Protocolo. Similar funcionalidad que una interface en Java

Para entender como se desarrollan apps para iOS, y antes de descargarnos y empezar a usar ninguna herramienta, es necesario comprender, desde un punto de vista teórico, el patrón, o estrategia de diseño, denominado Modelo Vista Controlador (MVC – Model Controler View) y cómo Apple lo implementa en su plataforma de desarrollo. Como su nombre indica, esta estrategia divide los objetos de nuestro programa en 3 «campos»:

Figura 1. Objetos pertenecientes al patrón MVC
Figura 1. Objetos pertenecientes al patrón MVC
  • Modelo. Esta es la representación específica de la información, con la cual va a operar nuestra aplicación (datos de la aplicación)
  • Controlador.  Responde a eventos, usualmente acciones del usuario, e invoca peticiones al Modelo y a la Vista (lógica de la interfaz de usuario)
  • Vista. Objeto subordinado del Controlador que es presentado al usuario de forma gráfica (ventanas y otros elementos)

Estos objetos están comunicados («hablan entre ellos») de la siguiente manera: Si observamos la figura 1, el Controlador siempre puede hablar directamente con su Modelo (1) y con su Vista (2), sin embargo, el Modelo y la Vista nunca hablan directamente el uno con el otro (3). 

Nos empiezan ahora a surgir algunas preguntas tales como ¿puede la Vista hablar con el Controlador (4)? La respuesta sería «sí, mas o menos». La comunicación entre los objetos del MVC es «ciega» y estructurada, por eso, el Controlador establece un objetivo (target) en si mismo, y repartirá acciones (action) a la Vista. Ésta, enviará la acción a este objetivo cuando suceda algún evento en la interfaz de usuario (por ejemplo una pulsación sobre un botón de la Vista), tal y como puedes apreciar en la figura 2. El Controlador realizará las tareas necesarias para responder a ese evento.

Figura 2. Comunicación entre la Vista y el Controlador por medio de target/action
Figura 2. Comunicación entre la Vista y el Controlador por medio de target/action

A veces, la Vista tiene que sincronizarse con el Controlador (para actualizar los datos de la misma), es entonces cuando éste Controlador se fija como delegado de la Vista a través de un protocolo. La Vista no es la propietaria de los datos que está mostrando, y en la mayoría de los casos es el Controlador el que actúa como origen de datos, no el Modelo. El Controlador interpreta y formatea la información del Modelo para proporcionársela a la Vista (ver figura 3). La delegación es un patrón simple de OOP, en el que un objeto actúa en nombre de, o en coordinación con otro objeto. El objeto que delega las funciones (en nuestro caso la Vista) mantiene una referencia al otro objeto, el delegado (en nuestro caso el Controlador), y en el momento apropiado envía un mensaje a dicha referencia. El mensaje informa al delegado de un evento que el objeto que delega (la Vista), está a punto de manejar o simplemente ha manejado. El delegado puede responder al mensaje mediante la actualización de la apariencia o estado de la Vista. La principal ventaja de la delegación, es que nos permite personalizar fácilmente el comportamiento de varios objetos en un objeto central.

Figura 3. La Vista delega funciones. El Controlador hace de delegado (delegate)
Figura 3. La Vista delega funciones. El Controlador hace de delegado (delegate)

La última pregunta que nos podemos hacer es si ¿puede el Modelo hablar directamente con el Controlador? En este caso la respuesta es rotunda, NO, el Modelo es independiente de la Interfaz de Usuario. Entonces, ¿qué ocurriría si el Modelo tiene información actualizada y es necesario que el Controlador lo sepa? En este caso, el Modelo utiliza una especie de «emisora de radio» con un mecanismo  de transmisión. Así, los Controladores (u otros Modelos) pueden «sintonizar» las cosas que les interesen. Apple utiliza Notificaciones y KVO (Key-Value Observing) que permite a los objetos que se les notifique de los cambios en las propiedades de otros objetos.

Figura 4. Notificaciones del Modelo hacia el controlador
Figura 4. Notificaciones del Modelo hacia el controlador

Espero que esta introducción teórica, pero muy importante para posteriores temas del curso, os haya parecido interesante. En la próxima publicación, veremos una pequeña introducción al lenguaje Objetive-C, pieza clave para adentrarnos en el mundo de la programación para iOS. En posteriores entregas, veremos como implementar todo esto con Objetive-C.

Como es de bien nacido ser agradecido, mi agradecimiento a la gente de la Universidad de Stanford, que es la espina dorsal de este curso.

Sin su material, sería más complicado la elaboración de estos artículos.

Adios, os!

Publicado en: Tutoriales Etiquetado como: Programación

Acerca de José Manuel Ramírez

🚀 Explorador de gadgets al límite | 🎥 Sinceridad en cada review | 💡 Descubre la magia detrás de cada dispositivo conmigo | 🛠️ Consejos, trucos y opiniones sin filtro. Si te apasiona la tecnología como a mí, este es tu canal #Gadgets #TechLover #OpinionesReales

Barra lateral principal

Canal de Youtube

🛍 Enlaces patrocinados

Haz tu compra en estos enlaces patrocinados y colabora con la web sin coste adicional para ti. ¡Gracias!

Chuches en Amazon Chuches en Aliexpress Chuches en Banggood Chuches en Geekbuying

Mi libro


Libro servidores NAS

banner

Footer

másQteclas es la web donde encontrarás mucha información relacionada con la tecnología en lo que a hardware y software se refiere. Tendrás reviews de productos, tutoriales paso a paso, podcasts diarios, vídeos en Youtube, noticias tecnológicas y mucho, mucho más. ¡Únete a la comunidad masqueteclera!

Información:

  • Quién soy
  • Política de cookies
  • Política de privacidad
  • Suscripción a la lista de correo
  • Contactar

Busca en la web …

  • Facebook
  • Instagram
  • Telegram
  • Twitter

Copyright © · másQteclas 2021