Curso de Programación Orientada a Objetos con Javascript

El curso que necesitas para desarrollar con Javascript orientado a objetos moderno, sin perder las características tradicionales
En marcha
Intermedio
51 Clases 12 h (aprox.)
89€
75€
Precio en promoción

Próxima entrega

Martes 09 de diciembre

Vídeo on-demand: "Relación de composición"

La orientación a objetos es el paradigma actual más relevante en el mundo del desarrollo y, por supuesto, en Javascript. Muchos desarrolladores Javascript usan objetos en su día a día, sin embargo, debe quedar claro que una cosa es usar los objetos y otra muy distinta diseñar software orientado a objetos, el objetivo de este curso.

Desde siempre Javascript ha soportado programación con objetos, incluso emular las clases con funciones constructoras. Sin embargo, las características de Javascript han producido quebraderos de cabeza significativos a desarrolladores que comienzan su aprendizaje o desarrolladores que vienen de otros lenguajes más tradicionales. 

Es por ello que hace años Javascript introdujo las clases, tal como se conocen en otros lenguajes. No obstante, ellas no nos eximen de conocer bien las particularidades de Javascript, algo necesario para que programar orientado a objetos no suponga una experiencia complicada o frustrante.

En este curso queremos ayudarte a entender la programación orientada a objetos en Javascript con un enfoque moderno, pero sin perder de vista las características tradicionales del lenguaje, para que puedas enfrentarte a retos de una manera sencilla pero con las bases necesarias para no liarte cuando las cosas empiezan a complicarse.

Qué aprenderé en el Curso de Programación Orientada a Objetos con Javascript

  • Paradigma de la Programación Orientada a Objetos
  • Características tradicionales de la orientación a objetos en Javascript
  • Particularidades complejas del lenguaje Javascript
  • Novedades de la Orientación a Objetos las versiones modernas de Javascript
  • Cómo modelar soluciones de software orientadas a objetos
  • Aplicar patrones de diseño orientados a objetos

Objetivos del curso

Profundizar en el conocimiento del lenguaje Javascript, abordando de forma específica la orientación a objetos, combinando tanto los enfoques modernos, basados en clases, como los más tradicionales, basados en funciones.

Abordar todas las novedades de la Programación Orientada a Objetos presentadas en las últimas versiones del estándar ECMAScript e introducir el Modelado Orientado a Objetos, así como patrones de diseño de software.

Por qué debes aprender Programación Orientada a Objetos con Javascript

Si tienes algunos conocimientos de Javascript habrás visto que es un lenguaje atractivo, con el que puedes construir fácilmente programas y tener resultados llamativos y útiles en poco tiempo. Sin embargo, cuando comienzas a profundizar en tu conocimiento de Javascript, a menudo te encuentras barreras que hacen difícil dominar el lenguaje. Sobre todo se debe a muchas características tradicionales del lenguaje, un tanto "rarunas", pero también a la cantidad de formas distintas que hay de llegar a soluciones válidas de un mismo problema.

Si has comenzado hace poco con Javascript o notas que necesitas un poco más de base para mejorar tu confianza, este curso puede darte muchas de las claves que necesitas comprender para soltarte definitivamente en el mundo de la programación orientada a objetos con Javascript y el modelado de software orientado a objetos.

Paralelamente, incluso los desarrolladores experimentados de Javascript necesitan actualizaciones, sobre todo en el área de la programación orientada a objetos. Este curso te servirá para poder conocer muchas de las novedades introducidas en el estándar ECMAScript, sobre el que está construido el lenguaje Javascript.

Qué tengo que saber

Para hacer este curso es importante tener un conocimiento previo de Javascript, al menos medio del lenguaje. No hacen falta tener conocimientos de programación orientada a objetos, aunque tener nociones básicas ayudará. Se puede encontrar mucha información más académica de la programación orientada a objetos a nivel general en el Curso de Programación Orientada a Objetos de EscuelaIT, donde se ve el paradigma con mucho más detalle y profusión.

