SlideShare una empresa de Scribd logo
1 de 53
C# Interfaces
Germán Küber
.Net Developer
Microsoft Student Partner (MSP)
@germankuber
https://aka.ms/NetBaires
http://germankuber.com.ar
Mantenibilidad Extensibilidad
Fácil de Testear
Describen un grupo de funciones relacionadas
que pueden pertenecer a cualquier clase o
estructura.
Contrato Miembros públicos :
 Propiedades
 Métodos
 Eventos
 Índices
Largo = 5
• 3 o mas lados
• Todos los lados iguales
Largo = 5
Perímetro = Nº lados x largo de cada lado
Perimeter = 4 x 5
Perimeter = 20
Perimeter = 3 x 5
Perimeter = 15
Largo = 5
Área = L. Largo x L. Largo
Perimeter = 5 x 5
Perimeter = 25
Área = (L. Largo x L. Largo)/ x Sqrt(3) / 4
Area = 5 x 5 x Sqrt(3) / 4 Area = 10.8
(apróximadamente)
 Clase abstracta : Puede tener implementaciones
 Interfaces: No poseen implementaciones
Comparación: Implementación
Comparación: Herencia
 Clase Abstracta : Herencia simple
 Interface: Herencia múltiple
 Clase Abstracta : Puede tener modificadores de acceso
 Interface: Automáticamente todos sus miembros son públicos
Comparación: Modificadores de Acceso
Contrato
Campos
Propiedades
Contructores
Destructores
Métodos
Eventos
Indices
Propiedades
Métodos
Eventos
Indices
Comparación: Miembros válidos
Clases Abstractas Interfaces
Comparación
Clases Abstractas Interfaces
Mantenibilidad
List<T>
Array
ArrayList
SortedList<TKey, TValue>
HashTable
Queue /Queue<T>
Stack /Stack<T>
Dictionary<TKey, TValue>
ObservableCollection<T>
+
Custom Types
Clases concretas
Colecciones
Interfaces
Interfaces de Colecciones
Extensibilidad
 Relational Databases
 Microsoft SQL Server, Oracle, MySQL, etc.
 Document /Object Databases (NoSQL)
 MongoDB, Hadoop, RavenDB, etc.
 Text Files
 CSV, XML, JSON, etc.
 SOAP Services
 WCF, ASMX Web Service, Apache CXF, etc.
 REST Services
 WebAPI, WCF, Apache CXF, JAX-RS, etc.
 Cloud Storage
 Microsoft Azure, Amazon AWS, Google Cloud SQL
Aplicación
Repositorio
Data Storage
WCFService
Repository
CSV File
Repository
SQLDatabase
Repository
Aplicación
Repositorio Simple
Operaciones
Interface Repository
Clase sin Interface
public class Catalog
{
public string Save()
{
return "Catalog Save";
}
// Other members not shown
}
Catalog catalog = new Catalog();
catalog.Save(); // "Catalog Save"
Declaración Uso
Implementación estándar de Interface
Catalog catalog = new Catalog();
catalog.Save(); // "Catalog Save"
ISaveable saveable = new Catalog();
saveable.Save(); // "Catalog Save"
Declaración Uso
public interface ISaveable
{
string Save();
}
public class Catalog : ISaveable
{
public string Save()
{
return "Catalog Save";
}
// Other members not shown
}
Implementación Explicita
Declaración Tipo Concreto
Variable interface
Castear a Interface
Declaración Implementación
Implementación Explicita
Fácil de Testear
Programa orientado a interfaces
No referenciar clases concretas
Compile-Time Factory
Dynamic Loading
 Se obtiene el tipo y el Assembly de la configuración
 Carga Assembly porReflection
 Creo una Instancia de Repository con Activator
Comparación Factory
Compile-Time Factory Dynamic Factory
Unit Testing
¿ Que queremos Testear ?
Dependencias
Implementar ViewModel
View(UI Elements)
View Model
Repository
Data Storage
Buenas Prácticas
Interface Segregation Principle
List<T> Interfaces
IEnumerable IEnumerable<T>
GetEnumerator()GetEnumerator()
List<T> Interfaces
ICollection<T
>
Count
IsReadOnly
Add()
Clear()
Contains()
CopyTo()
Remove()
List<T> Interfaces
IList<T>
Item /
Indexer
IndexOf()
Insert()
RemoveAt()
Interfaces Granulares
 Si necesito :
 Iterar una Collection /Sequence
 Data Bind a List Control
 Usar LINQ functions
 Si necesito :
 Agregar/Eliminar Items de una
