Curso de Diseño Orientado a Objetos

Curso de Ingeniería del software que aborda la disciplina de diseño, diseño modular y diseño orientado a objetos.
Material disponible
Avanzado
13 Clases 24 h
110€
95€
Precio en promoción
El Curso de Análisis y diseño de software es un curso dirigido a usuarios con conocimientos de Programación Orientada a Objetos  que desean aumentar su desempeño y la calidad de su trabajo como programadores.

Qué aprenderé en el Curso de Diseño Orientado a Objetos

  • Los objetivos del diseño de software, diseño modular y diseño orientado a objetos
  • Diseñar relaciones entre clases para encontrar las mejores soluciones
  • Entender y aplicar los principios del código de calidad
  • Reconocer smell codes y antipatrones
  • Saber aplicar correctamente patrones para permitir un diseño modular
  • Entender el Principio Open / Closed
  • Maximizar la reusabilidad del código
  • Conocer y aplicar técnicas y principios para mejorar la flexibilidad del software

Objetivos del curso

El Curso de Diseño Orientado a Objetos tiene como objetivo abordar la calidad del software, y una de las disciplinas más importantes de la ingeniería del software como es el diseño. Establece los fundamentos mediante la relación de los conceptos clave en tres etapas diferenciadas: Diseño, Diseño Modular y Diseño Orientado a Objetos.

Durante el curso veremos diversos tipos de antipatrones y "smell codes" que nos ayudarán a detectar problemas en el desarrollo del software y encontrar mejores soluciones, aplicando principios de calidad que permitan un crecimiento controlado de los proyectos, maximizando características deseables como legibilidad, escalabilidad, mantenibilidad… alta cohesión, bajo acoplamiento y granularidad… evitando la rigidez y viscosidad que imposibilitan la evolución del software, la ineficaz fragilidad, y la ineficiente ausencia de reusabilidad.

Toda la teoría se aterrizará en la práctica con un enfoque iterativo incremental, realizando hasta 8 soluciones de diseño de complejidad creciente, en las que se van incorporando más necesidades que surgen con la evolución del proyecto. Comenzaremos con un diseño sencillo, de una quincena de clases, acabando en una solución extensible, con el triple de clases pero cumpliendo el Principio Abierto/Cerrado.

INDICE DE CONTENIDOS

Diseño del software

  • Modelo del Dominio

    • Estrategias de Clasificación
    • Antipatrón “Descomposición Funcional”
    • Relaciones entre Clases
  • Legibilidad

    • KISS
    • Formato
    • Comentarios
    • Nombrado
    • Estándares
    • Consistencia
    • Alertas
    • Código Muerto
    • YAGNI
    • DRY

Diseño Modular

  • Modularidad
    • Número de módulos
    • Distribución de responsabilidades
  • Jerarquización
  • Interfaz
    • Código Sucio por Clases Alternativas con Interfaces Diferentes
    • Principios del Menor Compromiso y la Menor Sorpresa
    • Interfaz Suficiente, Completa y Primitiva
    • Diseño por Contrato
  • Implemetación
    • Cohesión
    • Acoplamiento
    • Tamaño
  • Patrón de Indirección
    • Patrón de Invención Pura
    • Patrón Vista Separada
    • Patrón Controlador
    • Patrón Creador

Diseño Orientado a Objetos

  • Teoría de Lenguajes
    • Datos polimórficos
    • Operaciones polimórficas
  • Principio Open / Closed
  • Reusabilidad
    • Herencia vs Parametrización
    • Herencia vs Composición
    • Patrón Método Plantilla
  • Flexibilidad
    • Clases Abstractas e Interfaces
    • Principio Separación de Interfaces
    • Principio de Inversión de Dependencias
    • Inversión de Control
    • Inyección de Dependencias
    • Principio de Sustitución de Liskov
    • Herencia vs Delegación
    • Técnica de Doble Despacho
    • Jerarquización

Los ejercicios se intercalarán tras la exposición de cada tema y en ellos podremos ver distintas versiones del proyecto, con diseños que emergen a medida que los requisitos evolucionan.

Por qué debes aprender Diseño de software

