Curso de iOS 9 en Objective-C: de Cero a Experto

El curso más completo de iOS 9 y Objective-C en español. Aprende creando más de 20 apps sin experiencia previa.
4.7 (149 ratings)
Instead of using a simple lifetime average, Udemy calculates a
course's star rating by considering a number of different factors
such as the number of ratings, the age of ratings, and the
likelihood of fraudulent ratings.
2,086 students enrolled
$19
$120
84% off
Take This Course
  • Lectures 222
  • Length 28.5 hours
  • Skill Level All Levels
  • Languages Spanish
  • Includes Lifetime access
    30 day money back guarantee!
    Available on iOS and Android
    Certificate of Completion
Wishlisted Wishlist

How taking a course works

Discover

Find online courses made by experts from around the world.

Learn

Take your courses with you and learn anywhere, anytime.

Master

Learn and practice real-world skills and achieve your goals.

About This Course

Published 8/2015 Spanish

Course Description

Nuestro Curso de Desarrollo de Apps para iOS te enseñará las herramientas necesarias para desarrollar apps para iPhone e iPad en Objective-C, el lenguaje nativo utilizado para desarrollar para iOS. El curso incluye algunos algoritmos y patrones de diseño importantes así como consejos y best practices.

Al finalizar el curso, serás capaz de reproducir y entender la gran mayoría de funcionalidades de las apps más populares de iOS y profundizar en ellas para hacer tus propias apps.

Sin duda, la práctica a través de la construcción es una muy buena forma de aprender, por eso durante el curso, los estudiantes realizarán más de 10 apps cubriendo todos los aspectos esenciales del desarrollo de apps para iOS. Cada app que realices mejorará tus habilidades y dispondrás del código fuente del instructor para acceder a él, contrastarlo con el tuyo y mejorarlo.

Qué vas a aprender en este curso

  • Objective-C: Aprende el lenguaje nativo de desarrollo de apps para iOS y Mac.
  • Xcode: Aprende a manejarte por su interfaz y todos los trucos necesarios para maximizar tu tiempo.
  • Cocoa y UIKit: Conoce a fondo los frameworks básicos de desarrollo de apps, tanto a nivel lógico, funcional como a nivel visual.
  • iOS9 y XCode 7: Utiliza la última tecnología disponible de la mano de Apple.
  • Diseño de interfaces: todos los elementos de la vista necesarios para configurar tu app: UIButton, UILabel, UITextField, UIPickerView, UISlider, UIViewController...
  • Storyboard y diseño responsive: Aprende a crear impresionantes interfaces utilizando el Interface Builder a nivel gráfico de Apple. Arrastra los elementos por la pantalla y crea apps para todos los dispositivos de Apple
  • Programación básica: aprende programación desde cero, variables, bucles, condicionales, hilos...
  • Programación avanzada: patrones de programación MVC, de fachada, de factoría, delegación, NSNotificationCenter, bloques de código como parámetro, completion handlers...
  • Repositorio Bitbucket: Aprende a utilizar el control de versiones Git de Bitbucket para colaborar de forma productiva en un pequeño equipo o entre varios ordenadores.
  • Uso de tablas y colecciones: UITableViewController (como Facebook, Contactos o WhatsApp) y UICollectionViewController (como la propia app de Fotos) son las dos formas más estandarizadas de mostrar una colección de elementos en pantalla directamente sin casi necesidad de programar vistas. Además veremos como personalizar las celdas de tablas y colecciones.
  • Navegación entre diferentes pantallas: aprende a crear decenas de vistas conectadas entre ellas a través de un menú de navegación gracias a UINavigationController.
  • Uso de ficheros: utilizar las property lists, XML, JSON para almacenamiento y uso de la información en nuestra app separando así datos de la programación en código.
  • Bases de datos locales con CoreData: almacenamiento de datos utilizando XCDataModels y obteniendo resultados con NSFetchResultsController
  • Cloud computing y uso de Parse: utiliza un servidor gratuito en la nube como es Parse para guardar, almacenar, consultar, modificar y eliminar información en tiempo real sin necesidad de subir una nueva app a la App Store.
  • 30 días con 100% garantía de devolución: si no quedas satisfecho, tienes 30 días para reclamar la devolución de tu pago sin ningún problema.


Las opiniones de los estudiantes hablan por si solas - 5 estrellas de valoración

  • Raziel Tovar - Excelente curso! Me parece que Juan sabe como explicar de forma muy sencilla lo que antes me parecía muy complejo. Lo recomiendo bastante!
  • María del Mar Cardona - Lo que yo buscaba! Un curso fabuloso, especialmente para mí que aunque sé algo de java me hacía mucha ilusión adentrarme en la programación para iOS que sin duda es muy atractiva! Lo recomiendo al 100% a toda la gente que quiera aprender a hacer apps.
  • Miguel Ángel Ferri - Excelente curso para empezar a desarrollar tu app desde cero Tengo muchos años de experiencia en el desarrollo de juegos y aplicaciones web y escritorio, elegí este curso para introducirme en el desarrollo de aplicaciones para IOS y me ha parecido muy bien explicado, con un lenguaje fácil y comprensible para cualquier persona. En definitiva 100% recomendable para toda aquella persona, con o sin experiencia, que quiera empezar a desarrollar para IOS.