Collection
 Contar Items en una Collection
 Limpiar la Collection
 Si necesito :
 Control sobre el orden de los Items
en una Collection
 Obtener ítem por índice
IEnumerable<T>
IList<T>
ICollection<T>
IPersonRepository
Segregation
Regular Polygon
Clase Abstracta
Person Repository
Interfaces
Dependency Injection
 Código poco acoplado
 Delegación de responsabilidad de obtener instancias
 Patrones de diseño
 Constructor Injection
 Property Injection
 Method Injection
 Service Locator
 Dependency Injection Containers
 Unity, StructureMap, Autofac, Ninject, Castle Windsor, and many
others
Dependency Injection
Mocking
 Crear objetos controlados
 En memoria
 Solo implemento el comportamiento
que quiero
 Ideal para pruebas unitarias
 Mocking Frameworks
 RhinoMocks
 Microsoft Fakes
 Moq
Interfaces en C#
Interfaces en C#

Más contenido relacionado

La actualidad más candente

Características de c sharp
Características de c sharpCaracterísticas de c sharp
Características de c sharp
uccvirtual
 
Programación funcional
Programación funcionalProgramación funcional
Programación funcional
Damián Rotta
 

La actualidad más candente (20)

Progra
PrograProgra
Progra
 
Funciones
FuncionesFunciones
Funciones
 
Comandos c#
Comandos c#Comandos c#
Comandos c#
 
2. Introduccion A C#
2.  Introduccion A C#2.  Introduccion A C#
2. Introduccion A C#
 
6. estructura de programas
6. estructura de programas6. estructura de programas
6. estructura de programas
 
Funciones lenguaje c modulo4
Funciones lenguaje c modulo4Funciones lenguaje c modulo4
Funciones lenguaje c modulo4
 
Proceso de Compilacion
Proceso de CompilacionProceso de Compilacion
Proceso de Compilacion
 
Programacion Funcional
Programacion FuncionalProgramacion Funcional
Programacion Funcional
 
2. Introduccion A C#
2.  Introduccion A C#2.  Introduccion A C#
2. Introduccion A C#
 
ESTRUCTURA DE UN PROGRAMA
ESTRUCTURA DE UN PROGRAMA ESTRUCTURA DE UN PROGRAMA
ESTRUCTURA DE UN PROGRAMA
 
Programación de nivel básico 1. c1. p1.
Programación de nivel básico 1. c1. p1.Programación de nivel básico 1. c1. p1.
Programación de nivel básico 1. c1. p1.
 
Características de c sharp
Características de c sharpCaracterísticas de c sharp
Características de c sharp
 
Programación funcional
Programación funcionalProgramación funcional
Programación funcional
 
Trabajo tutorial de visual C++
Trabajo tutorial de visual C++Trabajo tutorial de visual C++
Trabajo tutorial de visual C++
 
Operadores
OperadoresOperadores
Operadores
 
Tutorial jared
Tutorial jaredTutorial jared
Tutorial jared
 
Visual Basic
Visual  BasicVisual  Basic
Visual Basic
 
COMANDOS DE C#
COMANDOS DE C#COMANDOS DE C#
COMANDOS DE C#
 
Mapa Conceptual del Lenguaje C
Mapa Conceptual del Lenguaje CMapa Conceptual del Lenguaje C
Mapa Conceptual del Lenguaje C
 
Fpr Tema 2 www.fresymetal.com
Fpr Tema 2 www.fresymetal.comFpr Tema 2 www.fresymetal.com
Fpr Tema 2 www.fresymetal.com
 

Destacado

[Objeto De Aprendizaje].
[Objeto De Aprendizaje].[Objeto De Aprendizaje].
[Objeto De Aprendizaje].
Emmanuelle
 
1.vidal vazquez natali vargas cavazos grecia estefani.actividad1.
1.vidal vazquez natali  vargas cavazos grecia estefani.actividad1.1.vidal vazquez natali  vargas cavazos grecia estefani.actividad1.
1.vidal vazquez natali vargas cavazos grecia estefani.actividad1.
Nataly Vidal
 
