SlideShare una empresa de Scribd logo
Objective-C y la
programación en iPhone
             Programación Avanzada
Contenido
  Que es Objective-C

  Características del lenguaje

  Semejanzas con Java

  iPhone

  Cococa Touch

  Ejemplos
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.
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)
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.
Ejemplo de interface
Ejemplo de implementación
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]
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];
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:
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
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.
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.
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>
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
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.
Características
  Eventos Multi-Touch              Renderizado de gráficos 2D y
                                     3D (OpenGL)
  Seguridad con encriptación,
   certificados, etc.               Reproducción y grabación de
                                     audio
  Internacionalización de
   Software                         Acelerómetro

  Comunicación entre             GPS
   aplicaciones usando esquemas
   URL.                           Cámara
  Hilos, puertos, E/S estándar     Base de datos SQLite, etc.
  Tipos de datos básicos como
   colecciones
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
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.
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.
Estilo de aplicación
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.



          Utilidades. Minima acción del
          usuario, visualmente
          atractiva. Diferentes vista
                                           Pantalla completa. Riqueza
          para el mismo tipo de
          información, pero de             visual. Videojuegos, música,
                                           video.
          diferentes objetos.
Ejemplos y proceso de
publicación en App Store

Más contenido relacionado

POT
Trabajo java
PDF
Programación en Java (I)
PPTX
Lenguaje Java
PPTX
Aplicaciones java. Presentacion Power Point
PPT
Curso Java Avanzado 0 Conceptos Basicos
PPTX
Presentacion Java
PDF
Test Programación Orientada a Objetos
Trabajo java
Programación en Java (I)
Lenguaje Java
Aplicaciones java. Presentacion Power Point
Curso Java Avanzado 0 Conceptos Basicos
Presentacion Java
Test Programación Orientada a Objetos

La actualidad más candente (20)

DOCX
Cuestionario
PPT
Curso Java Inicial 2 - Introducción y Sintaxis
PDF
Mapa conceptual norey
PPTX
PDF
java,conceptos basicos
DOCX
Introducción a java
PPT
PDF
Mapa conceptual java
PPTX
Java lenguaje de desarrollo
PPT
Intro Java
PDF
Java basico
PDF
Programacion oo
PDF
Curso Java Inacap
PPTX
PPT
Clase2
PDF
investigacion topicos avanzados de programacion unidad dos interfaz grafica
PPT
Fundamentos de programación Java
PPT
JAVA
PDF
Conceptos Fundamentales de POO
DOCX
Lenguajes de programación orientados a objetos
Cuestionario
Curso Java Inicial 2 - Introducción y Sintaxis
Mapa conceptual norey
java,conceptos basicos
Introducción a java
Mapa conceptual java
Java lenguaje de desarrollo
Intro Java
Java basico
Programacion oo
Curso Java Inacap
Clase2
investigacion topicos avanzados de programacion unidad dos interfaz grafica
Fundamentos de programación Java
JAVA
Conceptos Fundamentales de POO
Lenguajes de programación orientados a objetos
Publicidad

Destacado (18)

PPTX
קורס מנחים בגישת בדרך הלב
PPTX
Endorsements: The hidden perils of your network
PPTX
Lamb day
PDF
Ce WiT Represented at The Mobile VAS SUMMIT 2009 by Vitue Insight
PPTX
Minimal Invasive Orthopädie (MIO) - Update 2014: Was ist minimal invasiv mögl...
PDF
3 d pie chart circular puzzle with hole in center pieces 6 stages style 5 pow...
PDF
In The Pool - 3D acrylic painting on canvas
PPTX
Chester Zoo Pictures 2016
PDF
El cio del sector público una oportunidad para la transformación y el lider...
PPS
膝蓋
PPT
Ten Year Experience with the STAR Total Ankle Replacement
PDF
World Information Architecture-Day-NYC-2013-Notes-on-Keynotes
PPTX
Results-Based Public Policy Framework
PDF
SXSWi Lessons for Noobs
PDF
eGovernment in Israel
PDF
Modern Architectures: The Road to App Cloud 2020
PPTX
Anjuran bertoleransi
PPTX
From cost to value: short-term tactics, long-term strategies - Tom Lewis, IPA
קורס מנחים בגישת בדרך הלב
Endorsements: The hidden perils of your network
Lamb day
Ce WiT Represented at The Mobile VAS SUMMIT 2009 by Vitue Insight
Minimal Invasive Orthopädie (MIO) - Update 2014: Was ist minimal invasiv mögl...
3 d pie chart circular puzzle with hole in center pieces 6 stages style 5 pow...
In The Pool - 3D acrylic painting on canvas
Chester Zoo Pictures 2016
El cio del sector público una oportunidad para la transformación y el lider...
膝蓋
Ten Year Experience with the STAR Total Ankle Replacement
World Information Architecture-Day-NYC-2013-Notes-on-Keynotes
Results-Based Public Policy Framework
SXSWi Lessons for Noobs
eGovernment in Israel
Modern Architectures: The Road to App Cloud 2020
Anjuran bertoleransi
From cost to value: short-term tactics, long-term strategies - Tom Lewis, IPA
Publicidad

Similar a Iphone (20)

PPTX
Lenguaje Java
DOCX
Conceptos de programación orientada a objeto
 
PDF
Guia 1 java
PPSX
Aplicaciones android
PPT
Act 5.1
PPT
Act 5.1
PDF
POOI- Unidad 1.pdf
PPTX
Mi lenguaje de programación de preferencia
PPTX
Clase 05 Tipos de accesos y listas de objetos.pptx
PDF
Curso de java_basico
PDF
Curso de java_basico
PPTX
CUESTIONARIO JAVA
PDF
Java kaime conpre
PDF
Java kaime con
PDF
Java basico
PDF
Java basico
PDF
Taller de introducción a iOS development
PPTX
Aplicaciones java
PPTX
definicion de java
PPTX
Programacion no numerica ii
Lenguaje Java
Conceptos de programación orientada a objeto
 