Clases y contenidos

Objetivos y mecánicas del curso de Programación Orientada a Objetos con Javascript Gratis

Te explicamos en este vídeo lo que encontrarás en este curso y las características y enfoque de esta formación sobre programación orientada a objetos.

Conceptos de programación y paradigmas

Vamos a comenzar definiendo unos conceptos transversales que vamos a tratar a lo largo del curso y queremos dejar claros desde el inicio. Luego vamos a explicar qué es un paradigma y cuáles son los paradigmas de programación estructurada y la programación orientada a objetos.

Características que encontramos en la programación

Vamos a repasar 4 conceptos transversales en el mundo de la programación, como son la abstracción, la encapsulación, modularización y jerarquización.

Aterrizar los conceptos en la programación de alto nivel

Los conceptos de programación que vimos en el anterior vídeo: abstracción, la encapsulación, modularización y jerarquización los vamos a aterrizar en las herramientas que nos ofrecen los lenguajes de alto nivel que ya conocemos.

Paradigma de programación estructurada

Qué es un paradigma de programación y definición del paradigma de programación estructurada.

Paradigma de programación orientada a objetos

Cómo pasamos del paradigma de la programación estructurada al paradigma de la programación orientada a objetos. Por qué este paradigma es más deseable para desarrollar software que la programación estructurada.

Elementos esenciales de la Programación Orientada a Objetos

Antes de introducirnos en la práctica vamos a estudiar en los próximos vídeos cuáles son los conceptos más fundamentales que debemos conocer en el paradigma de la programación orientada a objetos.

Clases y objetos

Teoría: Qué son las clases y qué son los objetos, conceptos esenciales de Programación Orientada a Objetos.

Mensajes y métodos

Teoría: Qué son los mensajes y qué son los métodos.

Atributos y estados

Teoría: Qué son los atributos, también llamados propiedades, y qué es el estado de los objetos.

Particularidades de Javascript y el tratamiento de objetos tradicional

Vamos a comenzar la parte práctica realizando un repaso a las características del lenguaje Javascript y cómo trata los objetos de manera particular. Hay seguramente muchas cosas que los desarrolladores no conocen del lenguaje y les permitirá tener un poco más de contexto y dominio de las particularidades de Javascript.

Objetos en Javascript

En Javascript podemos trabajar con objetos en muchos contextos. El propio lenguaje ofrece numerosas utilidades en objetos incorporados, por lo que los usamos con frecuencia. Sin embargo, en el curso hemos dicho que para hacer objetos tenemos que instanciarlos a partir de clases, pero eso no es siempre así en Javascript, ya que podemos crear objetos con literales. Vamos a ver estas y otras cosas que pueden resultar un poco confusas y que debemos de conocer.

Funciones constructoras

Es el mecanismo más antiguo para crear objetos de un tipo determinado en Javascript. Veremos cómo hacer funciones constructoras para definir clases de objetos y cómo instanciar los objetos por medio del operador new.

Funciones factoría

Es otra manera de crear clases de objetos en Javascript, todavía más sencilla de las funciones constructoras, que nos demuestra la maleabilidad del lenguaje.

Prototipos

Se dice que Javascript es un lenguaje orientado a prototipos. Para entender esta afirmación veremos qué es un prototipo y cómo podemos usarlos para crear objetos de un tipo determinado.

La variable this en Javascript

Si hay algo raro en Javascript, y que nos puede dar especiales problemas y a veces frustraciones si no lo dominamos, es la variable this. Vamos a explicar qué es this y cómo su valor puede ir cambiando dependiendo de lo que estemos haciendo.

Qué hace el operador new en Javascript

Antes de continuar vamos a explicar a bajo nivel qué es lo que hace el operador new en Javascript y cómo cambia el contexto de this dentro de la función constructora.

Práctica de programación orientada a objetos con Javascript tradicional