Apúntate ahora y únete a más de 2.000 alumnos en este Curso de Desarrollo de Apps.

What are the requirements?

  • Un Mac con Mac OS X Snow Leopard o posterior instalado
  • No se necesita experiencia previa en programación
  • Muchas ganas y motivación para aprender!

What am I going to get from this course?

  • Crear sus propias apps en Objective-C para iOS
  • Utilizar y extender el framework básico de Cocoa
  • Aplicar los principios básicos de diseño de interfaces para dispositivos móviles
  • Conocer los conceptos acerca de la orientación a objetos con casos prácticos
  • Ampliar los conocimientos sobre patrones de diseño, MVC y Orientación a Objetos y prepararse para profundizar más en el mundo de la programación

What is the target audience?

  • Este curso es ideal para los iniciados en el mundo de la programación iOS en Objective-C. No necesitas experiencia previa
  • Principiantes que tienen una noción de Objective-C pero desean explotar las posibilidades del lenguaje a fondo.
  • Programadores que desean profundizar acerca de la orientación a objetos
  • Programadores que vengan de otros lenguajes de programación o frameworks
  • Programadores web que desean expandirse a las plataformas móviles
  • Emprendedores que quieran aprender a hacer su propia app para ahorrarse el coste que supone externalizarlo
  • Trabajadores de empresas que desean ampliar sus conocimientos y optar a ascensos y mejores posiciones en su lugar de trabajo.
  • Empresas que desean formar a sus empleados para que sean más competentes con la última versión del sistema operativo móvil de Apple.

What you get with this course?

Not for you? No problem.
30 day money back guarantee.

Forever yours.
Lifetime access.

Learn on the go.
Desktop, iOS and Android.

Get rewarded.
Certificate of completion.

Curriculum

Section 1: Aprende a crear apps desde cero!
Tu instructor: Juan Gabriel Gomila
Preview
01:39
Bienvenido al curso
Article
01:08

Lo primero que necesitaremos para poder hacer apps para iOS es un Mac. Vamos a ver cómo podemos conseguir uno sin que sea un sobre coste para nosotros en la web de Apple http://www.apple.com/es


No te olvides de seguir las novedades del curso en la web http://cursoprogramacionios.juangabrielgomila.com

Cada semana nuevos contenidos y tutoriales para ampliar tus conocimientos de creación de apps para iOS en Objective-C

Cómo hacer el curso si tengo Windows - Mac In Cloud
Preview
08:33
Preguntas frecuentes
1 page
Section 2: Conociendo el entorno de trabajo
02:33

Una vez que tenemos un Mac, necesitamos descargar Xcode desde la página web de desarrollo de Apple https://developer.apple.com/xcode/downloads/

NOTA: ya ha salido la versión oficial de Xcode, la podemos conseguir directamente desde la Mac App Store: https://itunes.apple.com/es/app/xcode/id497799835?mt=12

Así mismo, necesitaremos registrarnos como desarrolladores utilizando un Apple ID. Puede ser que ya tengáis uno si tenéis una cuenta de iTunes, iBooks o similar. Si no, simplemente rellenad el formulario de la página de descargas para tener acceso totalmente gratuito a Xcode 7.


No te olvides de seguir las novedades del curso en la web http://cursoprogramacionios.juangabrielgomila.com

Cada semana nuevos contenidos y tutoriales para ampliar tus conocimientos de creación de apps para iOS en Objective-C

Article

El programa de desarrollo de apps de Apple tiene un coste anual de 100€. ¿Vale la pena hacer esta inversión inicial? Veámoslo detalladamente en esta clase.


No te olvides de seguir las novedades del curso en la web http://cursoprogramacionios.juangabrielgomila.com

Cada semana nuevos contenidos y tutoriales para ampliar tus conocimientos de creación de apps para iOS en Objective-C

02:48

En esta sección vamos a instalar Xcode 7 y vamos a abrirlo por primera vez. El proceso de instalación tiene que copiar ni más ni menos que 8 Gb de librerías, así que según la potencia de vuestro Mac, es posible que tarde entre 15 minutos y una hora.


No te olvides de seguir las novedades del curso en la web http://cursoprogramacionios.juangabrielgomila.com

Cada semana nuevos contenidos y tutoriales para ampliar tus conocimientos de creación de apps para iOS en Objective-C