Guia 1 java
Aplicaciones android
Act 5.1
Act 5.1
POOI- Unidad 1.pdf
Mi lenguaje de programación de preferencia
Clase 05 Tipos de accesos y listas de objetos.pptx
Curso de java_basico
Curso de java_basico
CUESTIONARIO JAVA
Java kaime conpre
Java kaime con
Java basico
Java basico
Taller de introducción a iOS development
Aplicaciones java
definicion de java
Programacion no numerica ii

Último (20)

PDF
el - LIBRO-PACTO-EDUCATIVO-GLOBAL-OIEC.pdf
PDF
Unidad de Aprendizaje 5 de Matematica 1ro Secundaria Ccesa007.pdf
PPTX
Presentación del Seminario Teorías del aprendizaje y problemas de contexto - ...
PDF
DI, TEA, TDAH.pdf guía se secuencias didacticas
PDF
Habilidades sociales en la era digital (25-2))
PPTX
caso clínico iam clinica y semiología l3.pptx
PDF
Romper el Circulo de la Creatividad - Colleen Hoover Ccesa007.pdf
PDF
Gasista de unidades unifuncionales - pagina 23 en adelante.pdf
PDF
benveniste-problemas-de-linguistica-general-i-cap-6 (1)_compressed.pdf
PPTX
Presentación: Cumplimiento del Empleador
PDF
IA y Canva: Un aliado fundamental para crear diseños profesionales en minutos
PDF
Guia de Tesis y Proyectos de Investigacion FS4 Ccesa007.pdf
PPTX
Guía Esencial para Empleadores - Cumplimiento con el IESS
PDF
Crear o Morir - Andres Oppenheimer Ccesa007.pdf
PDF
OK OK UNIDAD DE APRENDIZAJE 5TO Y 6TO CORRESPONDIENTE AL MES DE AGOSTO 2025.pdf
PDF
TRAUMA_Y_RECUPERACION consecuencias de la violencia JUDITH HERMAN
PDF
Salcedo, J. et al. - Recomendaciones para la utilización del lenguaje inclusi...
DOCX
III Ciclo _ Plan Anual 2025.docx PARA ESTUDIANTES DE PRIMARIA
PDF
La Evaluacion Formativa en Nuevos Escenarios de Aprendizaje UGEL03 Ccesa007.pdf
PDF
Punto Critico - Brian Tracy Ccesa007.pdf
el - LIBRO-PACTO-EDUCATIVO-GLOBAL-OIEC.pdf
Unidad de Aprendizaje 5 de Matematica 1ro Secundaria Ccesa007.pdf
Presentación del Seminario Teorías del aprendizaje y problemas de contexto - ...
DI, TEA, TDAH.pdf guía se secuencias didacticas
Habilidades sociales en la era digital (25-2))
caso clínico iam clinica y semiología l3.pptx
Romper el Circulo de la Creatividad - Colleen Hoover Ccesa007.pdf
Gasista de unidades unifuncionales - pagina 23 en adelante.pdf
benveniste-problemas-de-linguistica-general-i-cap-6 (1)_compressed.pdf
Presentación: Cumplimiento del Empleador
IA y Canva: Un aliado fundamental para crear diseños profesionales en minutos
Guia de Tesis y Proyectos de Investigacion FS4 Ccesa007.pdf
Guía Esencial para Empleadores - Cumplimiento con el IESS
Crear o Morir - Andres Oppenheimer Ccesa007.pdf
OK OK UNIDAD DE APRENDIZAJE 5TO Y 6TO CORRESPONDIENTE AL MES DE AGOSTO 2025.pdf
TRAUMA_Y_RECUPERACION consecuencias de la violencia JUDITH HERMAN
Salcedo, J. et al. - Recomendaciones para la utilización del lenguaje inclusi...
III Ciclo _ Plan Anual 2025.docx PARA ESTUDIANTES DE PRIMARIA
La Evaluacion Formativa en Nuevos Escenarios de Aprendizaje UGEL03 Ccesa007.pdf
Punto Critico - Brian Tracy Ccesa007.pdf

Iphone

  • 1. Objective-C y la programación en iPhone Programación Avanzada
  • 2. Contenido   Que es Objective-C   Características del lenguaje   Semejanzas con Java   iPhone   Cococa Touch   Ejemplos
  • 3. 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.
  • 4. 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)
  • 5. 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.
  • 8. 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]
  • 9. 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];
  • 10. 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:
  • 11. 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
  • 12. 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.
  • 13. 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.
  • 14. 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>
  • 15. 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
  • 16. 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.
  • 17. Características   Eventos Multi-Touch   Renderizado de gráficos 2D y 3D (OpenGL)   Seguridad con encriptación, certificados, etc.   Reproducción y grabación de audio   Internacionalización de Software   Acelerómetro   Comunicación entre   GPS aplicaciones usando esquemas URL.   Cámara   Hilos, puertos, E/S estándar   Base de datos SQLite, etc.   Tipos de datos básicos como colecciones
  • 18. 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
  • 19. 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.
  • 20. 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.
  • 21. Estilo de aplicación 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. Utilidades. Minima acción del usuario, visualmente atractiva. Diferentes vista Pantalla completa. Riqueza para el mismo tipo de información, pero de visual. Videojuegos, música, video. diferentes objetos.
  • 22. Ejemplos y proceso de publicación en App Store