JavaScript 12 - Objetos
JavaScript 12 - Objetos
El modelo de objetos en JS
Índice
Orientación a objeto
Propiedades y métodos
Trabajando con objetos
Relación con la GUI
Relaciones entre objetos
Diagrama de clases
Los prototipos
NOTA IMPORTANTISIMA
Concepto de clase
Ejemplos
Prácticas
ALBERT BASSONS 2
Orientación a objeto
ALBERT BASSONS 3
Orientación a objeto
• Podemos usar los objetos para representar todo tipo de
cosas:
ALBERT BASSONS 4
Orientación a objeto
Objeto escenario
Objeto
marcador
Objetos mosca
ALBERT BASSONS 5
Orientación a objeto Objetos mano
Objeto tapete
Objeto baraja
Objeto
marcador
Objetos carta
ALBERT BASSONS 6
Orientación a objeto
• Los dos ejemplos anteriores son dos juegos realizados con
ActionScript 3 de forma orientada a objeto.
ALBERT BASSONS 7
Orientación a objeto en JS
ALBERT BASSONS 8
Propiedades y métodos
• Todo objeto dispone de propiedades y métodos:
ALBERT BASSONS 9
Propiedades y métodos
Es un tipo de
HTMLElement
propiedades
métodos
ALBERT BASSONS 10
Ejemplo
ALBERT BASSONS 11
Creando nuestros objetos
ALBERT BASSONS 12
Propiedades
• Las propiedades de los objetos de tipo Coche pueden ser:
marca, modelo, peso, longitud…
ALBERT BASSONS 13
Métodos
• Los métodos de los objetos de tipo Coche pueden ser: acelerar,
frenar, girar…
ALBERT BASSONS 14
Construyendo objetos
• En Javascript, generalmente definiremos constructores para
poder crear objetos.
ALBERT BASSONS 15
Construyendo objetos
ALBERT BASSONS 16
Construyendo objetos
ALBERT BASSONS 17
Construyendo objetos
• Como acabamos de ver, para construir un objeto necesitaremos
el operador new seguido de la llamada al constructor adecuado.
ALBERT BASSONS 18
Los constructores
• Para poder crear objetos de nuestros propios tipos en
Javascript, necesitamos definir un constructor.
ALBERT BASSONS 19
Ejemplo
ALBERT BASSONS 20
Los constructores
ALBERT BASSONS 21
Los constructores
ALBERT BASSONS 22
Los constructores
ALBERT BASSONS 23
Ejemplo
ALBERT BASSONS 24
Los constructores
ALBERT BASSONS 25
Trabajando con objetos
ALBERT BASSONS 26
Trabajando con objetos
ALBERT BASSONS 27
Trabajando con objetos
ALBERT BASSONS 28
Sobrecarga del constructor
ALBERT BASSONS 29
Ejemplo (1 de 2)
ALBERT BASSONS 30
Ejemplo (2 de 2)
ALBERT BASSONS 31
Relación con la GUI
ALBERT BASSONS 32
Relación con la GUI
ALBERT BASSONS 33
Relación con la GUI
• Los campos se corresponderán con las propiedades a indicar.
ALBERT BASSONS 34
El método toString()
• Si intentamos imprimir un objeto de un tipo creado por nosotros
mismos, JavaScript no sabe cómo debe mostrarlo, así que el
resultado es que nos dice simplemente que es un objeto.
ALBERT BASSONS 35
El método toString()
• toString() es el método predeterminado para convertir
un objeto a texto.
ALBERT BASSONS 36
El método toString()
• Si tenemos el método toString() podemos hacer:
document.write(objeto);
o bien:
document.write(objeto.toString());
document.write(objeto.aTexto());
ALBERT BASSONS 37
Relaciones entre objetos
• Los objetos se relacionan entre sí, por ejemplo:
• Un polígono está formado por puntos.
• Un curso tiene un listado de alumnos.
• Un profesor trabaja en una universidad.
• Un tigre es un tipo de animal.
• …
ALBERT BASSONS 38
Relaciones entre objetos
• Asociación: tipo de relación en que dos elementos se
relacionan entre sí, por ejemplo un profesor trabaja en una
universidad.
ALBERT BASSONS 39
Relaciones entre objetos
• Generalización o herencia: relación en la que un objeto es
un tipo de otro objeto: el tigre es un tipo de animal.
ALBERT BASSONS 40
Ejemplo (1 de 2)
ALBERT BASSONS 41
Ejemplo (2 de 2)
ALBERT BASSONS 42
Objetos dinámicos
• En JavaScript, los objetos son dinámicos.
ALBERT BASSONS 43
Ejemplo 1
ALBERT BASSONS 44
Ejemplo 2
ALBERT BASSONS 45
Los prototipos
ALBERT BASSONS 46
Ejemplo 1
ALBERT BASSONS 47
Ejemplo 2
ALBERT BASSONS 48
Los prototipos
ALBERT BASSONS 49
Notación de objeto
• En JS podemos crear objetos genéricos usando la notación de
objetos de JavaScript (JSON: JavaScript Object Notation).
ALBERT BASSONS 50
Ejemplo
ALBERT BASSONS 51
Conclusiones
• La orientación a objeto es muy útil y potente… pero la creación
y manipulación de objetos en JavaScript es limitada debido a
que no usa un sistema completo de clases.
ALBERT BASSONS 52
NOTA IMPORTANTISIMA
• En ES6 (2015) se ha introducido el modelo completo de
clases a JavaScript (con herencia, constructores, llamadas a
super(), métodos estáticos…).
https://developer.mozilla.org/es/docs/Web/JavaScript/Referencia/Classes
ALBERT BASSONS 53
NOTA IMPORTANTISIMA
ALBERT BASSONS 54
Concepto de clase
• Todos los coches pertenecen a la clase coche.
ALBERT BASSONS 55
Concepto de clase
ALBERT BASSONS 56
Concepto de clase
• En la mayoría de lenguajes como Java, C++, C#, PHP,
ActionScript 3... se definen las clases con la palabra reservada
class.
ALBERT BASSONS 57
Ejemplo
(solamente funciona en Chrome en modo strict)
ALBERT BASSONS 58
Diagrama de clases
• El diagrama de clases es un diagrama estático que se usa
para representar la estructura de clases de un programa.
ALBERT BASSONS 59
Ejemplo
ALBERT BASSONS 60
Ejemplo constructores
Cartas de la baraja
61
Repartir cartas (1 de 5)
ALBERT BASSONS 62
Repartir cartas (2 de 5)
ALBERT BASSONS 63
Repartir cartas (3 de 5)
ALBERT BASSONS 64
Repartir cartas (4 de 5)
ALBERT BASSONS 65
Repartir cartas (5 de 5)
ALBERT BASSONS 66
Repartir cartas (resultado)
ALBERT BASSONS 67
Ejemplos con prototipos
Ejemplo 1: modifica toString() de Array
ALBERT BASSONS 69
Ejemplo 2: creando un método para Date
ALBERT BASSONS 70
Ejemplo 3: creando un método para Date
ALBERT BASSONS 71
Ejemplo 4: crea un método para String
ALBERT BASSONS 72
Ejemplo 5: crea un método para String
ALBERT BASSONS 73
Prácticas
Objetos
Ejercicios
ALBERT BASSONS 75
Ejercicios
ALBERT BASSONS 76