05:45

Ahora que tenemos Xcode descargado, vamos a abrirlo por primera vez y nos vamos a enfrentar a los diferentes apartados de su interfaz.


No te olvides de seguir las novedades del curso en la web http://cursoprogramacionios.juangabrielgomila.com

Cada semana nuevos contenidos y tutoriales para ampliar tus conocimientos de creación de apps para iOS en Objective-C

03:25

Vamos a compilar el proyecto vacío. No veremos nada, pero simplemente sabremos cómo compilar nuestra App en el simulador. Como veras compilar apps para iOS es tan fácil como pulsar un botón. ¿A que es fácil crear apps?


No te olvides de seguir las novedades del curso en la web http://cursoprogramacionios.juangabrielgomila.com

Cada semana nuevos contenidos y tutoriales para ampliar tus conocimientos de creación de apps para iOS en Objective-C

4 questions

Vamos a ver si has entendido los conceptos fundamentales de esa sección

Section 3: Tu primera App
03:36

Para añadir un botón en pantalla, simplemente hay que arrastrarlo donde queramos! Nada más fácil!

11:15

Vamos a ver cómo dar funcionalidad al botón. Para ello, cuando el usuario haga click, verá una alerta en pantalla.

06:46

Vamos a añadir una etiqueta de texto a la app para empezar a interactuar con los elementos de la pantalla.

04:32

Vamos a jugar un poco con los colores y las sombras de los elementos de nuestro proyecto ya existente.

02:34

Una pequeña sesión teórica donde veremos dos elementos importantes: la Vista y el Controlador.

07:44

Vamos a añadir una caja de texto para preguntar el nombre al usuario y lo vamos a mostrar por pantalla.

04:01

Vamos a añadir una imagen y una UIImageView a nuestra app.

05:30

Vamos a aprender a añadir un nuevo UIViewController a nuestro proyecto y a navegar entre ellos a través de UINavigationController. Así mismo vamos a repasar los elementos clave de esta sección, tales como cambiar de color, configurar una vista, etc...

2 questions

Vamos a repasar los contenidos vistos en esta sección

00:46

Repasemos lo que hemos aprendido en esta sección en menos de un minuto.

05:22

Has empezado con buen pie el curso de programación. Tómate 5 minutos de descanso para saber donde seguir el contenido externo del curso. En particular te recomiendo que:

  • Valores el curso de 1 a 5 estrellas según consideres. Sé crítico y si hay algo que no te gusta házmelo saber. Intentaré mejorar de cara al futuro.
  • Te suscribas al contenido de la web del curso con tutoriales adicionales en paralelo a los de las clases del curso http://cursoprogramacionios.juangabrielgomila.com
  • Te suscribas al canal de YouTuBe para poder acceder a material adicional https://www.youtube.com/user/JoanBy
  • Te unas a la comunidad de Frogames, la empresa que mantengo con mi pareja para que veas las apps y juegos que he ido sacando a lo largo de estos últimos años http://frogames.es

Si te apetece puedes buscarme también en las redes sociales como Facebook, Twitter, Google + o LinkedIn, pero el contenido de estas tiene menos que ver con este curso. No lo dudes, tómate 5 minutos y ten acceso a todo el contenido fuera de las clases habituales!
Section 4: Programación básica
07:15

Vamos a conocer los enteros y cómo operar con ellos.

09:09

Vamos a conocer los números con decimales, también llamados flotantes y cómo operar con ellos

10:48

Vamos a crear un conversor de kilómetros a millas con todo lo que ya hemos aprendido en este curso.

Bonus: La app en una sola línea
01:12
Article

Descarga el contenido de lo aprendido en esta sección. Mejora el contenido ya existente y comparte el resultado con el resto de estudiantes de Udemy.

4 questions

Vamos a repasar los tipos básicos de datos que hemos visto en esta sección

Section 5: Reto 1: Conversor de divisas
Article

En esta clase vamos a proponer el reto: Crear un Conversor de Divisas

03:30

Esta sección cubre los retos:

  • Crea un nuevo proyecto y llamado Conversor de Divisas
  • Consulta a cuanto está la relación Euro Dolar (o las divisas que desees convertir en tu caso)
  • Incluye un UITextField, una UILabel y un UIButton en tu storyboard.
  • Personaliza el Storyboard a tu gusto con colores, imágenes, fuentes, ...
01:05

Esta sección cubre los retos:

  • Vincula la vista con el ViewController. Acuerdate de mantener pulsada la tecla Control para hacer los enlaces pertinentes.
03:56

Esta sección cubre los retos:

  • Implementa la lógica del botón. Recuerda que debes obtener los datos del UITextField, convertirlos a float, hacer el cambio de divisa pertinente, y finalmente mostrarlo al usuario.
03:23

