Contenido del curso
Contenido del curso
Miguel Santiago Gómez Suárez
Jemina Cardozo
David Elias Gatica Morales
JUAN SILVA
Miguel Andres Rendon Reyes
Pablo Cesar Lara Londoño
Miguel Angel Porras Villarreal
ROMMEL DUAREZ SAENZ
Pablo Cesar Lara Londoño
Hasta ahora los contenidos del maestro Miguel me han parecido excelentes. Cómo siempre explican muy bien la información y es un contenido supremamente condensado que cada clase si se le presta la atención requerida, toma más del tiempo que es ver el video.
Por otro lado, me agradaría que existiera un curso que nos permitiera ver todas las bondades del POO en C#, ya que, en muchas explicaciones se habla de Interfaces, clases abstractas que, actualmente no he encontrado información en C# que hable sobre estos temas dentro de PLATZI. Si existe y me quiere colaborar mostrándome el curso que debería de ver, se los agradezco (Ya realicé varios cursos de C#, pero, ninguno habla sobre genéricos, clases abstractas o interfaces)
Según lo que vi, hay uno de los profesores de la ruta de Backend C# y . NET dijo que si nos gustaría un curso de POO en C#. Por lo que pronto creería que van a subirlo. Saludos!
Yo acabé de tomar el curso de POO no explicaron la parte de interfaces y clases abstractas de lo que entiendo ahora consultando:
Clases Abstractas: las clases abstractas funcionan como una clase que declara la existencia de métodos pero no su implementación.
Interfaces: Los Interfaces son unas clases completamente abstractas que contiene sólo una colección de métodos abstractos y propiedades constantes.
Esta es una tabla comparativa pero con Java.
En C#, puedes seguir el principio OCP siguiendo las siguientes pautas:
Utiliza la herencia y la implementación de interfaces: Define interfaces y clases base que sean genéricas y reutilizables. Luego, crea clases derivadas o implementaciones concretas para extender el comportamiento de estas clases base. De esta manera, puedes agregar nuevas funcionalidades sin modificar las clases existentes.
Aplica el polimorfismo: Utiliza el polimorfismo para tratar diferentes objetos de manera uniforme. Esto te permitirá agregar nuevas clases que implementen una interfaz común o hereden de una clase base, sin tener que modificar el código existente.
Utiliza inyección de dependencias: Diseña tus clases para que dependan de abstracciones en lugar de implementaciones concretas. Luego, utiliza la inyección de dependencias para proporcionar las implementaciones necesarias en tiempo de ejecución. Esto permitirá que el comportamiento de una clase pueda ser extendido sin modificarla directamente.
Utiliza patrones de diseño como el patrón Strategy o el patrón Decorator: Estos patrones permiten agregar o cambiar comportamientos en tiempo de ejecución sin modificar las clases existentes.
Aplica el principio de inversión de dependencia: Diseña tus clases para depender de abstracciones en lugar de detalles concretos. Esto implica que las clases de nivel superior dependan de abstracciones, mientras que los detalles concretos sean dependencias de nivel inferior. De esta manera, las clases de nivel superior permanecerán cerradas para modificaciones y abiertas para extensiones.
Vayan al sitio web de Bertrand Meyer aquí, está muy bueno o cómo decimos en Medallo, una chimba.
Acá una cita de lo que me fascinó.
The use of “statement” to mean “instruction” obscures a fundamental distinction of software engineering: the duality between specification and implementation.
/
Esto me enseñó que debemos diferenciar entre “Statement” o declaración en español e instrucción “Instruction”. Ya que la programación ofrece soluciones para los problemas y para lograr hacerlo es necesario ofrecer como resultado dos insumos: Una declaración del problema y luego la invención que (el código) implementa la invención.
/
Mi recomendación es que sigas aprendiendo del tema y pongas en duda mi interpretación.
excelente explicacion de conceptos solidn
se puede crear un árbol de varios niveles de Interfaces para que las clases de nivel bajo puedan heredar diversos métodos?