Curso de Análisis y Diseño Orientados a Objetos
Fundamentos para desarrollar un software de calidad: legible, flexible al cambio, robusto y reutilizable.
Material disponible
Avanzado
12 Clases 26 h
En este curso vamos a abordar las disciplinas necesarias para desarrollar software de calidad, que permita reducir los costes de los proyectos y aumentar la satisfacción del cliente. Estudiaremos el análisis y diseño orientado a objetos a través de principios, leyes, patrones de asignación de responsabilidades, métricas de calidad y criterios para producir un código limpio. Aprenderemos a detectar y solucionar también situaciones indeseables como el código maloliente y los antipatrones de desarrollo.

Es un curso dirigido a profesionales con conocimientos de Programación Orientada a Objetos, indispensable para aquellos que desean aumentar su desempeño y la calidad de su trabajo como programadores.

Con el siguiente vídeo puedes encontrar una excelente aproximación al contenido del curso, que grabamos en directo con Luis Fernández, nuestro profesor.

Qué aprenderé en el Curso de Análisis y Diseño Orientados a Objetos

A lo largo del curso abordaremos diversas temáticas, de necesario conocimiento y aplicación para desarrollar proyectos con alta calidad de código, maximizando los beneficios de la Programación Orientada a Objetos.

El curso consta de 20 horas. La distribución de la carga horaria se reparte a lo largo de tres puntos fundamentales:

Tema 1: Software (4h) Definiciones generales y sus relaciones, de necesario conocimiento para entender el resto de los temas

Tema 2: Análisis (3h) Enfoques y estrategias que conducen a un análisis de calidad

Tema 3: Diseño (13h) Pautas en lógica positiva (principios, leyes, patrones de asignación de responsabilidades, …) y negativa (antipatrones y código maloliente) que conducen a un diseño de calidad

Qué tengo que saber

Para el acceso al curso de Análisis y Diseño Orientado a Objetos se requiere conocer los fundamentos de la Programación Orientada a Objetos, es decir, tener claros conceptos como Clases, objetos, métodos, atributos, herencia.

Clases y contenidos

Introducción al análisis y diseño orientados a objetos Gratis
  • Qué es el análisis y diseño orientados a objetos?
Naturaleza del código
  • Abstracción
  • Acoplamiento
  • Encapsulación
Diseño de software
  • Introducción a diversos puntos de la teoría, aclarando conceptos que se verán con detalle durante las etapas prácticas, cuando veamos código.
  • Factores de calidad del software, a distintos niveles, las cuales dependen en mayor o menor medida de la calidad del diseño. No solo se verán los aspectos fundamentales deseables en un desarrollo, sino también descripciones de los factores que reducen la calidad del software. También se introducen diversas metodologías de desarrollo.
  • Comenzamos con la parte práctica, explicando la metodología con la que vamos a seguir el resto del curso. Comenzamos a ver un código de un programa que tomaremos como base. Al principio ese código está realmente mal y a medida que se aprendan los conceptos de análisis y diseño se irá modificando y aplicando las correcciones deseadas.
Introducción al análisis
  • Siguiendo la metodología práctica del curso se identifican nuevos problemas en el código de la aplicación con la que vamos a trabajar
  • Problemas de diseño y sus soluciones
    • Código mal comentado
    • Mal nombrado
    • Descomposición funcional
    • Clases grandes
  • Comenzamos a ver análisis, abordando diversas estrategias de análisis:
    • Análisis clásico, por dominio, comportamiento.
    • Veremos algunos asuntos interesantes como GRASP DRY
Prácticas de análisis y diseño
  • Conceptos de análisis como cohesión, acoplamiento, etc., necesarios para entender las siguientes decisiones de modificación de nuestro proyecto.
  • Durante las prácticas del curso pasaremos a crear nuevas versiones de la aplicación. Creando diversos pasos:
    • De una clase muy grande, atendiendo a los nuevos conocimientos de análisis pasaremos a una nueva versión con una jerarquía de varias clases.
    • En la nueva versión del código detectamos nuevos problemas, como cambios divergentes o código muerto.
    • En la siguiente aplicaremos YAGNI para obtener una nueva versión de nuestro código. Nuevas versiones del código en las que observaremos problemas como clases perezosas, cirugía a escopetazos, el principio de la mínima sorpresa...