Ultimos detalles importantes para tener una app de 10:

  • Vamos a centrar las etiquetas de texto
  • Vamos a limitar el número de decimales a dos (no tiene sentido dar más de dos en este caso al tratarse de monedas)
Article

En este bonus vamos a pasar de tener un conversor de divisas a un multiconversor de Euros a varias divisas. Esto no es más que una excusa para demostrar el potencial de lo que ya sabes hacer. Como siempre, haz tu propia versión, mejora la mía y compártela con el resto de la comunidad para recibir un feedback positivo =)

06:05

Vamos a crear un conversor de kilómetros a millas con todo lo que ya hemos aprendido en este curso. Así tu app no será de 10, si no de 12!!!!

Article

Descarga el contenido de lo que has aprendido en esta sección

4 pages

Ahora que sabes hacer apps con botones, etiquetas y cajas de texto, explora tus capacidades al límite

¿Que te parece este curso?
02:16
Section 6: Operadores de decisión
05:19

A veces no queremos ejecutar todos los fragmentos de código a la vez. Si no solamente una parte de el, en función de lo que ocurra en el código. Para ello, haremos uso de las sentencias If y Else.

03:30

Vamos a introducir el tipo de datos booleano, el BOOL. Una variable de tipo BOOL puede tomar dos valores:

  • YES, es decir verdadero
  • NO, es decir false
Jugando con este tipo de variables podemos obtener varios resultados posibles en función de lo que ocurra a lo largo del código.
07:40

Los If pueden ir concatenados entre ellos, unos dentro de otros, o con diversas condiciones lógicas una a la par de la otra. Para ello utilizaremos los operadores:

  • AND: &&, el cual será verdadero si son verdaderas ambas proposiciones a la izquierda y a la derecha lo son.
  • OR: ||, el cual será verdadero si alguna de las dos proposiciones a la izquierda y a la derecha lo es (incluso las dos).
  • NOT, !, el cual negará la veracidad de la condición lógica a la que preceda.
02:51

Vamos a ver las reglas lógicas que siguen los AND, NOT y ORS.

1 page

Vamos a trabajar un poco sobre lógica de predicados y los resultados de concatenar ANDS, ORS y NOTS

5 questions

Vamos a ver si has entendido el concepto de verdadero y falso en la lógica booleana con las siguientes preguntas

Section 7: Operadores de iteración
06:24

El bucle for es una de las dos maneras que veremos para realizar operaciones iteradas de forma automática.

04:02

El bucle while es una de las dos maneras que veremos para realizar operaciones iteradas de forma automática.

04:08

Vamos a ver cómo utilizar los bucles for y while para realizar una cuenta atrás.

App 4: El factorial de un número
09:51
Section 8: Reto 2: La canción 99 beers
App 5: La canción 100 bottles of beer!
08:33
Section 9: Recapitulación
01:26

Repasaremos aquí lo que ya sabemos acerca de Xcode, como movernos por su interfaz y como añadir más o menos vistas a nuestra pantalla (por si la vuestra es demasiado pequeña y no os cabe todo lo que desearíais).

01:47

Ya conocemos muchos de los elementos de la vista: los botones, las etiquetas, las cajas de texto y también sabemos configurar aspectos visuales como los colores, la fuente, el tamaño,... En próximas sesiones aprenderemos a hacer estos elementos responsive, es decir, que se ajusten al tamaño de la pantalla que los está mostrando.

01:04

Hemos cono conocido varios tipos básicos:

  • Los int o enteros, números sin decimales que nos permiten contar, iterar en un bucle, llevar la cuenta de las cervezas que nos quedan,...
  • Los float o decimales, que nos permiten representar cualquier número que imaginemos con cierta precisión como por ejemplo el número pi, el resultado de convertir 3 euros a dólares, 2.5 millas en kilómetros...
  • Los BOOL o booleanos, variables que pueden tomar el valor SI o el valor NO, y que nos resultan muy útiles combinados con los operadores de decisión para saber si se está cumpliendo alguna condición (¿es este número positivo? ¿me quedan vidas en el juego? ¿está sonando la música?)
Veremos en las siguientes clases que existen algunos tipos básicos más, o que incluso Objective-C, al heredar de C nos proporciona las llamas estructuras o struct, con las cuales podemos montar nuestros propios tipos básicos (puntos en 2D, en 3D, etc...)
01:06

El operador de decisión es clave y fundamental en el mundo de la programación. En muchos caso no debemos ejecutar todo el código del inicio al final, si no solo un fragmento dependiendo de los valores que hayan tomado nuestras variables durante la ejecución del código. Esto se gestiona con el uso del if y del else.


Mira el ejemplo de la hoja adjunta (Ejercicio If Else) e intenta averiguar qué mostrará la consola. Escríbelo en el foro de esta clase y comprueba el resultado con tus compañeros.