Este curso es fundamental para cualquier desarrollador que pretenda desempeñarse correctamente en una disciplina tan compleja como la del diseño de software. Dado que todo software debe poder cambiar, para adaptarse a necesidades siempre crecientes, resulta extremadamente importante mantener una elevada calidad del código comenzando con un correcto diseño.

En este curso el estudiante podrá reconocer cuáles son las malas prácticas en el desarrollo y cómo aplicar las técnicas y patrones para conseguir buenos diseños que permitan maximizar su flexibilidad, extensibilidad y con ello la mantenibilidad.

Qué tengo que saber

El estudiante de este curso debe tener conocimientos de programación y de programación orientada a objetos. Debería tener experiencia previa en el desarrollo de software y de preferencia haber realizado previamente el Curso de Recurrencia del Desarrollo de Software y el Curso de Programación Orientada a Objetos.

Clases y contenidos

Para qué necesitamos el Diseño Orientado a Objetos

En esta clase vamos a abordar el diseño orientado a objetos de una manera introductoria. Es una de las disciplinas más importantes en el desarrollo de proyectos, que resultará esencial para el éxito de los desarrollos.

Primero vamos a ver dónde encaja esta disciplina dentro de toda la línea de aprendizaje que un desarrollador profesional debe hacer, o tener muy clara. Veremos qué incluye este tema de estudio, qué temas debemos haber realizado con anterioridad y qué puertas nos abrirá para seguir estudiando ingeniería del software. Lo veremos en el marco del Máster de Desarrollo de EscuelaIT.

Luego comenzamos ya la clase de Diseño propiamente dicha, abordando qué es el diseño, qué es el análisis y cuáles son las motivaciones para estudiarlo. Por qué es importante realizar un buen diseño y cómo lo vamos a realizar.

También hacemos un análisis de todo el contenido que veremos a lo largo del Curso de Diseño de Software.

Dependencias entre clases (Relaciones entre clases)

En esta clase se continua con la parte de diseño, explicando cuáles son las distintas dependencias entre clases. Se explica de manera detallada cuales son los supuestos que nos harán decidir entre uno u otro tipo de dependencia, atendiendo a factores como el modelo del dominio y las necesidades del software. Como dependencia entendemos lo que antes se llamaba "relaciones entre clases". Es lo mismo, simplemente que le han cambiado el nombre.

Legibilidad del código. Smell codes

En esta clase se realiza un repaso de las relaciones entre clases y se aborda la relación de herencia, que nos faltaba por ver.

Posteriormente comenzamos el tema de legibilidad del código, abordando los primeros smell codes, como son: KISS, Formato, Comentarios y Nombrado.

Final tema de Diseño Orientado a Objetos

En esta clase terminamos el tema primero de este curso, dedicado al Diseño Orientado a Objetos. Se responderán las preguntas planteadas desde la clase anterior y luego se realizará un repaso general al tema de diseño, para acabar con los últimos puntos que nos quedaban por ver, centrados en los smell codes que, por supuesto, tenemos que evitar.

Diseño modular

Inicio del segundo tema del curso, dedicado al Diseño Modular. En este vídeo veremos qué problemas tenemos actualmente con el desarrollo de software, por qué es insuficiente escribir un código legible para desarrollar un software de calidad.

Luego veremos qué tres factores son fundamentales para conseguir mejores resultados:

  • Cohesión
  • Acoplamiento
  • Tamaño

Son conceptos que ya hemos conocido en temas anteriores, pero que se van a ampliar en este curso.

Cómo realizar diseño modular

En este vídeo entramos en el "¿Cómo?" del tema de Diseño Modular. Veremos cómo se debe de realizar el diseño modular, abordando en la mayoría del tiempo una práctica de cómo desarrollar el Tic Tac Toe con diseño modular, aplicando una técnica Top-down y explicando la posibilidad de hacer también "bottom-up" o una mezcla de ambas.

