static void Main(string[] args) { Console.Title = "Tutorial C# nivel Avanzado 28 --- Manejo de interfaces con métodos"; // Arrays de interfaces IElectronico[] teles = { new CTelevisor("Charp"), new CTelevisor("Zony"), new CRadio("RCB"), new CTelevisor("Filips") }; IElectronico aparatoCreado = null; for (int n = 0; n < teles.Length; n++) { Console.WriteLine(teles[n]); } Console.WriteLine("---"); // Uso de interfaces con metodos CTelevisor miTV = new CTelevisor("Charp TV"); CRadio miRadio = new CRadio("RCB Radio"); Muestra(miRadio); Muestra(miTV); Console.WriteLine("---"); // Metodo que regresa objeto que implementa la interface aparatoCreado = CreaAparato(); aparatoCreado.Encender(true); Console.WriteLine(aparatoCreado); }
static void Main(string[] args) { //Arreglos de interfaces IElectronico[] teles = { new CTelevisor("Charp"), new CTelevisor("Zony"), new CRadio("RCB Radio"), new CRadio("Phillips") }; IElectronico aparatoCreado = null; for (int n = 0; n < teles.Length; n++) { Console.WriteLine(teles[n]); } Console.WriteLine("--------"); //Uso de interfaces con metodos CTelevisor miTV = new CTelevisor("Charp TV"); CRadio miRadio = new CRadio("RCB Radio"); Muestra(miTV); Muestra(miRadio); Console.WriteLine("--------"); //Metodo que regresa objeto que implementa IElectronico aparatoCreado = CreaAparato(); aparatoCreado.Encender(true); Console.WriteLine(aparatoCreado); Console.ReadKey(); }
// Este metodo puede regresar cualquier objeto que implemente a IElectrónico static IElectronico CreaAparato() { IElectronico aparato = null; string dato = string.Empty; int opcion = 0; Console.WriteLine("¿Qué deseas crear? 1-Tele, 2-Radio"); dato = Console.ReadLine(); opcion = Convert.ToInt32(dato); switch (opcion) { case 1: Console.WriteLine("Dame la marca de la televisión: "); dato = Console.ReadLine(); aparato = new CTelevisor(dato); break; case 2: Console.WriteLine("Dame la marca de la radio: "); dato = Console.ReadLine(); aparato = new CRadio(dato); break; } return(aparato); }
static IElectronico CrearAparato() { IElectronico aparato = null; string dato = string.Empty; int opcion = 0; Console.WriteLine("Que deseas crear? 1-Tele, 2-Radio"); dato = Console.ReadLine(); opcion = Convert.ToInt32(dato); if (opcion == 1) { Console.WriteLine("Dame la marca de la tele"); dato = Console.ReadLine(); aparato = new CTelevisor(dato); } if (opcion == 2) { Console.WriteLine("Dame la marca del radio"); dato = Console.ReadLine(); aparato = new CRadio(dato); } return(aparato); }
//Podemos definir un método que devuelve un objeto que implemente una interfaz adecuada, sin especificar el tipo. static IElectronico CreaAparato() { IElectronico aparato = null; string dato = string.Empty; int opcion = 0; Console.WriteLine("1-crear tele, 2-crear radio"); dato = Console.ReadLine(); opcion = Convert.ToInt32(dato); switch (opcion) { case 1: Console.WriteLine("Marca de la tele->"); dato = Console.ReadLine(); aparato = new CTelevisor(dato); break; case 2: Console.WriteLine("Marca de la Radio->"); dato = Console.ReadLine(); aparato = new CRadio(dato); break; } return(aparato); }
static void Main(string[] args) { /*arreglo interfaz*/ IElectronico[] electronicos = { new tele("JVC"), new radio("daiutsu"), new tele("ASUS") }; /*se permite hacer un arreglo de los comunes a ielectronico*/ foreach (IElectronico implementados in electronicos) { Console.WriteLine(implementados); /*ARREGLO POLIMORFICO*/ } Console.WriteLine("*---*"); tele tele = new tele("sharpey"); radio radio = new radio("stanley"); muestra(tele); muestra(radio); Console.WriteLine("*---*"); IElectronico electronico = null; electronico = CrearAparato(); electronico.encender(false); Console.WriteLine(electronico); /*to muestra comun podriamos agregar*/ Console.ReadKey(); }
static void Main(string[] args) { //array de Interfaces //Todos los objetos del siguiente array implementan la misma interfaz.. no tienen porqué estar relacionados o pertenecer a la misma //cadena de herencia. Lo único que tienen en comun es que implementna la interfaz //Es un array con capacidades polimorficas IElectronico[] teles = { new CTelevisor("Sony"), new CTelevisor("Telefunken"), new CRadio("Panasonic"), new CRadio("Thompson") }; IElectronico aparatoCreado = null; for (int i = 0; i < teles.Length; i++) { Console.WriteLine(teles[i]); } Console.WriteLine("----"); //interfaces con métodos CTelevisor mitele = new CTelevisor("Sharp"); CRadio miradio = new CRadio("RCB"); Muestra(mitele); Muestra(miradio); Console.WriteLine("----"); //Métodos que devuelven instancias de clases diferentes que implementan interfaz IElectronico aparato = CreaAparato(); aparato.Encender(true); Console.WriteLine(aparato); Console.ReadKey(); }
public static void Main(string[] args) { //Arreglos de interfaces lo unico que podrian tener en comun es la implementacion de interfaz por ejemplo Ctelevisor y Cradio IElectronico[] teles = { new CTelevisor("charp"), new CTelevisor("Zony"), new CRadio("RCB"), new CTelevisor("philips") }; foreach (IElectronico aparato in teles) { Console.WriteLine(aparato); } Console.WriteLine("-------------------------"); //uso de interfaces con metodos CTelevisor miTV = new CTelevisor("Sharp tv"); CRadio mRadio = new CRadio("Sony Walk man"); Muestra(miTV); Muestra(mRadio); Console.WriteLine("-------------------------"); IElectronico aparatocreado = null; aparatocreado = CreaAparato(); aparatocreado.Encender(true); Console.WriteLine(aparatocreado); }
static IElectronico CrearAparato() { /*en vez de llamar a return radio o tele puedo regresar un Ielectronico*/ //IElectronico aparato = null; //aparato = new tele("tele polimorfica"); //return aparato; IElectronico aparato = null; aparato = new radio("radio polimorfica"); return(aparato); }
//Este metodo puede recibir cualquier objeto que implemente la interfaz IElectronico static void Muestra(IElectronico aparato) { if (aparato is CTelevisor) { Console.WriteLine("El televisor es {0}", aparato); } if (aparato is CRadio) { Console.WriteLine("El Radio es {0}", aparato); } }
// metodos que pueden recibir un objeto que implemente determinada interface // Este metodo puede recibir cualquier objeto que implemente IELEctronico static void Muestra(IElectronico aparato) { //Codigo comun a todos los aparatos aparato.Encender(true); if (aparato is CTelevisor) { Console.WriteLine(aparato); } if (aparato is CRadio) { Console.WriteLine(aparato); } }
static void Muestra(IElectronico aparato) { aparato.Encender(true); if (aparato is CTelevisor) { Console.WriteLine("El televisor es {0}", aparato); } if (aparato is CRadio) { Console.WriteLine("El radio es {0}", aparato); } }
public static void Main(string[] args) { //como reconocer si un objeto implenta a determinada interfaz CTelevisor miTele = new CTelevisor("Sharpy"); CPelota miPelota = new CPelota("Grande"); IElectronico objeto = null; //metodo 1, por excepcion try { Console.WriteLine("Probamos la tele"); objeto = (IElectronico)miTele; objeto.Encender(true); } catch (InvalidCastException e) { Console.WriteLine(e.Message); } //Metodo 2 Console.WriteLine("Probamos la tele"); //se usa as, retorna null sino puede ser tratado como la interface a probar objeto = miTele as IElectronico; if (objeto != null) { objeto.Encender(true); } else { Console.WriteLine("No implementa Ielectronico"); } //Metodo 3, por is ( es p es compatible con) Console.WriteLine("Probamos la tele"); if (miTele is IElectronico) { ((IElectronico)miTele).Encender(true); } else { Console.WriteLine("No implementa IElectronico"); } }
//Este metodo puede recibir a cualquier objeto que implemente IElectronico static void Muestra(IElectronico aparato) { //Podemos distinguir un objeto u otro por su clase //también puede haber código común aplicable a cualquier objeto que implemente IEectronico aparato.Encender(true); if (aparato is CTelevisor) { Console.WriteLine("La tele es {0}", aparato); } if (aparato is CRadio) { Console.WriteLine("La Radio es {0}", aparato); } }
// Este metodo puede recibir cualquier objecto que implemente IElectronico static void Muestra(IElectronico aparato) { // Codigo comun aparato.Encender(true); // Codigo segun el tipo if (aparato is CTelevisor) { Console.WriteLine("El TELEVISOR es #{0}#", aparato); } if (aparato is CRadio) { Console.WriteLine("La RADIO es #{0}#", aparato); } }
static void muestra(IElectronico electronico) { electronico.encender(true); /*codigo comun a todos las clases electronicos*/ if (electronico is IElectronico) { Console.WriteLine("es electrico"); } if (electronico is radio) { Console.WriteLine("es una radio tambien"); } if (electronico is tele) { Console.WriteLine("es una tele tambien"); } }
static void Main(string[] args) { //saber si un objeto implementa a un interfaz Ctelevisor TV = new Ctelevisor("jvc"); Cpelota Pelota = new Cpelota("grande"); IElectronico objeto = null; try { objeto = (IElectronico)TV; objeto.encender(true); } catch (InvalidCastException e) { Console.WriteLine(e.Message); } try { objeto = (IElectronico)Pelota; objeto.encender(true); } catch (InvalidCastException e) { Console.WriteLine(e.Message); } objeto = TV as IElectronico; /*si puede ser tratado hace la instancia sino null*/ /*if(!null) es (null) no es */ if (TV is IElectronico) { //implementa } else { //no implementa } }
static void Main(string[] args) { IElectronico[] teles = { new CTelevisor("Charp"), new CTelevisor("Zony"), new CRadio("RCB"), new CTelevisor("Filips") }; IElectronico aparatoCreado = null; for (int n = 0; n < teles.Length; n++) { Console.WriteLine(teles[n]); } Console.WriteLine("---"); CTelevisor miTV = new CTelevisor("Charp TV"); CRadio miRadio = new CRadio("RCB Radio"); Muestra(miRadio); Muestra(miTV); Console.WriteLine("---"); aparatoCreado = CrearAparato(); aparatoCreado.Encender(true); Console.WriteLine(aparatoCreado); }
static void Main(string[] args) { CTelevisor miTele = new CTelevisor("Sharpy"); CPelota miPelota = new CPelota("Grande"); IElectronico objeto = null; try { Console.WriteLine("Probamos la tele"); objeto = (IElectronico)miTele; objeto.Encender(true); } catch (InvalidCastException e) { Console.WriteLine(e.Message); } try { Console.WriteLine("Probamos la pelota"); objeto = (IElectronico)miPelota; objeto.Encender(true); } catch (InvalidCastException e) { Console.WriteLine(e.Message); } Console.WriteLine("----"); Console.WriteLine("Probamos la tele"); objeto = miTele as IElectronico; if (objeto != null) { objeto.Encender(true); } else { Console.WriteLine("No implementa IElectronico"); } Console.WriteLine("Probamos la pelota"); objeto = miPelota as IElectronico; if (objeto != null) { objeto.Encender(true); } else { Console.WriteLine("No impleta IElectronico"); } Console.WriteLine("------"); Console.WriteLine("Probamos la tele"); if (miTele is IElectronico) { miTele.Encender(true); } else { Console.WriteLine("No implementa IElectronico"); } Console.WriteLine("Probamos la pelota"); if (miPelota is IElectronico) { Console.WriteLine("Wow tienes una pelota electronica"); } else { Console.WriteLine("No implementa IElectronico"); } }
static void Main(string[] args) { //En ocasiones nos interesa conocer si un objeto implementa una interfaz, para en ese caso, hacer llamadas a los métodos de la //interfaz. CTelevisor mitele = new CTelevisor("Phillips"); CPelota mipelota = new CPelota("Grande"); //variable del tipo de la interfaz. //Objeto puede referenciar a cualquier objeto que implemente IElectronico IElectronico objeto = null; //*************** Primer método: Fuerza bruta: Generar una excepción try { Console.WriteLine("Probamos la tele"); //Si la tele implementa la interfaz electronico, la siguiente asignación vale, si no, salta una excepcion objeto = (IElectronico)mitele; objeto.Encender(true); } catch (InvalidCastException e) { Console.WriteLine(e.Message); } //repetimos con la pelota y vemos que salta la excepción. try { Console.WriteLine("Probamos la pelota"); objeto = (IElectronico)mipelota; objeto.Encender(true); } catch (InvalidCastException e) { Console.WriteLine(e.Message); } Console.WriteLine("--------------------"); //*************** Segundo método: Uso de "as" Console.WriteLine("Probamos la tele"); objeto = mitele as IElectronico; if (objeto != null) { objeto.Encender(true); } else { Console.WriteLine("No implementa IElectronico"); } objeto = mipelota as IElectronico; if (objeto != null) { objeto.Encender(true); } else { Console.WriteLine("Pelota No implementa IElectronico"); } Console.WriteLine("--------------------"); //*************** Tercer método: Uso de "is" Console.WriteLine("Probamos la tele"); if (mitele is IElectronico) { mitele.Encender(true); } else { Console.WriteLine("No implementa IElectronico"); } if (mipelota is IElectronico) { Console.WriteLine("Pelota electronica"); } else { Console.WriteLine("Pelota No implementa IElectronico"); } Console.WriteLine("--------------------"); Console.ReadKey(); }
static void Main(string[] args) { //Reconocer si un objeto implementa una determinada interfaz CTelevisor miTele = new CTelevisor("LG"); CPelota miPelota = new CPelota("Molten"); IElectronico objeto = null; //Metodo 1 por exception try { Console.WriteLine("Probamos la tele"); objeto = (IElectronico)miTele; objeto.Encender(true); } catch (InvalidCastException e) { Console.WriteLine(e.Message); } try { Console.WriteLine("Probamos la pelota"); objeto = (IElectronico)miPelota; objeto.Encender(true); } catch (InvalidCastException e) { Console.WriteLine(e.Message); } Console.WriteLine("--- Metodo 2 ---"); Console.WriteLine("Probamos la tele"); objeto = miTele as IElectronico; if (objeto != null) { objeto.Encender(true); } else { Console.WriteLine("No implementa IElectronico"); } Console.WriteLine("Probamos la Pelota"); objeto = miPelota as IElectronico; if (objeto != null) { objeto.Encender(true); } else { Console.WriteLine("No implementa IElectronico"); } Console.WriteLine("--- Metodo 3 ---"); Console.WriteLine("Probamos la tele"); if (miTele is IElectronico) { miTele.Encender(true); } else { Console.WriteLine("No implementa IElectronico"); } Console.WriteLine("Probamos la Pelota"); if (miPelota is IElectronico) { Console.WriteLine("Wow tienes una pelota electronica"); } else { Console.WriteLine("No implementa IElectronico"); } Console.ReadKey(); }
static void Main(string[] args) { Console.Title = "Tutorial C# nivel Avanzado 27 --- Conocer cuando el objeto implementa a la interfaz"; // Como reconocer si un objeto implementa a determinada interface CTelevisor miTele = new CTelevisor("Sharpy"); CPelota miPelota = new CPelota("Grande"); IElectronico objeto = null; // Método 1, por excepción try { Console.WriteLine("Probamos la tele"); objeto = (IElectronico)miTele; objeto.Encender(true); } catch (InvalidCastException e) { Console.WriteLine(e.Message); } try { Console.WriteLine("Probamos la pelota"); objeto = (IElectronico)miPelota; // El casting si no puede da excepción objeto.Encender(true); } catch (InvalidCastException e) { Console.WriteLine(e.Message); } Console.WriteLine("----"); // Metodo 2, por as (puede ser tratado como) Console.WriteLine("Probamos la tele"); objeto = miTele as IElectronico; // o null si no puede ser tratado if (objeto != null) { objeto.Encender(true); } else { Console.WriteLine("No implementa IElectronico"); } Console.WriteLine("Probamos la pelota"); objeto = miPelota as IElectronico; if (objeto != null) { objeto.Encender(true); } else { Console.WriteLine("No Implementa IElectronico"); } Console.WriteLine("----"); // Método 3, por is (p es complatible con) Console.WriteLine("Probamos la tele"); if (miTele is IElectronico) { miTele.Encender(true); } else { Console.WriteLine("No implementa IElectronico"); } Console.WriteLine("Probamos la pelota"); if (miPelota is IElectronico) { Console.WriteLine("Wow tienes una pelota electrónica"); } else { Console.WriteLine("No implementa IElectronico"); } }