01:08

La potencia de los ordenadores y dispositivos electrónicos en general nace de la posibilidad de realizar millones de cálculos en pocos segundos. La gran mayoría de cálculos ocurren dentro de bucles y de ahí la importancia de aprender y dominar los operadores de iteración. Hemos visto el caso del bucle for, y el caso del bucle while como operadores básicos de iteración.

Mira el ejemplo de la hoja adjunta (Ejercicio Loops) e intenta averiguar qué mostrará la consola. Escríbelo en el foro de esta clase y comprueba el resultado con tus compañeros.

Section 10: Programación orientada a objetos. El concepto de clase y de objeto
06:58

Es importante cuando creamos un proyecto, saber configurarlo de cero. Debemos automatizar un par de pasos para que crear un nuevo proyecto no se convierta en una tarea de una tarde entera, si no en unos pocos clicks. A modo de curiosidad os diré que para configurar mi primer proyecto, estuve una semana entera (cada vez que compilaba y veía algo que no me gustaba, tenía que ir e investigar como evitar que se girara la pantalla, que se mostrara la barra de estado,...)

Aquí aprenderás todo lo necesario para hacerlo en 7 minutos.

04:42

En informática, una clase es una plantilla para la creación de objetos de datos según un modelo predefinido. Las clases se utilizan para representar entidades o conceptos, como los sustantivos en el lenguaje. Cada clase es un modelo que define un conjunto de variables -el estado, y métodos apropiados para operar con dichos datos -el comportamiento. Cada objeto creado a partir de la clase se denomina instancia de la clase.

Las clases son un pilar fundamental de la programación orientada a objetos. Permiten abstraer los datos y sus operaciones asociadas al modo de una caja negra. Los lenguajes de programación que soportan clases difieren sutilmente en su soporte para diversas características relacionadas con clases. La mayoría soportan diversas formas de herencia. Muchos lenguajes también soportan características para proporcionar encapsulación, como especificadores de acceso.

03:04

Bueno, tras una clase de conceptos bastante teórica, es hora de que demostremos nuestros conocimientos y creemos nuestra primera clase.

03:07

ARCHIVOS DE CABECERA

Se denomina header file, en español fichero cabecera, o include file, en español fichero de inclusión, en ciencias de computación, especialmente en el ámbito de los lenguajesde programación C y C++ (y por extensión Objective-C), al archivo, normalmente en forma de código fuente, que elcompilador incluye de forma automática al procesar algún otro archivo fuente.

Típicamente se especifica la inclusión de los header files por medio de imports al comienzo (head o cabecera) de otro archivo fuente. Un header file contiene, normalmente, una declaración directa de clases, subrutinas,variables, u otros identificadores. Aquellos programadores que desean declarar identificadores estándares en más de un archivo fuente pueden colocar esos identificadores en un único header file, que se incluirá cuando el código que contiene sea requerido por otros archivos.

Si se adopta el modelo modular entonces se querrá tener para cada módulo las definiciones de las variables, los prototipos de las funciones, etc. Sin embargo, ¿qué sucede si varios módulos necesitan compartir tales definiciones? En tal caso, lo mejores centralizar las definiciones en un archivo, y compartir el archivo entre los módulos.Tal archivo es usualmente llamado un archivo cabecera.

Por convención estos archivos tienen el sufijo .h

02:08

Los archivos de implementación contienen toda la lógica, la programación pura y dura de qué hace cada método o como las variables van cambiando en el transcurso de la ejecución. Toda operación y código programada en el archivo de implementación es privado, y solo puede ser consultado y accedido directamente desde la propia clase. Si algún método o variable desea ser accedido desde otra clase diferente, este debe ser declarado en la cabecera de la clase para hacerlo público y visible desde el resto de clases que la importen.

Los archivos de implementación llevan la extensión .m, por herencia de la palabra message, del inglés.

3 questions

Vamos a repasar la estructura general de una clase y cómo se organizan las clases.

Section 11: Programación orientada a objetos. Las propiedades de una clase
07:03

Cuando veais escrito: @property (nonatomic, strong) NSString *nombre;

  • @property - Declara una propiedad. Todos los objetos instanciados de esta clase tendrán acceso a esta propiedad.
  • nonatomic - Por ahora, siempre escribiremos nonatomic. Esto tiene que ver con la seguridad, pero simplemente añadir que declarando la propiedad como atomic, puede disminuir la eficiencia de nuestra app, puesto que hay que ser mucho más conscientes de su estado en todo momento.
  • strong - Esta (y su palabra contraria weak) se escriben solamente cuando la propiedad es un objeto. Esto determina cuanto tiempo debe permanecer el objeto en memoria.
  • NSString *- La clase (o el tipo) de nuestra propiedad. Notar que si la propiedad es un objeto, el nombre de la clase viene precedido por un *, indicando que la variable es realmente un 'puntero' a dicho objeto.
  • nombre - El nombre de la variable. Para hacer referencia a dicha propiedad, haremos referencia a través de su nombre.
