Con la participación de Electronic Arts
En colaboración con la Universidad de Alcalá
Módulo 4: Creación y diseño de videojuegos móviles
Introducción a la programación
2 Introducción a la programación – Enrique López Mañas
Profesor
• Enrique López-‐Mañas
• Ingeniero Informá?ca UCM
• Máster CS RWTH
• Developer @ Sixt
• Android & iPhone & mobile
• www.neo-‐tech.es
• @eenriquelopez
3 Introducción a la programación – Enrique López Mañas
Planificación
8 9 15 16 22 23
Introducción a la programación
Introducción a la programación
Android Android Android Android
4 Introducción a la programación – Enrique López Mañas
¿Qué es la programación?
• Diseño
• Codificación
• Depuración
• Mantenimiento
5 Introducción a la programación – Enrique López Mañas
Conceptos clave: lenguaje
• Idioma ar?ficial para expresar procesos computacionales
• Diferentes lenguajes
• Diferentes ?pos
6 Introducción a la programación – Enrique López Mañas
Conceptos clave: entorno
• Conjunto de herramientas de desarrollo
• No sólo programación
• Diferentes entornos para diferentes lenguajes
• SDK’s
7 Introducción a la programación – Enrique López Mañas
Conceptos clave: programa
• Secuencia de instrucciones
8 Introducción a la programación – Enrique López Mañas
Conceptos clave: compilar
• Compilar: conver?r el programa (código fuente) en una aplicación (fichero ejecutable)
• Diferentes plataformas de compilación.
• (Generalmente) código depende de la plataforma
9 Introducción a la programación – Enrique López Mañas
Conceptos clave: aplicación
• Programa (compilado) con funcionalidad
10 Introducción a la programación – Enrique López Mañas
Ejercicio
• Abrir Eclipse.
• Escribir HelloWorld en Java y compilar
11 Introducción a la programación – Enrique López Mañas
Introducción a la programación
• Variables
• Funciones
• Tipos de datos
• Operadores
• Expresiones y sentencias
• Estructuras de control
• Estructuras de datos
• Excepciones
• OO (Orientación a objetos)
12 Introducción a la programación – Enrique López Mañas
Ejemplo
13 Introducción a la programación – Enrique López Mañas
Ejemplo
Nombre de paquete
14 Introducción a la programación – Enrique López Mañas
Ejemplo
Declaración de clase
15 Introducción a la programación – Enrique López Mañas
Ejemplo
Declaración de método
16 Introducción a la programación – Enrique López Mañas
Ejemplo
Declaración e inicialización de variable
17 Introducción a la programación – Enrique López Mañas
Ejemplo
Declaración de variable
18 Introducción a la programación – Enrique López Mañas
Ejemplo
Asignación y expresión
19 Introducción a la programación – Enrique López Mañas
Ejemplo
Llamada a función con parámetros
20 Introducción a la programación – Enrique López Mañas
Variables
• Espacio reservado en memoria que puede variar su valor
• Constante: parecido a las variables, pero no se puede modificar el valor
21 Introducción a la programación – Enrique López Mañas
Tipos
• Tipos de datos primi?vos:
short/int/long
float/double
char (String)
byte
22 Introducción a la programación – Enrique López Mañas
Tipos
23 Introducción a la programación – Enrique López Mañas
Tipos
24 Introducción a la programación – Enrique López Mañas
Tipos
25 Introducción a la programación – Enrique López Mañas
Tipos
26 Introducción a la programación – Enrique López Mañas
Tipos
27 Introducción a la programación – Enrique López Mañas
Funciones y métodos
• Posibles entradas
• Posibles salidas
• Define un comportamiento
• Pensar en función matemá?ca
28 Introducción a la programación – Enrique López Mañas
Funciones y métodos
29 Introducción a la programación – Enrique López Mañas
Funciones y métodos
30 Introducción a la programación – Enrique López Mañas
Funciones y métodos
31 Introducción a la programación – Enrique López Mañas
Funciones y métodos
32 Introducción a la programación – Enrique López Mañas
Funciones y métodos
33 Introducción a la programación – Enrique López Mañas
Funciones y métodos
34 Introducción a la programación – Enrique López Mañas
Funciones y métodos
35 Introducción a la programación – Enrique López Mañas
Ejercicio
• Abrir Eclipse
• Crear un método que sume dos números y los escriba con System.out.println();
36 Introducción a la programación – Enrique López Mañas
Operadores
• Establecen relaciones entre variables
37 Introducción a la programación – Enrique López Mañas
Operadores
38 Introducción a la programación – Enrique López Mañas
Operadores
39 Introducción a la programación – Enrique López Mañas
Estructuras de control
• Ejecutan código basándose en condiciones
• „Si ocurre X, entonces haz Y. Si no, haz Z“
• „Haz X hasta que ocurra Y“
• „Haz X mientras ocurra Z“
40 Introducción a la programación – Enrique López Mañas
Estructuras de control
• „Si ocurre X, entonces haz Y. Si no, haz Z“
41 Introducción a la programación – Enrique López Mañas
Estructuras de control
• „Haz X mientras ocurra Z“
42 Introducción a la programación – Enrique López Mañas
Estructuras de control
• „Haz X mientras ocurra Z“
43 Introducción a la programación – Enrique López Mañas
Estructuras de control
44 Introducción a la programación – Enrique López Mañas
Ejercicio
• Abrir Eclipse
• Declarar una variable x con valor igual a 50.
• Reducir su valor mediante un bucle „while“ y un bucle „for“ hasta 0.
45 Introducción a la programación – Enrique López Mañas
Estructuras de control
46 Introducción a la programación – Enrique López Mañas
Estructuras de Datos
• No sólo datos primi?vos – Hay datos complejos
• Arrays
• Tipos complejos de Java
• (Más adelante) Tipos definidos por el usuario
47 Introducción a la programación – Enrique López Mañas
Estructuras de Datos
• Matrices de N dimensiones (N al menos 1)
48 Introducción a la programación – Enrique López Mañas
Estructuras de Datos
• Matrices de N dimensiones (N al menos 1)
49 Introducción a la programación – Enrique López Mañas
Ejercicio
• Rellenar un array de dos dimensiones usando dos bucles for y pintar los valores por pantalla
50 Introducción a la programación – Enrique López Mañas
Estructuras de datos
• ArrayList, TreeSet, Scanner...
51 Introducción a la programación – Enrique López Mañas
Ejercicio
• Rellenar un ArrayList con los datos que teníamos en el array del ejercicio anterior.
52 Introducción a la programación – Enrique López Mañas
Estructuras de datos
• Clases personalizadas (introducción muy rápida)
• Uso de OO.
• Creación de clases mul?-‐atributo complejas con propios métodos
53 Introducción a la programación – Enrique López Mañas
Estructuras de datos
54 Introducción a la programación – Enrique López Mañas
Excepciones
• Ges?ón de errores complejos
55 Introducción a la programación – Enrique López Mañas
Orientación a Objetos (POO)
• Paradigma de desarrollo básico
• Permite representar sistemas complejos
• Objetos: elemento con atributos y comportamiento
• Reu?lización, conexión entre sistemas
56 Introducción a la programación – Enrique López Mañas
Orientación a Objetos (POO)
• Otra idea: descomponer programas en piezas más pequeñas y manejables
(un coche se compone de ruedas, volante, etc)
• Nuestros objetos serán „Clases“
57 Introducción a la programación – Enrique López Mañas
Orientación a Objetos (POO)
58 Introducción a la programación – Enrique López Mañas
Orientación a Objetos (POO)
59 Introducción a la programación – Enrique López Mañas
Orientación a Objetos (POO)
60 Introducción a la programación – Enrique López Mañas
Orientación a Objetos (POO)
61 Introducción a la programación – Enrique López Mañas
Orientación a Objetos (POO)
62 Introducción a la programación – Enrique López Mañas
Orientación a Objetos (POO)
• Relaciones de agregación
63 Introducción a la programación – Enrique López Mañas
Ejercicio
• Diseñar y programar clases para representar una empresa que con?ene trabajadores (usar array o ArrayList)
64 Introducción a la programación – Enrique López Mañas
Orientación a Objetos (POO)
• Conceptos:
– Encapsulación: organización de datos y métodos
– Herencia: creación de clases a par?r de otras ya existentes
– Polimorfismo: (varias formas) sobrecarga de métodos con mismo nombre y dis?nta funcionalidad.
65 Introducción a la programación – Enrique López Mañas
Orientación a Objetos -‐ Herencia
• Mecanismo para extender clases a casos más par?culares.
• Ejemplo:
– Un edificio à Un hospital
– Un vehículo à una furgoneta
– Un persona à un niño
66 Introducción a la programación – Enrique López Mañas
Orientación a Objetos -‐ Herencia
• La clase hija hereda de la clase padre.
• Puede sobreescribir o ampliar sus métodos.
• Hereda todos los atributos.
• Una „furgoneta“ es también un „vehículo“
• Herencia simple
67 Introducción a la programación – Enrique López Mañas
Orientación a Objetos -‐ Herencia
68 Introducción a la programación – Enrique López Mañas
Ejercicio
• Crear la clase Taxista, que hereda de persona.
• El taxista ?ene licencia
• El taxista ?ene un coche.
• Crear programa de ejemplo
69 Introducción a la programación – Enrique López Mañas
Orientación a objetos – Clases abstractas
• No se pueden crear objetos de clases abstractas.
• Se usan para representar „ideas“ o „conceptos“
70 Introducción a la programación – Enrique López Mañas
Ejercicio
• Hacer que la clase persona sea abstracta.
• Probar a compilar
71 Introducción a la programación – Enrique López Mañas
Herencia -‐ Interfaces
• Sólo definen comportamiento
• (especifican qué hacer, no cómo)
72 Introducción a la programación – Enrique López Mañas
Herencia -‐ Interfaces
73 Introducción a la programación – Enrique López Mañas
Acceso en Java
Misma clase Otra clase mismo paquete
Subclase de otro paquete
Otra clase de otro paquete
public X X X X protected X X X default X X private X
74 Introducción a la programación – Enrique López Mañas
Mul?threading
• Hasta ahora: ejecución secuencial.
• Pero: existe ejecución de múl?ples hilos
75 Introducción a la programación – Enrique López Mañas
Mul?threading -‐ Ventajas
• Mejor ?empo de respuesta
• Mejor aprovechamiento de la CPU
76 Introducción a la programación – Enrique López Mañas
Mul?threading -‐ Ejemplo
77 Introducción a la programación – Enrique López Mañas
Mul?threading
78 Introducción a la programación – Enrique López Mañas
Mul?threading
79 Introducción a la programación – Enrique López Mañas
Mul?threading
80 Introducción a la programación – Enrique López Mañas
Mul?threading
<
81 Introducción a la programación – Enrique López Mañas
Mul?threading
82 Introducción a la programación – Enrique López Mañas
Mul?threading
83 Introducción a la programación – Enrique López Mañas
Mul?threading
84 Introducción a la programación – Enrique López Mañas
Mul?threading
85 Introducción a la programación – Enrique López Mañas
Ficheros
• Almacenamiento en Java
• Hoy día rudimentario
86 Introducción a la programación – Enrique López Mañas
Ficheros -‐ Escritura
87 Introducción a la programación – Enrique López Mañas
Ficheros -‐ Lectura
88 Introducción a la programación – Enrique López Mañas
UML
89 Introducción a la programación – Enrique López Mañas
JavaDoc
Con la participación de Electronic Arts
En colaboración con la Universidad de Alcalá
Gracias por su atención Contacto para dudas y sugerencias
Enrique López Mañas [email protected]
@eenriquelopez