Vamos a hacer un ejercicio completamente práctico para poder afianzar los conocimientos que hemos adquirido hasta el momento sobre el modo de trabajo con orientación a objetos en Javascript tradicional. En este ejercicio además podremos ver situaciones en las que históricamente teníamos problemas con la redefinición del contexto y la variable this, aportando tres posibles soluciones para resolver estas cuestiones.

Clases y objetos en Javascript moderno

Después de haber visto todas las particularidades de Javascript tradicional, algo que es esencial conocer porque podemos encontrar código que use esos mecanismos y necesitamos entenderlo, vamos a cambiar de tercio y vamos a ver cómo se simplifica todo esto en el Javascript moderno, a través de las clases introducidas en ECMAScript 2015.

Clases en Javascript moderno

Cómo definimos una clase en Javascript ES6, el estándar ECMAScript 2015. Cómo instanciamos objetos de una clase.

Constructores en Javascript

Veremos qué es un constructor y cómo implementarlos en Javascript.

Propiedades y métodos en Javascript ES6

Vamos a profundizar en la creación de propiedades (atributos) y métodos en Javascript usando las clases modernas y cómo lanzar mensajes o acceder al estado de los objetos.

Composición de unos objetos en base a otros

El mundo de los objetos es muy potente porque podemos construir unos objetos en base a otros objetos. Esto nos aporta niveles de abstracción, modularización y jerarquización muy importantes para mejorar la comprensibilidad de los programas y reducir la complejidad de los desarrollos.

Notación de corchetes para acceder a los miembros de los objetos

Vamos a repasar la notación de los corchetes como método de acceso a los miembros de los objetos, ya sean propiedades o métodos para invocarlos.

Módulos en Javascript Gratis

Esta clase la vamos a dedicar a conocer los módulos en Javascript basados en el estándar ECMAScript. Veremos el concepto de módulo y cómo podemos exportar e importar cosas de unos módulos a otros. Los módulos son esenciales para poder organizar de una manera mantenible el código de las aplicaciones y los vamos a usar constantemente para construir nuestros ejemplos durante el curso de Programación Orientada a Objetos en Javascript.

Primeros pasos con Phaser para el desarrollo de juegos

Presentamos en motor para el desarrollo de juegos con Javascript Phaser, que usaremos para las prácticas con Javascript. Gracias a este motor podremos crear fácilmente juegos en Javascript, interactivos y con interfaz gráfica, con el objetivo de aplicar los conocimientos sobre Programación Orientada a Objetos de una manera divertida y motivante.

Presentación de Phaser y primeros pasos

En esta clase vamos a ver qué es Phaser y qué nos ofrece como framework para desarrollo de juegos en Javascript. Además comenzaremos a desarrollar nuestro primer juego con Javascript. Veremos las piezas fundamentales de un juego en Phaser y cómo dar los primeros pasos para colocar objetos en las escenas del juego, haciendo clases independientes que puedan mantener de manera encapsulada su complejidad.

Tutoría de clases en Javascript ES6

En esta clase en vivo estaremos disponibles para responder preguntas y realizar ejercicios extra para incrementar la parte práctica del curso.

Visibilidad de miembros en Javascript moderno

Vamos a explicar el concepto de vista pública y vista privada, así como estudiar cómo impacta en la práctica en el lenguaje Javascript y cómo actualmente podemos encapsular los datos que almacenan los objetos o cómo restringir el acceso a los métodos internos con miembros privados.

Vista pública y vista privada

Comenzamos con un poco de teoría para definir qué es la vista pública y vista privada de los objetos. Por qué es importante mantener privados todos los miembros que no necesiten ser públicos, para fomentar la encapsulación.

Cómo definir atributos privados en las clases

Explicamos la nueva sintaxis para definir propiedades privadas en las clases, de modo que no se puedan acceder desde los objetos.

Cómo definir métodos privados en las clases