01:41

Para crear un objeto de la clase MiCoche hay que hacer uso de dos palabras que ya hemos utilizado en otros ejemplos: alloc, para reservar espacio en memoria para el objeto, e init para inicializar las variables del objeto. Para ello, tendremos que escribir, la siguiente sentencia.

MiCoche *nombreDelObjeto = [[MiCoche alloc] init];

03:49

Nuestro View Controller no puede hacer uso de una clase a menos que la importe, puesto que desconoce de su existencia. Imagina que todas las clases conocieran la existencia de todas las clases, sería un caos!!

El import de una clase puede ocurrir en el header, o bien en el archivo de implementación:

  • Si la cabecera necesita hacer uso de la clase (por ejemplo, porque una de las variables o métodos públicos la necesita cómo parámetro de entrada o salida) entonces el archivo de cabecera hará el import de la clase, y por extensión lo heredará el fichero de implementación.
  • Si por el contrario sólamente la lógica necesita conocer de la existencia de dicha clase para sus cálculos y operaciones internas, bastará hacer el import a nivel de fichero de implementación.
Veremos ejemplos de ambos casos en las próximas sesiones.
07:29

Ya tenemos la clase MiCoche importada en nuestro View Controller. Ha llegado el momento de asignar las variables al coche. Podremos crear un coche con marca "Ferrari" por ejemplo y asignarle una cantidad considerable de caballos!

Lo mejor es que no tenemos porque restringirnos a crear un solo coche, si no que podremos crear tantas instancias de la clase MiCoche como deseemos! ¿No es fantástico?

3 questions

Vamos a repasar los conceptos sobre clases y objetos aprendidos en esta sección

Section 12: Programación orientada a objetos. Los métodos de una clase
05:29
  • Los métodos son fragmentos de código que, agrupados permiten realizar una particular meta. Los mensajes los manda un objeto o una clase para actuar entre si y realizar alguna acción.
  • Para métodos de instancia de clase, se utiliza la sintaxis [objeto nombreDelMetodo], donde objeto es el receptor del mensaje y nombreDelMetodo el emisor.
  • Para métodos de clase, se utiliza la sintaxis [Clase nombreDelMetodo], donde clase es el receptor del mensaje y nombruedelmetodo el emisor.
  • Para que un método sea público y accesible a otras cases, debe declararse en el fichero .h de la clase que va a implementarlo. Implementar un método significa darle cierta funcionalidad.
  • Los nombres de los métodos empiezan por un guión si son métodos de instancia. La palabra reservada (void), indica que el método no devuelve nada al final de la ejecución. Veremos más adelante este concepto de 'devolver'.
05:18

Para crear un método de clase, tenemos que empezar poniendo un signo '-', a continuación el valor de retorno esperado entre paréntesis (posiblemente ninguno, el cual se simboliza con la palabra reservada void) y finalizar con el nombre del método como se muestra a continuación:

-(void)miMetodoSinDevolverNada;

-(int)miMetodoDevolviendoUnEntero;

-(NSString*)miMetodoDevolviendoUnString;

04:09

Si queremos que un método acepte argumentos, estos deben ir precedidos de dos puntos, el tipo de datos entre paréntesis, y el nombre de la variable como aparece a continuación:

-(void)nombreDeMiMetodo:(int)miEntero;

-(void)nombreDeMiMetodo:(NSString*)miString;

04:13

El receptor self no es más que un puntero a objeto estático tipificado con la clase sobre la que se ejecuta el método (el equivalente a this en C o Java). En consecuencia, el receptor self sólo tiene sentido utilizarlo dentro de un método. El self se refiere al objeto que está ejecutando el método actual.

Por ejemplo, para acceder a una propiedad de la propia clase, utilizamos la sintaxis:

self.nombreDeMiPropiedad.

Si por ejemplo, nuestra clase MiCoche tiene una propiedad llamada marca, la sentencia self.marca hará referencia a la propiedad marca de la clase MiCoche. La ventaja será que, cada vez que instanciemos un coche diferente, self.marca hará referencia a la marca de cada coche en cuestión.

02:44

Del mismo modo, ahora que hemos visto el uso de self para referirnos a la propia clase que lo utiliza, para llamar a métodos de la propia instancia de clase, utilizamos la sintaxis

[self nombreDeMiMetodo];

05:44

A veces no bastará aceptar un método como argumento, si no que querremos enviar dos, tres... Ya hemos hecho uso de métodos de Objective-C que aceptaban varios parámetros, ahora vamos a ver cómo definirlos en nuestras propias clases.