Interfaz, diseño por contrato e implantación
  • Interfaz

    • En este apartado veremos un montón de “smell codes” que están en las listas de los mejores libros.
  • Diseño por contrato

    • Veremos la definición y las maneras en las que debemos de trabajar. En este punto abordaremos el tratamiento de errores, los asserts, el protocolo con sus precondiciones y postcondiciones (que derivaron en las pruebas).
  • Implantación

    • Dentro de implementación de las clases tenemos que asegurarnos de la calidad del código por medio de la aplicación de diversos principios. Estos principios básicamente ahondan en el tema de la cohesión, pero han sido presentados como ejemplos de diversos modos específicos: cohesión de métodos, principio de única responsabilidad, junto con otro conjunto de smell codes.
Principios y smell codes de encapsulación y tamaño

En esta clase finalizamos el tema de diseño modular, abordando los principios que tienen que ver con la parte de encapsulación y tamaño de los elementos, así como los smell codes que nos encontramos publicados en los libros de los grandes autores. También hacemos una pequeña explicación de cómo se produce la división de código también en vistas.

Práctica Document / View

En esta clase vemos soluciones de los estudiantes de la práctica solicitada, abordando el juego del mastermind con un diseño "Document / View". Luego vemos una solución estructurada aportada por Luis.

Diseño Orientado a Objetos

En esta clase comenzamos con el último tema del curso, el diseño orientado a objetos. Este tema incorpora nuevas restricciones y leyes a la hora de diseñar el software que serán muy importantes de cara a la calidad de los proyectos. Entre otros puntos, se dedicará bastante tiempo al polimorfismo y al principio open/closed.

Composición frente a herencia y flexibilidad

En esta clase veremos herencia, sus particularidades, especialmente enfrentada a la composición, que en muchas ocasiones ofrece diversas ventajas. Luego entraremos de lleno en la parte de la flexibilidad del código, repasando algunos de los principios SOLID (de los que ya venimos hablando), centrándonos en esta ocasión en la Inversión de Dependencias.

Inyección de dependencias, Liskov, doble despacho y otras leyes y técnicas

Esta es la clase que finaliza el tema del diseño orientado a objetos en la que vemos muchas de las técnicas más importantes de la disciplina. Entre ellas destaca el principio de sustitución de Liskov, la técnica de doble despacho y otras prácticas de diseño.

Práctica final de diseño orientado a objetos

En esta clase comenzamos con una tanda de preguntas de clases anteriores del curso de diseño orientado a objetos y luego pasamos a ver una solución de la práctica final propuesta para este curso, en la que se presenta el código del Mastermind y dos distintas interfaces, de consola y gráficos.

Valoraciones

Javier Jara Fuentes

Agustin

Santiago Rivera Loaiza

Muy buena dinámica... muy buen maestro.

Rubén Galán Jiménez

Julián Cortés

MARTIN ALONSO CASTILLO

xavier gomez canals

Alicia Lizárraga

Rafa Bernal

Gonzalo

Miguel Valiente

Excelente curso, como todo lo que he visto de Luis. Conceptos indispensables para desarrollar buen código que todo programador debería de manejar, explicados además de una forma amena y escandalosamente pragmática. Curso totalmente necesario.

Jose

DOCAL ARTAJO / JAIME

Genial como todos los cursos de Luis Fernández.

Samuel Taboas Rodriguez

iskren

Dego Alejo Rodriguez

Increible Profesor

Antonio José Sinoga

Nicolas

Muy buen curso, para continuar con los que ya viene haciendo Luis

Rubén Badenas Castellanos

CARLOS LOPEZ MARTIN

Luis Javier Gutiérrez Llamazares

Joaquín Ramos Merchán

Eduardo Lizano Arrieta

el profesor tiene buen carisma para hacer las clases agradables y el contenido sencillo en la medida de lo posible

Marcos Antonio Valencia Ramírez

MARIBEL NARGANES

Gran curso

Jose Manuel Campos Soberano

excelente curso de lo mejor

Victor Carchenilla Gomez

Las clases son muy didácticas. Están muy bien preparadas. Se aprecia el esfuerzo de Luis para trnasmitir y preparar las classes.

Leonardo Hakim

Excelente curso.

Visualnacert

Jose Joaquin Meseguer Jimenez

Necesario repaso de los fundamentos aunque las actividades practicas deberian adaptarse a casos reales en nuestro negocio