Nuevas prácticas
  • Nuevas prácticas en las que vamos reconociendo nuevos problemas en el código y creando nuevas versiones de la aplicación para solucionarlas.
    • DRY y Listas de parámetros largas
    • KISS y Métodos largos
  • Nuevos conceptos de diseño de clases, como el diseño por contrato, aplicando estos conocimientos a nuevas versiones de nuestra aplicación.
Resumen del análisis y diseño visto hasta el momento
  • Repaso a todos los conceptos de análisis y diseño aplicados durante las clases prácticas, con la intención de recopilar toda la teoría vista hasta el momento y organizar las ideas de manera global.
  • Práctica para seguir implementando cambios en la aplicación, para reflejar mejoras atendiendo a relaciones entre clases
Nuevas mejoras de análisis y diseño
  • Nuevas mejoras en la aplicación y nuevos conceptos de análisis y diseño:
    • Inapropiada intimidad
    • Reusabilidad por herencia y relación por herencia
    • Principio de sustitución de Liskov
    • Relación de herencia vs composición
    • Controlador por caso de uso etc
Ampliando la funcionalidad
  • Código sucio por herencia rechazada y patrón método plantilla
  • Polimorfismo
  • Diseño deseable pensando en la ampliación de funcionalidad por el cambio de requisitos
  • Inversión de control
Retorciendo el diseño
  • Nuevas modificaciones para retorcer el diseño y conseguir que todo pueda crecer hasta el punto que se desee, manteniendo todos los principios vistos hasta el momento.
  • Además vemos jerarquías de herencia paralelas, creador, leyes de Demeter, etc.
Llevando el diseño más allá
  • Cómo el empaquetado facilita o permite la colisión de nombres.
  • Principio de única responsabilidad (uno de los principios SOLID).
  • Técnica del doble despacho e inversión de dependencias.
Extra repaso final, Inversión de dependencias y Open Close
  • Inversión de dependencias y el principio abierto/cerrado.
  • Qué ventajas conseguimos gracias al diseño final: robusto, flexible, legible, reusable…
  • Repaso final a todo el conocimiento del curso y cómo debemos orientar nuestro conocimiento para trabajar a partir de ahora.

Valoraciones

Rafael Escala

Roberto Delgado Sánchez

Jaime Aguila Sanchez

Jaime Vilca

Jean Pool

Danny

David Domenech

isainz753

Francisco Javier Herrera Sanchez

Pedro Escudero

JOSÉ MANUEL SOTELO JIMENEZ

Fahed

Jaime Castrillo Elvir

eniel lorenzo

JMSanchez

Jose Alberto Chamorro Moreno

Ingrid Carolina Peláez

Arturo Portable

Jose Joaquin Meseguer Jimenez

Holden

José Ramón Barreras Flores

ZyControl Richard Alvarez Mamani

Lisandro Martinez

Juan Torres Villarroel

jonhathan rodas

Xabier Bikuña

Manuel Argiz

madebyivan

Christian Barrios Fragozo

Renso Valencia

El profesor es un capo, espero pueda brindar una charla sobre cómo empezó en el software hasta que termino convirtiéndose en el arquitecto que es

DAVID MANUEL

Roberto Mendoza Ulecia

Rafael Cruz Mendoza

David

Oscar Andres Guevara Arias

Es el curso definitivo para entender POO

Lydia Tapiero Eljarrat

Me gustaría que se enviaran ejercicios prácticos, para que el curso fuera todavía más perfecto. Y a veces se hacen pesadas tantas preguntas.

Ramón de la Guía

Maximiliano perrone

Sashir Estela

Hugo Felipe Alavez Bautista

Javier Vañó

¿Conoces nuestra tarifa plana?

Toda la formación de EscuelaIT, con más de 130 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