Objetos de aprendizaje
Objetos de aprendizajeObjetos de aprendizaje
Objetos de aprendizaje
Ramón OVELAR
 
Objetos de aprendizaje
Objetos de aprendizajeObjetos de aprendizaje
Objetos de aprendizaje
CRISTINA
 

Destacado (16)

[Objeto De Aprendizaje].
[Objeto De Aprendizaje].[Objeto De Aprendizaje].
[Objeto De Aprendizaje].
 
8.vidal vàzquez natali.actividad8.
8.vidal vàzquez natali.actividad8.8.vidal vàzquez natali.actividad8.
8.vidal vàzquez natali.actividad8.
 
Diapositivas ova
Diapositivas ovaDiapositivas ova
Diapositivas ova
 
Ultimo objetos de aprendizaje
Ultimo objetos de aprendizajeUltimo objetos de aprendizaje
Ultimo objetos de aprendizaje
 
What are the drivers of an employee benefits strategy?
What are the drivers of an employee benefits strategy?What are the drivers of an employee benefits strategy?
What are the drivers of an employee benefits strategy?
 
Git - Introducción
Git - IntroducciónGit - Introducción
Git - Introducción
 
1.vidal vazquez natali vargas cavazos grecia estefani.actividad1.
1.vidal vazquez natali  vargas cavazos grecia estefani.actividad1.1.vidal vazquez natali  vargas cavazos grecia estefani.actividad1.
1.vidal vazquez natali vargas cavazos grecia estefani.actividad1.
 
Objeto de aprendizaje.
Objeto de aprendizaje.Objeto de aprendizaje.
Objeto de aprendizaje.
 
Objeto virtual de aprendizaje (ova)
Objeto virtual de aprendizaje (ova)Objeto virtual de aprendizaje (ova)
Objeto virtual de aprendizaje (ova)
 
Despliegue y Monitoreo de aplicaciones ASP.NET Core en Linux
Despliegue y Monitoreo de aplicaciones ASP.NET Core en LinuxDespliegue y Monitoreo de aplicaciones ASP.NET Core en Linux
Despliegue y Monitoreo de aplicaciones ASP.NET Core en Linux
 
Objetos de aprendizaje
Objetos de aprendizajeObjetos de aprendizaje
Objetos de aprendizaje
 
Presentacion ovas powerpoint
Presentacion ovas powerpointPresentacion ovas powerpoint
Presentacion ovas powerpoint
 
Objetos de aprendizaje
Objetos de aprendizajeObjetos de aprendizaje
Objetos de aprendizaje
 
Objetos de aprendizaje
Objetos de aprendizajeObjetos de aprendizaje
Objetos de aprendizaje
 
Los objetos virtuales de aprendizaje Ovas y educación
Los objetos virtuales de aprendizaje Ovas y educaciónLos objetos virtuales de aprendizaje Ovas y educación
Los objetos virtuales de aprendizaje Ovas y educación
 
Objetos Virtuales de Aprendizaje. OVA
Objetos Virtuales de Aprendizaje. OVAObjetos Virtuales de Aprendizaje. OVA
Objetos Virtuales de Aprendizaje. OVA
 

Similar a Interfaces en C#

2introduccionallenguajejava 141109171757-conversion-gate02
2introduccionallenguajejava 141109171757-conversion-gate022introduccionallenguajejava 141109171757-conversion-gate02
2introduccionallenguajejava 141109171757-conversion-gate02
Krizztiina Pacheko
 
Lenguajes de programación orientados a objetos
Lenguajes de programación orientados a objetosLenguajes de programación orientados a objetos
Lenguajes de programación orientados a objetos
Doris Aguagallo
 

Similar a Interfaces en C# (20)

Presentación Fitnesse
Presentación Fitnesse Presentación Fitnesse
Presentación Fitnesse
 
Visual basic
Visual basicVisual basic
Visual basic
 
Csharp
CsharpCsharp
Csharp
 
Presentación Java Evolution - GlobalLogic Club
Presentación Java Evolution - GlobalLogic ClubPresentación Java Evolution - GlobalLogic Club
Presentación Java Evolution - GlobalLogic Club
 
Lambdas y API Stream #PerúJUG #Java20
Lambdas y API Stream #PerúJUG #Java20Lambdas y API Stream #PerúJUG #Java20
Lambdas y API Stream #PerúJUG #Java20
 