Maikel Enrique Pernía Matos

Eduard Gallofré Asens

Romulo

observo que la teoría esta muy bien ampliada, falta aterrizarla con un proyecto completo de dominio en el ambito comercial si bien tres es raya ayuda, seria optimo hacerlo en algo mas comercial como gestión de recursos humanos, gestión logística, darnos unos "pincelazos" de como usar la metodologia

Jesús Cabeza Acero

Un tesoro de información, todo bien explicado, paso a paso: Diseño, Diseño Modular, Diseño Orientado a Objetos.

Alex Albuja

En este punto me parece inutil poner un comentario acerca de los cursos de Luis, ya todos los que lo conocemos sabemos la calidad de docencia y contenido.. Excelente!

Ramón de la Guía

Rafael Márquez

Este curso para mí son los cimientos de un buen desarrollador. Esencial

David Guerrero González

rafael torrado

ffgggg

Ilya Kabushko

Pedro Márquez Gomez

Muy interesante

David del Castillo Rodriguez

Muy bueno

Wilfredo José Valderrama Espinoza

excelente

Cristóbal Cobos Budia

Curso avanzado con ejemplos muy buenos para que cualquier persona pueda seguirlo. Clases muy amenas, entretenidas y divertidas.

Tempo Raposo

Diego Forero Torres

GUILLERMO

Daniel Terrones Lavado

Aclara conceptos de diseño que no se toman en cuenta generalmente. Permite entender mejor el concepto respecto a su aplicación en las diversas tecnologías.

Francisco Noguerol Díez

Jaume Baró Moreno

Luis,nos estructura,relaciona y transmite perfectamente el significado y uso de los conceptos.Esto nos facilita su comprensión y la consolidación de todo de ese conocimiento, dotándonos de poderosas herramientas.Lo consigue refactorizando nuestro conocimiento y aportandonos claridad ante el ruido generado por una amalgama de conceptos hasta ahora con baja cohesion y alto acoplamiento eferente.Su discurso es sencillo y simple a pesar de la complejidad arbitraria que incorporan nuestras preguntas.

Victor Moreno

Marco Antonio Fernández

Este curso no es el típico en el que los alumnos deben limitarse a ver, hay que razonar, interiorizar y entender todas las clases. Luis consigue insertar en tu cabeza esos conceptos con eficacia, ordenándolos con sentido y poniéndolos en el contexto adecuado con ejemplos que todo el mundo puede entender fácilmente.

Ana Santamaría Aparicio

Aritz

Ingrid Carolina Peláez

Raul Martin Garces

Alex Sánchez

isainz753

Eduardo Franco Gutierrez

Jose Delgado

Manuel Alejandro Cano Champa

Antonio Berbel Gonzalez

Las clase con Luis son magníficas. Explica todo de manera clara y contundente

Ginés

Como siempre, mucha calidad

Roberto Osco

jose maria español bellera

Pedro Zamora

Emiliano Nunez

Muy bueno!

Jymmy Dextre Alarcon

bastante explicado y detallado, en orden.

Albert Montagut Casero

jack belinson

EscuelaIt eres la mejor plataforma para aprender sobre informática.

RICARDO FERNANDEZ GARCIA

La claridad del profesor con ejemplos y analogías.

Carlos

Antonio

Excelente como todos los de Luis.

Diego Oliva

Excelente curso y master, muy buen profesor

Antonio José Navarro Céspedes

Ramiro

excelente

Yonny Coyla

Carlos Henao

Excelente

Pedro Miguel Alvaro Pina

Antonio Cortes

Es un curso excepcional que me ayuda mucho a pensar, sin embargo me invita también a desarrollar mi pensamiento critico, tuve una reflexion durante mi curso y esta es que cuando comprendo y analizo algún concepto experimento una sensación de relajamiento y bienestar.

Jorge

Víctor Hugo Torres Manrique

Excelente!

Maximiliano Pablo Perrone

Manuel Malvar Tombo

Muy grande Luis! Se nota la experiencia y sabiduría a la hora de explicar. Sin duda el mejor curso de DOO que hay actualmente.

Andres Hoyos

He clarificado muchos conceptos en este curso. Muchas gracias Luis.

