22
Objective-C y la programación en iPhone Programación Avanzada

Iphone

Embed Size (px)

Citation preview

Page 1: Iphone

Objective-C y la programación en iPhone

Programación Avanzada

Page 2: Iphone

Contenido

  Que es Objective-C

  Características del lenguaje

  Semejanzas con Java

  iPhone

  Cococa Touch

  Ejemplos

Page 3: Iphone

Que es Objective-C

  Es una extensión de C (compatible hacia atrás) para hacerlo orientado a objetos, basado en Smaltalk.

  Mas limpio, pequeño y rápido de aprender que C++.

  Lenguaje utilizado por Mac OS X.

  No esta estandarizado por ningún organismo internacional, Apple y NEXTSTEP son quienes han contribuido en crear este lenguaje. Ambos trabajan en mantener y mejorarlo.

Page 4: Iphone

Características

  Es un lenguaje muy dinámico. Muchas decisiones se toman en tiempo de ejecución.

  5 tipos de dinamismo:   Memoria Dinámica. Los objetos siempre se crean en memoria

dinámica.   Tipos dinámicos. El runtime se encarga detecta y usa el tipo

de variables   Introspección. Podemos conocer la estructura de un objeto en

tiempo de ejecución.   Enlace dinámico. Envío de mensajes por llamada a función

(Polimorfismo). Se encarga el runtime.   Carga dinámica. Cargar clases en función de su uso. Hacen

programas extensibles (Plug-ins)

Page 5: Iphone

Clases

  Consta de una interface (.h) y una implementación (.m).

  Las clases por lo general derivan de NSObject, para poder usar las ventajas del runtime de Objective-C. Java nos obliga a ello.

  Las variables a diferencia de C++ deben ser punteros a objetos. Aquí no existe variables de clase (static). Las variables de instancia, de clase y módulos pueden tener el mismo nombre.

Page 6: Iphone

Ejemplo de interface

Page 7: Iphone

Ejemplo de implementación

Page 8: Iphone

Instanciar objetos

  Se debe llamar a los métodos alloc e init:   Punto *p = [[Punto alloc] init]

  Alloc reserva memoria.

  Init es el constructor, inicializa las variables de instancia

  También se podría utilizar new ya que ambas operaciones son muy comunes.

  Tipos dinámicos (punteros): id p = [Punto new]

  Para liberar objetos: [p release]

Page 9: Iphone

Métodos

  Nivel. + para métodos de clases, y – para métodos de instancia

  Tipo de retorno, si tiene, entre paréntesis. Por defecto retorna id.

  Nombre.

  Parámetros. Hereda de Smalltalk. Tantos parámetros como haya. A los parámetros además del tipo y y variable se puede etiquetar-> Código mejor documentado.

Ej: [pedido anadeCliente:1 nombre:"Juan" edad:23 saldo:260];

Page 10: Iphone

Herencia

  Todas las clases derivan de la clase base NSObject, o de la clase de GNU Object. No se recomienda hacer clases base.

  Operador self y super = que this y super de java.

  Podemos modificar self al contrario que this que es de solo lectura. Es muy común ver:

Page 11: Iphone

Métodos factory

  El compilador de Objective-C crea objetos que representan clases, esto proporciona grandes ventajas a la hora de crear patrones de diseño.

  Métodos que combinan creación e iniciación y empiezan por el nombre +clase… Por ejemplo NSString posee:   + (id)stringWithCString:(const char*)cString

encoding:(NSStringEncoding)enc

  Útil cuando la creación depende de la iniciación. Ej: no se conoce la memoria a reservar hasta que no se conoce que fichero se quiere leer

Page 12: Iphone

Gestión de memoria

  Gestión de memoria manual. Por cuenta del programador como C++

  Recolector de basura como Java. Penaliza el rendimiento. Disponible en Leopard

  Mantener la cuenta de referencias de un objeto. Necesita la colaboración del programador. retain incrementa la cuenta, release la decrementa y dealloc libera.

Page 13: Iphone

Categorías

  Permiten modificar una clase aunque no tengamos el código. Se diferencia con la herencia en que nos permite modificar nodos interiores de la jerarquía de clases. Usos:   Para clases grandes, particionarlas. Reparte trabajo tanto