Java 8 - Nuevas características
Java 8 - Nuevas característicasJava 8 - Nuevas características
Java 8 - Nuevas características
 
Lenguajes de Programación: Clases y objetos
Lenguajes de Programación: Clases y objetosLenguajes de Programación: Clases y objetos
Lenguajes de Programación: Clases y objetos
 
2introduccionallenguajejava 141109171757-conversion-gate02
2introduccionallenguajejava 141109171757-conversion-gate022introduccionallenguajejava 141109171757-conversion-gate02
2introduccionallenguajejava 141109171757-conversion-gate02
 
INTRODUCCION LENGUAJE JAVA
INTRODUCCION LENGUAJE JAVAINTRODUCCION LENGUAJE JAVA
INTRODUCCION LENGUAJE JAVA
 
2) introduccion al lenguaje java
2) introduccion al lenguaje java2) introduccion al lenguaje java
2) introduccion al lenguaje java
 
Lenguajes de programación orientados a objetos
Lenguajes de programación orientados a objetosLenguajes de programación orientados a objetos
Lenguajes de programación orientados a objetos
 
Java 8 introducción a expresiones lambdas y api stream
Java 8  introducción a expresiones lambdas y api streamJava 8  introducción a expresiones lambdas y api stream
Java 8 introducción a expresiones lambdas y api stream
 
Informatica
InformaticaInformatica
Informatica
 
Tap04 poo
Tap04 pooTap04 poo
Tap04 poo
 
Portafolio de evidencias
Portafolio de evidenciasPortafolio de evidencias
Portafolio de evidencias
 
Intro c sharp
Intro c sharpIntro c sharp
Intro c sharp
 
TUTORIAL DE ECLIPSE
TUTORIAL DE ECLIPSETUTORIAL DE ECLIPSE
TUTORIAL DE ECLIPSE
 
Java 8 time to join the future
Java 8  time to join the futureJava 8  time to join the future
Java 8 time to join the future
 
Portafolio de evidencias
Portafolio de evidenciasPortafolio de evidencias
Portafolio de evidencias
 
Tipos de datos
Tipos de datosTipos de datos
Tipos de datos
 

Más de Germán Küber

Más de Germán Küber (20)

Explorando el Diseño de la Memoria en Rust
Explorando el Diseño de la Memoria en RustExplorando el Diseño de la Memoria en Rust
Explorando el Diseño de la Memoria en Rust
 
De Código a Ejecución: El Papel Fundamental del MSIL en .NET
De Código a Ejecución: El Papel Fundamental del MSIL en .NETDe Código a Ejecución: El Papel Fundamental del MSIL en .NET
De Código a Ejecución: El Papel Fundamental del MSIL en .NET
 
Mev Rapido.pptx
Mev Rapido.pptxMev Rapido.pptx
Mev Rapido.pptx
 
Que son los smart contracts.pptx
Que son los smart contracts.pptxQue son los smart contracts.pptx
Que son los smart contracts.pptx
 
De 0 a blockchain developer en 3 meses
De 0 a blockchain developer en 3 mesesDe 0 a blockchain developer en 3 meses
De 0 a blockchain developer en 3 meses
 
Patrones funcionales
Patrones funcionalesPatrones funcionales
Patrones funcionales
 
Patrones de diseño en solidity
Patrones de diseño en solidityPatrones de diseño en solidity
Patrones de diseño en solidity
 
Vertical slice architecture
Vertical slice architectureVertical slice architecture
Vertical slice architecture
 
De 0 a blockchain developer en 3 meses
De 0 a blockchain developer en 3 mesesDe 0 a blockchain developer en 3 meses
De 0 a blockchain developer en 3 meses
 
Diamon pattern presentation
Diamon pattern presentationDiamon pattern presentation
Diamon pattern presentation
 
Patrones funcionales
Patrones funcionalesPatrones funcionales
Patrones funcionales
 
Defensive code
Defensive codeDefensive code
Defensive code
 
Programación Funcional C#
Programación Funcional C#Programación Funcional C#
Programación Funcional C#
 
Unit testing consejos
Unit testing   consejosUnit testing   consejos
Unit testing consejos
 
Defensive code C#
Defensive code C#Defensive code C#
Defensive code C#
 
Event sourcing
Event sourcingEvent sourcing
Event sourcing
 