También es posible definir métodos privados, de modo que no se puedan invocar con un objeto.

Getters y setters en Javascript

Otra manera de crear propiedades en Javascript es por medio de getters y setters. Existen desde hace mucho y en realidad pertenecen a Javascript tradicional pero los veremos en este bloque por si acaso no los conoces. Explicaremos qué son los getter y los setter y cómo funcionan con ejemplos.

Miembros de clase

En la programación orientada a objetos, además de las propiedades y los métodos que pertenecen a los objetos instanciados, también podemos tener propiedades y métodos que pertenecen a la propia clase, también llamados estáticos: propiedades estáticas o métodos estáticos. Vamos a explicar para qué usarlos y cómo crearlos en Javascript.

Miembros de objeto vs miembros de clase

Vamos a explicar qué son los miembros de clase y ponerlos en contraste con los miembros de objeto que hemos conocido hasta ahora. Entenderemos las diferencias entre estos dos tipos de miembros y por qué necesitamos los miembros de clase.

Crear y acceder a propiedades estáticas en Javascript

Ejemplo práctico de propiedades de clase (estáticas) en Javascript.

Crear y ejecutar a métodos estáticos en Javascript

Veremos ejemplos de implementación y uso de métodos estáticos en Javascript.

Miembros de clase dinámicos

Además de los miembros de clase definidos con static dentro del código de la clase también podríamos hacer miembros de clase dinámicos, creados en tiempo de ejecución. Veremos de qué se trata, cómo se pueden hacer y las diferencias entre los miembros estáticos tradicionales.

Herencia

Ahora vamos a abordar la herencia en la programación orientada a objetos. Un mecanismo esencial para dominar este paradigma y obtener todo su potencial.

Qué es la herencia en la programación orientada a objetos

Un poco de teoría para explicar el mecanismo de herencia en el mundo de la programación orientada a objetos y la importancia que tiene.

Cómo implementar herencia en Javascript

Veremos ejemplos de herencia en Javascript, de modo que aprenderemos a implementarla, a la vez que vemos casos útiles donde le podemos sacar partido.

Sobreescritura de métodos

Qué es la sobreescritura de métodos en Javascript, con ejemplos prácticos sobre para qué lo podemos utilizar.

Constructores y herencia

Cómo funcionan los constructores en la herencia y el uso de super().

Tutoría de clases en Javascript y herencia

Presentamos otra tutoría donde seguiremos ampliando las prácticas del curso y donde podremos resolver dudas en vivo de los estudiantes.

Reutilizar otros métodos de la superclase mediante super

Ahora vamos a ver que es posible la invocación de cualquiera de los métodos, tal como se han definido en la superclase, por medio de super y el nombre del método que queremos invocar tal como se implantó en la clase padre.

Miembros privados y herencia

Cuando trabajamos con herencia importa mucho cómo se definieron los métodos en la clase padre en lo que respecta a la visibilidad, es decir, si eran públicos o privados. Veremos qué pasa con los atributos y métodos privados, cuando los necesitamos usar en las clases derivadas.

Miembros estáticos y herencia

Los miembros estáticos también tienen algunas cosas que necesitamos entender cuando estamos trabajando con herencia en programación orientada a objetos. Veremos cómo funciona en Javascript, que es orientado a prototipo, y las diferencias con otros lenguajes de programación orientada a objetos más tradicionales que puedas conocer, del estilo de Java.

Ejemplos reales de herencia en el desarrollo Web con Web Components

En este vídeo vamos a mostrar de manera práctica unos ejemplos de componentes estándar de Javascript, lo que llamamos "Web Components". Este estándar usa el mecanismo de herencia para la definición de "Custom Elements", que son componentes que sirven para crear nuevas etiquetas con las que extender el HTML. Veremos un ejemplo de componente que extiende la clase nativa HTMLElement y luego haremos un nuevo componente que extiende otros custom Element. Todo esto nos permitirá ver que la herencia es un mecanismo básico también para el desarrollo frontend nativo y además nos servirá para ver ejemplos claros y realistas de "herencia por extensión".