Los múltiples argumentos de un método irán separados por espacios en blanco

-(void)estoEsMiMetodoConElParametro:(int) primerParametro segundoParametro:(BOOL)segundoParametro yTercerParametro:(NSString*)ultimoParametro.

Fijaros como, en caso de que el parámetro sea un objeto, la clase debe ir seguida de un * y en caso que sea un tipo básico no se deberá añadir (puesto que un tipo elemental no es un objeto).

07:48

Nuestros métodos pueden devolver un valor al finalizar su ejecución. El resultado de un método puede ser un tipo entero o un objeto.

En lugar de utilizar la palabra reservada (void), al inicio del nombre del método y después de la marca + o - que hayamos puesto, haremos uso del tipo de datos que deseamos volver. Por ejemplo podemos hacer uso de (int), (float), (BOOL), (NSString*), (UIImage*) o el objeto de la clase que queramos devolver al final de la ejecución del método en cuestión.

04:24

Hasta ahora hemos visto métodos de instancia de clase que empiezan con un símbolo -.

Los métodos de clase empiezan con un + en lugar de con un -. Además, no pueden hacer referencia a la palabra reservada self, puesto que no es una instancia de ninguna clase quien la ejecuta (hacer llamadas como self.cv o [self acelerar] está en este sentido prohibido).

Se puede hacer una llamada a un método de clase sin instanciar ningún objeto. Operan únicamente con las variables de clase y no tienen acceso a las variables de instancia de la clase.

3 questions

Vamos a repasar algunos de los conceptos que hemos ido viendo acerca de las clases en Objective-C

Section 13: Reto 3. La clase IntegerUtils
Article

Nuevo reto. Vamos a crear la clase Integer Utils que va a hacer uso de métodos de clase, que no de instancia de clase. Será una clase muy útil (de ahí su nombre de Utils) que aglutinará en un solo lado todos los métodos con operaciones sobre enteros.

En un futuro podrás añadir tu mismo en esta clase los métodos que consideres oportunos o útiles para separarlos del ViewController que los utilice.

02:54

En esta clase crearemos la clase IntegerUtils y la dejaremos lista para implementar cada una de las partes de que consta el reto.

03:43
En esta clase, creamos un método de clase llamado printFirstNumbers que reciba como parámetro un entero n, e imprima todos los números desde uno hasta dicho n.
02:41
En esta clase, creamos un método de clase llamado printCountdown que reciba como parámetro un entero n, e imprima todos los números desde dicho n hasta cero.
04:47
En esta clase, creamos un método de clase llamado printNumbersFrom to que reciba como parámetro dos enteros m y n, e imprima todos los números desde m hasta dicho n. Probablemente os encontréis con algún problema dependiendo de quien sea más grande, m o n.
03:23

En ingeniería del software, el término refactorización se usa a menudo para describir la modificación del código fuente sin cambiar su comportamiento, lo que se conoce informalmente por limpiar el código. La refactorización se realiza a menudo como parte del proceso de desarrollo del software: los desarrolladores alternan la inserción de nuevas funcionalidades y casos de prueba con la refactorización del código para mejorar su consistencia interna y su claridad. Los tests aseguran que la refactorización no cambia el comportamiento del código.

La refactorización es la parte del mantenimiento del código que no arregla errores ni añade funcionalidad. El objetivo, por el contrario, es mejorar la facilidad de comprensión del código o cambiar su estructura y diseño y eliminar código muerto, para facilitar el mantenimiento en el futuro. Añadir nuevo comportamiento a un programa puede ser difícil con la estructura dada del programa, así que un desarrollador puede refactorizarlo primero para facilitar esta tarea y luego añadir el nuevo comportamiento.

Vamos a dejar nuestro código bonito y útil haciendo uso de las funciones que ya teniendo y eliminando código duplicado.

07:11
En esta última clase creamos un método de clase llamado factorial que reciba como parámetro un entero n, e imprima el factorial de n. Recordad que ya habíamos hecho este algoritmo en una clase anterior.
Article

Ya puedes descargar el resultado de la app creada en esta sección, modificarlo y jugar con él para adaptarlo a tu modo de programación.

Section 14: Colecciones y Arrays
14:50

Ya sabemos configurar un objeto de la clase MiCoche. Ahora vamos a configurar varios coches para mostrar una colección de nuestros fantásticos vehículos en la vista de nuestra app. En esta sesión trabajaremos con los elementos de la UI necesarios como las imágenes, las etiquetas para mostrar marca, potencia, el botón para pasar al siguiente...

09:04

Ahora que tenemos la interfaz lista, vamos a implementar la lógica básica del controlador para mostrar el primer coche en pantalla. Dejaremos atrás las pruebas por consola con el NSLog y empezaremos a mostrar nuestras obras de arte directamente en la pantalla del dispositivo.

12:14