C sharp 8
C sharp 8C sharp 8
C sharp 8
 
Arquitectura en aplicaciones Angular y buenas practicas.
Arquitectura en aplicaciones Angular y buenas practicas.Arquitectura en aplicaciones Angular y buenas practicas.
Arquitectura en aplicaciones Angular y buenas practicas.
 
Un mundo sin if. generics al rescate
Un mundo sin if. generics al rescateUn mundo sin if. generics al rescate
Un mundo sin if. generics al rescate
 
Azure 360º para Desarrolaldores
Azure 360º para DesarrolaldoresAzure 360º para Desarrolaldores
Azure 360º para Desarrolaldores
 

Último

EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
FagnerLisboa3
 
Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
AnnimoUno1
 

Último (15)

presentacion de PowerPoint de la fuente de poder.pptx
presentacion de PowerPoint de la fuente de poder.pptxpresentacion de PowerPoint de la fuente de poder.pptx
presentacion de PowerPoint de la fuente de poder.pptx
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptx
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
Presentación de elementos de afilado con esmeril
Presentación de elementos de afilado con esmerilPresentación de elementos de afilado con esmeril
Presentación de elementos de afilado con esmeril
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdf
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 
Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
 
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfRefrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 

Interfaces en C#

Notas del editor

  1. Quiero q se lleven: - La visión de MS hoy en día - Cómo está el mercado y a que apunta - Cambio cultural para poder adaptarse - DevOps como metodología a utilizar para poder adaptarnos a lo nuevo (no es un nuevo concepto) - Ambientes de Dev and Test en Azure, pricing.
  2. Es mejor liberar nuestro código con una característica menos, que hacerlo con una que pone el riesgo todo le proyecto. Todo esto solo es posible si un miembro del equipo toma la pelota y plantea inquietudes y alternativas.
  3. Es mejor liberar nuestro código con una característica menos, que hacerlo con una que pone el riesgo todo le proyecto. Todo esto solo es posible si un miembro del equipo toma la pelota y plantea inquietudes y alternativas.
  4. Es mejor liberar nuestro código con una característica menos, que hacerlo con una que pone el riesgo todo le proyecto. Todo esto solo es posible si un miembro del equipo toma la pelota y plantea inquietudes y alternativas.
  5. Es mejor liberar nuestro código con una característica menos, que hacerlo con una que pone el riesgo todo le proyecto. Todo esto solo es posible si un miembro del equipo toma la pelota y plantea inquietudes y alternativas.
  6. Leyes y reglas que deben de respetar. Responsabilidad en cada una de sus acciones. Consecuencia por sus acciones. Como el software puede beneficiarse de todas esas técnicas.
  7. Es mejor liberar nuestro código con una característica menos, que hacerlo con una que pone el riesgo todo le proyecto. Todo esto solo es posible si un miembro del equipo toma la pelota y plantea inquietudes y alternativas.
  8. Es mejor liberar nuestro código con una característica menos, que hacerlo con una que pone el riesgo todo le proyecto. Todo esto solo es posible si un miembro del equipo toma la pelota y plantea inquietudes y alternativas.
  9. Leyes y reglas que deben de respetar. Responsabilidad en cada una de sus acciones. Consecuencia por sus acciones. Como el software puede beneficiarse de todas esas técnicas.
  10. Es mejor liberar nuestro código con una característica menos, que hacerlo con una que pone el riesgo todo le proyecto. Todo esto solo es posible si un miembro del equipo toma la pelota y plantea inquietudes y alternativas.
  11. Es mejor liberar nuestro código con una característica menos, que hacerlo con una que pone el riesgo todo le proyecto. Todo esto solo es posible si un miembro del equipo toma la pelota y plantea inquietudes y alternativas.
  12. Leyes y reglas que deben de respetar. Responsabilidad en cada una de sus acciones. Consecuencia por sus acciones. Como el software puede beneficiarse de todas esas técnicas.
  13. Es mejor liberar nuestro código con una característica menos, que hacerlo con una que pone el riesgo todo le proyecto. Todo esto solo es posible si un miembro del equipo toma la pelota y plantea inquietudes y alternativas.
  14. Leyes y reglas que deben de respetar. Responsabilidad en cada una de sus acciones. Consecuencia por sus acciones. Como el software puede beneficiarse de todas esas técnicas.