Herencia simple y herencia múltiple

Qué es herencia simple y herencia múltiple. Problemáticas de la herencia múltiple. En Javascript podemos implementar de manera directa la herencia simple pero también podríamos realizar técnicas para conseguir herencia múltiple por medio de mixins que vamos a explicar.

Polimorfismo

No podemos dar un curso de programación orientada a objetos sin mencionar el polimorfismo. Sin embargo, por las características de Javascript este concepto no se aplica del mismo modo que en otros lenguajes como Java.

Qué es el polimorfismo

Un poco de teoría para explicar de manera genérica qué es el polimorfismo en los lenguajes de programación y por qué es importante.

Cómo aplica el polimorfismo en Javascript

Ahora vamos a ver cómo se aplica este concepto de polimorfismo en el lenguaje Javascript. Veremos cómo los objetos pueden tener métodos compartidos incluso sin herencia.

Aplicando polimorfismo mediante colaboradores de clases

Vamos a avanzar un poco más en la práctica de polimorfismo para llevarla a un nivel un poco más ortodoxo dentro del desarrollo orientado a objetos, creando una clase que es capaz de colaborar con distintas clases polimórficas.

Polimorfismo típico de lenguajes tipados y cómo refleja en Javascript

Javascript es un lenguaje muy maleable con aplicaciones de polimorfismo muy variopintas. Pero para que nos quede un poco más claro el concepto de polimorfismo y la práctica en Javascript frente a lenguajes más tradicionales, vamos a explicar cómo funcionan los lenguajes tipados a la hora de hacer polimorfismo. Mencionaremos algunas cosas extra que existen en lenguajes tipados, como las clases abstractas o las interfaces, que no existen en Javascript directamente, pero que queremos que al menos hayáis oído hablar de ello para tener un conocimiento un poco más general.

Modelado orientado a objetos

Ahora que ya tenemos un buen conjunto de conocimientos de programación orientada a objetos vamos a aprender a modelar software orientado a objetos, conociendo los distintos tipos de relación y sus representaciones.

Relación de composición

Explicamos la relación de composición, viendo ejemplos prácticos y la representación en diagramas de UML.

Añadir a Google Calendar
Relación de uso

Explicamos la relación de uso, viendo ejemplos prácticos y la representación en diagramas de UML.

Añadir a Google Calendar
Relación de asociación y agregación

Explicamos la relación de asociación y agregación, viendo ejemplos prácticos y la representación en diagramas de UML.

Añadir a Google Calendar
Definición del modelo del dominio

Vamos a ver cómo definir el modelo de dominio de un juego y cómo representar las distintas entidades con sus relaciones.

Añadir a Google Calendar

Práctica final de programación orientada a objetos

Como práctica final vamos a mostrar cómo desarrollar un juego, realizando un buen reparto de responsabilidades.

Conceptos sobre el framework de Juegos Phaser

Para realizar un juego en Javascript nos vamos a apoyar en el framework Phaser. Comenzamos haciendo un repaso de las funcionalidades básicas del framework para poder entenderlo.

Añadir a Google Calendar
Implementación de un juego en Javascript con Phaser

Veremos cómo implementar un juego con Phaser, paso por paso, aplicando todos los conceptos vistos durante este curso de orientación a objetos en Javascript.

Añadir a Google Calendar

Valoraciones

Enrique Gálvez

Gracias Miguel por actualizar el curso de objetos Javascript. Está todo clarísimo y tu incorporación del framework de juegos Phaser es genial para hacer clases prácticas más divertidas.

¿Conoces nuestra tarifa plana?

Toda la formación de EscuelaIT, con más de 200 cursos completos para aprender las más variadas tecnologías de programación, diseño y marketing online. Todo! con tu suscripción.

Suscríbete