Un array es un medio de guardar un conjunto de objetos de la misma clase. Se accede a cada elemento individual del array mediante un número entero denominado índice. 0 es el índice del primer elemento y n-1 es el índice del último elemento, siendo n, la dimensión del array. Los arrays son objetos en Objective-C y como tales vamos a ver los pasos que hemos de seguir para usarlos convenientemente

  • Declarar el array
  • Crear el array
  • Inicializar los elementos del array
  • Usar el array
En nuestro caso vamos a hacer uso de los arrays para guardar los coches que posteriormente mostraremos en nuestra app.
09:49

Vamos a navegar por nuestro garaje haciendo uso del botón que hemos añadido a tal efecto. En esta clase implementaremos la lógica de navegación por los coches de nuestro array, y de paso descubriremos el primero de nuestros errores, o bugs.

Students Who Viewed This Course Also Viewed

  • Loading
  • Loading
  • Loading

Instructor Biography

D. Juan Gabriel Gomila Salas, Licenciado en Matemáticas, Data Scientist & Game Designer

Juan Gabriel Gomila “Stay hungry, stay foolish“ - ¡Siempre he creído que el cielo es el límite en todos los aspectos!

Como Licenciado en Matemáticas, he estado en contacto con gran variedad de escenarios y casos atípicos, donde se plantea una situación y debe resolverse de una forma óptima y eficiente.


Mi CV:

Artículos y publicaciones:

Decenas de artículos y publicaciones relacionadas con el mundo de las matemáticas, el tratamiento de imágenes junto con la revista internacional IPOL, las lógica detrás de las máquinas tragaperras, el diseño lógico de videojuegos y el análisis de datos. Conoce más acerca de estos y otros temas en mi web personal o en la web de mi estudio Frogames.

Docencia Universitaria:

Desde 2015 soy profesor en dos asignaturas de matemáticas del Grado de Telemática impartido por la Universidad de las Islas Baleares y en el HND de Desarrollo de Videojuegos impartido por la Escuela de Diseño de las Islas Baleares. Así mismo, los cursos en Udemy me ayudan a mejorar para convertirme en un instructor no solamente presencial y en grupos reducidos de alumnos si no también haciendo uso de las nuevas tecnologías y a grupos más homogéneos de alumnos.

Desarrollo de Videojuegos en PlaySpace SL:

Desde 2012, trabajo en la empresa de desarrollo de videojuegos española PlaySpace SL, desarrollando juegos clásicos de mesa y social casino como el Parchís, Bingo, Juegos de Cartas o máquinas de Slots. Empecé llevando a cabo las funciones de Game Designer y Data Scientist, definiendo las nuevas funcionalidades a partir de los datos existentes y mejorando el contenido a cada etapa. Desde 2014 dirigiendo el producto como Product Manager y Game Producer coordinando las labores de lanzamiento de nuevos juegos y funcionalidades.

Desarrollo de Apps:

Cuento con experiencia laboral en crear y lanzar de 30 apps y videojuegos lanzados por mi estudio Frogames y en más de 5 proyectos con empresas reconocidas internacionalmente incluyendo Audición Plena, Medical Alert, Plaiout o Pillapartida entre otros. En este aspecto soy publisher de aplicaciones en diferentes países y mercados online incluidos los de Google Play, Amazon Store y Apple App Store. En la web corporativa de Frogames y en mi propio blog encontrarás mi portfolio de proyectos lanzados para que valores su calidad y estilo.

Online Marketing / SEO:

Tengo experiencia en la creación de KPIs y realización de predicciones a medio y largo plazo basada en los datos clave de un negocio. Así mismo, tengo experiencia en optimizar tanto el SEO como el ASO de los artículos y apps que elaboro para conseguir el mayor número de descargas orgánicas sin invertir dinero en marketing. Así mismo, he coordinado varias campañas de Google Adwords y Facebook Ads para acelerar las descargas y visitas de los productos que he lanzado, como estos mismos cursos en Udemy.

Si quieres más información gratuita sobre este tema, en el blog de mi página web tienes varios artículos acerca de esta y otras temáticas interesantes relacionadas con el mundo del marketing.

Desarrollo Web:

He elaborado las páginas webs de mi propio estudio y blog creando plantillas Wordpress en HTML 5 haciendo uso de Bootstrap 5.

Data Mining y Business Intelligence

Con la experiencia en el análisis de datos en PlaySpace, me he especializado en bases de datos relacionales con MySQL y los algoritmos de Slice & Dice para tratar y organizar los datos en dashboards con sentido y usables para sacar conclusiones acertadas en los proyectos que he trabajado. En el blog de mi web personal encontrarás más artículos relacionados con el Data Mining y Business Intelligence con el que he trabajado en el area de los videojuegos y apps móviles.



Ready to start learning?
Take This Course