Segregación de Interfaces en Programación SOLID
Clase 12 de 16 • Curso de Principios SOLID en C# y .NET
Contenido del curso
Clase 12 de 16 • Curso de Principios SOLID en C# y .NET
Contenido del curso
Raúl Ernesto Guillén Hernandez
Cristofer Vargas Morales
Luis Fernando Forero Guzmán
Wilson Alexánder Laguna Cárdenas
Harim Salazar Islas
Juan Sebastian Viazzo Perrone
Harold Zurita Simon
Miguel Angel Reyes Moreno
Cristofer Vargas Morales
Luis Vargas
Francisco Javier Pineda Giraldo
Miguel Teheran
Miguel Teheran
David Alejandro Ruiz Gonzalez
Miguel Teheran
Fabio Andres Amaris
Miguel Teheran
Cristofer Vargas Morales
Cristofer Vargas Morales
Alexander Sencion Cespedes
Cristina Alejandra Morales Oñate
Sergio Sanchez
Andrés González Arévalo
Falto agregar IDesingActivities a ScrumMaster
Si no lo implementa, el método void Design() será interpretado como un método específico de la clase ScrumMaster. Recuerda que una clase está obligada a implementar los métodos de las interfaces pero también puede tener sus propios métodos y propiedades.
Sin embargo, para este caso, lo ideal es que si va a usar ese método, lo implemente de la interface IDesingActivities ya que se ha hecho para dicho propósito Pero si no lo hace el compilador no dará error.
Lo otro que se puede hacer es que la clase ScrumMaster puede tener un método void Design(tipo1 param1, tipo2 param2...) con parámetros adicionales. De esta manera ese método será por sobrecarga, donde el método void Design() sin parámetros deberá implementarse en caso la clase ScrumMaster implemente la interface IDesingActivities, caso contrario no.
Arquitecto -> Architect :P
🤣
¡Wow! Se puede hacer herencia entre interfaces, esa no me la sabía. :D
Lindo ejemplo suma! me encantaria que sean "Mas relacionados a trabajos" no un codigo prolijo, y entendible.
Este curso es demasiado bueno para entender SOLID ✌.
Creé una interfaz para los ingenieros Cloud:
namespace InterfaceSegregation { public class Cloud { public void CreateCloud() { System.Console.WriteLine("I'm creating the Cloud Infrastructure"); } } }
Y la uso en Program.cs:
using InterfaceSegregation; new Developer().Develop(); new Cloud().CreateCloud();
Mi aporte. He agregado una Interface IProductActivities y una clase ProductOwner
IProductActivities
ProductOwner
Clase Program
Resultados
Muy bien explicado
Hola Miguel, podría hacerse un proyecto base con el cual explicar todos los conceptos, y que al final sea mas parecido a una app del mundo real?
Es un poco complejo y llevaría más tiempo pero puede hacerse
También se perderia un foco lo de explicar SOLID, nos enfocariamos en contruir toda una APP desde 0, seria otro tipo de curso
Por favor organicen o revisen la carga de los videos, no entiendo por qué es tan lenta, tengo 300 Mb simétricos de velocidad de internet y los videos se pegan mucho; es la única plataforma en la que me pasa eso.
Han habido algunos problemas con esto, estan mejorando la infra para daar el mejor servicio.
No se hasta que punto seria bueno implementar interfaces tanto para la lógica del negocio como para todo tipo de situaciones, ya que me da la sensación de que entre mas crezca el código base mas espacio ocupa tanto en código como en memoria. sacando de lado los test unitarios que es donde se usa fuertemente
De hecho las intefaces ayudan a minimizar el uso de memoria por que son tipos mas ligeros y particulares. Ademas de las pruebas unitarias nos. ayudan con la implementación de patrones de diseño, a que el código quede desacoplado y fácil de mantener en el tiempo.
Mi aporte.
Agregué una Interface IproductActivities y una clase ProductManager que implementa de IProductActivities.
IProductActivities abstrae responsabilidades de Product Owner.
Mi aporte, agregué la In
Reto:
Role DevOps
namespace InterfaceSegregation { public class DevOps : IDeploy { public DevOps() { }
public void Deploy() { Console.WriteLine("The new implementation will be release on November 30"); } }
}
Activity: Deploy
namespace InterfaceSegregation { public interface IDeploy { void Deploy(); } }
// New rol: TechLead
namespace InterfaceSegregation{ public interface ITechLeadActivities: IWorkteamActivities, IDevelopActivities { void EstablishingProjectSpecifications (); void OverseeingSoftwareQuality(); }}
namespace InterfaceSegregation{ public class TechLead : ITechLeadActivities { public TechLead() { } public void Plan() { throw new ArgumentException(); } public void Comunicate() { throw new ArgumentException(); } public void Develop() { Console.WriteLine("I'm developing the functionalities required"); } public void EstablishingProjectSpecifications() { throw new ArgumentException(); } public void OverseeingSoftwareQuality() { throw new ArgumentException(); } }}
Cuando no hay access modifier en una interfaz, esta toma por defecto el accesso private, aparentemente.
Por defecto, cuando no se indica el modificador de visibilidad a un método de la interfaz, éste es público ya que sino no se podría implementar.