para el compilador como para los programadores   Añadir nuevos métodos a clases de fabricantes. Ej:

métodos de búsqueda para NSArray.   Diferenciar API privada y API pública. Apple lo hace con los

Framework destinados al SDK para iPhone.   Declarar protocolos informales.

Page 14: Iphone

Protocolos

  Declaran métodos no asociados con ninguna clase. Cualquier clase los puede implementar. Ej en interfaz gráfica:   - (void)mouseDown:(NSEvent*)theEvent;   - (void)mouseDragged:(NSEvent*)theEvent;   - (void)mouseUp:(NSEvent*)theEvent;

  Separa jerarquía de clases con funcionalidad común.

@interface Punto : NSObject <Imprimible, Dibujable>

Page 15: Iphone

Propiedades

  Se introdujo a partir de la versión de Leopard de Mac OS X.

  Consiste en la definición de métodos ‘get’ y ‘set’.

  Estas ayudan a mejorar la productividad del programador. Además permiten personalizar la forma de acceso a estas.

  Ej: En la interface: @property(readonly) NSInteger x; en la implementación: @synthesize x; esta directiva nos garantiza robustez en accesos concurrentes.

  Otros modificadores: retain, readwrite, nonatomic, etc

Page 16: Iphone

Introducción a la Programación en iPhone

  Primer dispositivo móvil de Apple.

  Utiliza el sistema operativo iPhone OS, construido desde el conocimiento y tecnología de Mac OS X.

  Además incorpora acelerómetro, localización por GPS, Cámara e interfaz Multi-touch.

Page 17: Iphone

Características

  Eventos Multi-Touch

  Seguridad con encriptación, certificados, etc.

  Internacionalización de Software

  Comunicación entre aplicaciones usando esquemas URL.

  Hilos, puertos, E/S estándar

  Tipos de datos básicos como colecciones

  Renderizado de gráficos 2D y 3D (OpenGL)

  Reproducción y grabación de audio

  Acelerómetro

  GPS

  Cámara

  Base de datos SQLite, etc.

Page 18: Iphone

Capas iPhone OS

  Tiene un conjunto de capas, la mas baja servicios fundamentales, capas superiores, servicios y tecnologías mas sofisticadas.

• Core OS. Contiene el Kernel, sistema de archivos, infraestructura de red, seguridad. • Core Services. Sockets, SQLite, threads • Media. Gráficos 2D, 3D, audio, video(Quartz, OpenGL, Core Animation). • Cocoa Touch. Interfaz gráfica (UIKit), Foundation Framework

Page 19: Iphone

Cocoa Touch

  Ya existente en Mac OS X, añade características para la tecnología multi-touch   UIKit. Proporciona los objetos que muestra una aplicación

en su ‘Interfaz de Usuario’, manejo de eventos y gráficos. Soporta además código para el manejo del acelerómetro, la cámara, la librería de fotos, etc.

  Foundation Framework. Define el acceso y manejo de objetos, provee acceso a los tipos de datos primitivos, colecciones y servicios del sistema operativo.

Page 20: Iphone

Proceso de desarrollo

  Tamaño de la pantalla. 480 x 320 pixeles. La interfaz se basa en vistas. Sistema de navegación

  Memoria. Al tratarse de un móvil, memoria limitada. Cuando se agota la memoria se produce un evento el cual debe controlar el programador, en caso contrario se cerrara la aplicación.

  Aplicaciones simultaneas. Solo se permite una aplicación ejecutándose. Cuando se produce una llamada o llega un SMS se cerrara. Responsabilidad de guardar el estado de la aplicación.

Page 21: Iphone

Estilo de aplicación

Utilidades. Minima acción del usuario, visualmente atractiva. Diferentes vista para el mismo tipo de información, pero de diferentes objetos.

Pantalla completa. Riqueza visual. Videojuegos, música, video.

Aplicaciones productivas. Organización y manipulación de la información. Rapidez frente a diseño. Navegación de menús mas generales a menús mas específicos.

Page 22: Iphone

Ejemplos y proceso de publicación en App Store