Jhonatan

Jose Luis Garcia Cabeza

Una manera mucho más teórica de ver diseño orientado a objetos, aun así es altamente recomendable, tanto para refrescar conocimientos, como para aprender nuevos. Luis como siempre hace un excelentísimo papel.

Sebastian Insignares Tobon

Marcos Teran Parra

Kevin Karahali

Cristian Vargas

Alvaro Ramirez Castillo

muy bueno

Luis Ernesto Montes de Oca Ponce

buen Curso

Francisco Marquez Chaves

Angel Martinez

Pablo Domínguez

Imprescindible

Carlos Rodriguez

Andrés Camacho

Lo recomiendo ampliamente

Ruben Morales Alanis

excelente curso

Jose Luis

Muy buen curso. Toca temas esenciales para el diseño.

Fredy Arias

Muy buen maestro

Fabián Betancourt

ANTONIO LEON MORENO

Nicolas Fumo

Un profesional como luis, con su diccion, trayectoria, conocimientos y forma de acercar los temas a sus alumnos, no se consiguen con facilidad. Es un curso increible!

Carlos Canorea Maestre

Si no sabes programar, aprenderas de la mejor manera un magnifico profesor y muchas practicas. Si sabes programar, te abrira los ojos y querras aprender más de manos de Luis.

WILFREDO LOPEZ

Excelente curso luis es un profesor top un valioso recurso miguelange que debe mantener en tu escuela ya que es un valor irremplazable, ademas en idioma espanol no vas conseguir un curso con esta calidad en ningun otra parte, felicitaciones

Gerson Omar Olivares Aragon

un curso excelente, el enfoque es muy bueno, me ha ayudado a aplicar un análisis mediante diagramas de forma adecuada. luego de intentar buscar lo mismo en otros cursos pagados, finalmente he tenido un buen retorno de inversión, gracias!

Miguel Angel Lopez Arango

El profesor Luis es un crack

Khristian Robayo

Federico Andrés Jácome Castañeda

Otro excelente curso. Muy completo y bien explicado. Gracias

Antonio Ramón Padrón Ferrer

Jorge Rodríguez Santos

Excelente.

Diego Morodo Fidalgo

Simplemente Genial!

Alejandro Henao González

Daniel Expósito

Me parece un curso interesantísimo, sobre todo la parte de "buenas prácticas"

JOSE MANUEL BAREA ORTIZ

Jhon Doe Joe

Que buenas explicaciones da Luis :)

Rene Paul Montes de Oca

Juan Vargas

Juan Carlos Rodriguez Fallas

Literalmente, el mejor material de programación avanzada qué he visto. Muchas gracias

Victor Serrano

Sin lugar a dudas, el mejor curso sobre DOO que he visto hasta la fecha.

Juan Pablo González Cuéllar

Raúl Grados

Excelente curso del profesor Luis, muy didáctico al explicar cada principio, ley y patrones en el diseño general de software.

Francisco Delgado Soldado

El contenido es magnífico, bien explicado y en un orden coherente. Buen equilibrio entre teoría y práctica. Orientación a objetos, sin más.

Roxana Ariza Sánchez

Muy buen curso

Sergio Bou Garcés

Genial. No encontrarás mejor profesor.

Rubian Esteban Ruiz Ospina

Excelente curso, lo mejor que he visto de diseño, gran profesor!!

Braulio Hernandez Chaparro

Luis es probablemente de los mejores profesores que he visto tanto en ámbitos académicos como en cursos online. Tiene una didáctica espectacular que no solo te hace querer seguir avanzando sino que te crea curiosidad por leer toda la biografía y conocer a todos los autores de los que habla. Recomendado 100%.

Manuel Masias

Muy buen curso, recomendado sin duda.

Francisco Javier Tejada Pérez

Oro puro!

Laura Ortuño

Paul Aquino Gutierrez

Muy Buena

Daniel Proaño

Increíble. Un honor haberme cruzado con Luis. Se necesitan esa pasión y respeto por la profesión en la comunidad de desarrolladores de hablahispana.

Eladio Feijoo Freire

Excelente profesor. Genial curso

¿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