Herencia e Interfaces
|
|
- Aarón Villalobos Ortíz
- hace 8 años
- Vistas:
Transcripción
1 Herencia Introducción En C# cualquier dato es un objeto porque todos los tipos derivan implícitamente de este tipo, y heredan los métodos y campos definidos en dicha clase. Cada nuevo tipo tiene todo lo que tiene el tipo object y puede utilizarlo e incluso redefinirlo- y añade una serie de campos y métodos. Cuando, por ejemplo, se está diseñando una interfaz gráfica, sería absurdo tener que escribir todo el código para cada ventana cuando muchas de ellas son casi iguales y realizan tareas parecidas. Lo lógico es aprovechar ese código que ya está escrito y probado y cambiar y añadir lo que sea necesario para ir obteniendo nuevas ventanas particularizadas. Piense, por ejemplo, en un cuadro de diálogo común. Resulta coherente escribir un código bastante general que sirva para cualquier ventana y posteriormente modificarlo que no sea redimensionable, que tenga un título diferente, etc-, añadiendo características nuevos botones, etc- o cambiando algunas de ellas. La herencia proporciona un mecanismo para definir una nueva clase, a partir de otra que ya existe, modificándola. La nueva clase que se define, se denomina clase derivada y la clase de la que se hereda se llama clase base. La clase derivada es la misma clase base a la que se añaden nuevos miembros (campos, métodos, etc) y/o se redefinen alguno de ellos. La clase base puede ser a su vez, clase derivada de otra. Cuando hay muchas clases relacionadas entre sí por el mecanismo de la herencia, se habla de jerarquía de clases. La herencia proporciona dos grandes ventajas al programador: por un lado, permite la reutilización de código y por otro permite el polimorfismo de referencias. Fundamentos de la herencia Para indicar que una clase hereda de otra, se utiliza el siguiente formato general: [modificador] class ClaseDerivada : ClaseBase //Cuerpo de la clase La clase derivada hereda todos los miembros de la clase base, es decir, tiene todos y cada uno miembros de la clase base y los que el programador desee añadir. Ejemplo: using System; namespace Herencia public class ClaseBase 1/21
2 public int a; public int b; public void Imprimir_ab() Console.WriteLine("a=0,b=1",a,b); public class ClaseDerivada:ClaseBase public int c; public void Imprimir_c() Console.WriteLine("c=0",c); public void ImprimirSuma() Console.WriteLine("Suma=0",a+b+c); class HerenciaApp static void Main(string[] args) //Se crean objetos de las clases base y derivada ClaseBase clasebase=new ClaseBase(); ClaseDerivada clasederivada=new ClaseDerivada(); //La clase base puede invocar sus miembros desde Main clasebase.a=11; clasebase.b=12; //se imprimen los campos de la clase base clasebase.imprimir_ab(); //La clase Derivada tiene como miembros propios //todos los de la clase base clasederivada.a=25; clasederivada.b=26; clasederivada.c=27; clasederivada.imprimir_ab(); //y los añadidos por el programador clasederivada.imprimir_c(); clasederivada.imprimirsuma(); La salida de este programa es: a=11, b=12 a=25, b=26 c=27 Suma=78 2/21
3 En este ejemplo se observa que la ClaseDerivada tiene como miembros todos los miembros que ha definido como propios y todos los miembros que tiene la clase de la que deriva. Es decir, su miembros son: Campos: a, b y c Métodos: Imprimir_ab(), Imprimir_c(), ImprimirSuma() Por eso, el objeto clasederivada puede acceder a los campos a y b e invocar el método Imprimir_ab()y puede llamar desde un método propio como es ImprimirSuma()a los campos a y b directamente. En este caso, se dice que la clase ClaseDerivada deriva de la clase ClaseBase o que la clase ClaseBase es una superclase (clase padre) de la ClaseDerivada -(clase hija o subclase). Control de acceso a los miembros de la clase base Los modificadores de acceso de los miembros de la superclase y de la subclase definen el encapsulamiento y el interfaz de la clase. La forma de acceso a cada uno de los miembros heredados de la clase derivada, depende de los modificadores de acceso que cada uno de dichos miembros tenga en la clase base. En el primer ejemplo se ha considerado que todos los miembros fueran públicos para explicar directamente la herencia. En general, esto no es una buena práctica de programación. Los datos de una clase deben estar protegidos. Se ha estudiado con anterioridad cómo es el acceso a los miembros de una clase, dependiendo de cómo esté definido cada uno de los miembros public o private-. El problema que aparece con la herencia es el control de acceso a los miembros de la clase base por parte de la clase derivada. Dicho de otro modo: puede un método de la clase derivada acceder a miembros privados de la clase base? Como anteriormente se ha explicado, no se puede acceder a campos privados desde ninguna clase. Sin embargo, sería muy conveniente que desde la clase derivada se pudiera llamar a los miembros privados de la clase base ya que éstos son heredados. Esto es posible con el modificador de acceso protected. Un dato precedido por este modificador es público para cualquier clase derivada pero privado para el resto de las clases. Es acceso a los datos se puede resumir esquemáticamente en estos tres puntos: a) Un miembro de la clase base declarado como public, pasa a ser un miembro public en la clase derivada, es decir, puede ser utilizado sin ningún tipo de restricción por la clase derivada, tanto en su propio código como desde el exterior de la clase que la ha definido. b) Un miembro declarado como private en la clase base, aunque pertenece a la clase derivada, no puede ser llamado ni desde el propio código de la clase derivada ni, por supuesto, desde ningún código exterior a su clase. Dicho de otro modo: aunque una clase derivada incluye todos los miembros de la clase base de 3/21
4 la que deriva, no puede acceder a aquellos miembros que han sido declarados como private en la clase base. c) Un miembro declarado como protected, puede ser llamado desde el interior del código de la clase derivada pero no desde el exterior de dicha clase, es decir, los objetos de la clase derivada no pueden acceder a ellos. Un miembro protected es en realidad un miembro private para cualquier clase excepto para una clase derivada, que es public, con la excepción antes aludida. El siguiente ejemplo sirve para ilustrar lo anterior: using System; namespace AccesoConHerencia public class Base private int xpri; public int ypub; protected int zpro; public void Imprimir() //este metodo puede llamar a todos los miembros // public y private desde la propia clase Console.WriteLine("xPri=0,yPub=1,zPro=2",xPri, ypub, zpro); public class Derivada : Base int x; public void Suma() //Este método no puede utilizar xpri, //por ser privado en la clase base Console.WriteLine("Suma=0",yPub+zPro+x); class Aplicacion static void Main(string[] args) Base unaclasebase=new Base(); //ERROR. Miembro privat //unaclasebase.xpri=2; unaclasebase.ypub=3; //ERROR. Miembro protected //unaclasebase.zpro=4; Derivada unaclasederivada=new Derivada(); //ERROR. Miembro private //unaclasederivada.xpri=12; 4/21
5 unaclasederivada.ypub=13; //ERROR. Es miembro protected //unaclasederivada.zpro=14; //ERROR. Es miembro private //unaclasederivada.x=15; unaclasebase.imprimir(); unaclasederivada.imprimir(); unaclasederivada.suma(); La salida de este programa es: xpri=0; ypub=3, zpro=0 xpri=0; ypub=13, zpro=0 Suma=13 La herencia es muy importante en la programación orientada a objetos. C# proporciona una serie de librerías que es muy importante conocer para poder aprovecharla en su integridad. En la totalidad de los programas gráficos, el programador aprovecha ese código ya optimizado y probado por Microsoft heredando de algunas clases para con algunas modificaciones y añadidos escribir su código. Sobrescritura Muchas veces resulta muy útil y dota a la programación orientada a objetos de una extraordinaria flexibilidad, poder redefinir sobrescribir- un método o propiedad de la clase base en la clase derivada. En C#, el programador debe indicar qué métodos de una clase pueden ser sobrescritos y cuáles no. Para ello lo debe indicar por medio del modificador virtual. En la clase derivada se debe preceder el nombre del método del modificador override. No es posible cambiar la accesibilidad del método en la clase derivada. La palabra reservada base permite utilizar los métodos de la clase base que están sobrescritos en la clase derivada. Para explicar este concepto, se va a utilizar un ejemplo anterior, se va a sobrescribir el método Imprimir(): using System; namespace ConsoleApplication1 5/21
6 public class ClaseBase public int a; public int b; public virtual void Imprimir() Console.WriteLine("a=0,b=1",a,b); public class ClaseDerivada:ClaseBase public int c; public override void Imprimir() Console.WriteLine("a=0,b=1,c=2",a,b,c); class HerenciaApp static void Main(string[] args) ClaseBase clasebase=new ClaseBase(); ClaseDerivada clasederivada=new ClaseDerivada(); clasebase.a=11; clasebase.b=12; clasebase.imprimir(); clasederivada.a=25; clasederivada.b=26; clasederivada.c=27; clasederivada.imprimir(); La salida de este programa es: a=11, b=12 a=25, b=26, c=27 En este sencillo ejemplo, se ha sobrescrito el método Imprimir(). Para ello, en la clase base se define Imprimir() precedido del modificador virtual: public virtual void Imprimir() En la clase derivada, el método que se sobrescribe debe tener el mismo nombre e ir precedido del modificador override, que indica que en la clase base existe un método con el mismo nombre y con código diferente. public override void Imprimir() Dependiendo del objeto que lo llama, el compilador decide si utiliza el método de la clase base o el de la derivada. 6/21
7 Para invocar un método de la clase base que está sobrescrito en la clase derivada se utiliza la referencia base. Por ejemplo, si desde la clase base se desea llamar al método Imprimir() de la clase base se invoca de la siguiente forma: base.imprimir(). Por ejemplo, se podría haber definido el método Imprimir() en la clase derivada de la siguiente manera: public class ClaseDerivada:ClaseBase public int c; public override void Imprimir() base.imprimir(); Console.WriteLine("c=0",c); El mismo código del ejemplo anterior daría una salida del programa ligeramente diferente: a=11, b=12 a=25, b=26 c=27 Esto es así porque al ejecutar base.imprimir(); el compilador realiza un salto de línea. Sin embargo, en el siguiente apartadose tratará este concepto con más detalle. Constructores y herencia Orden de ejecución de los constructores Cuando se invoca a un constructor de la clase derivada, se ejecuta previamente, por defecto, el constructor de la clase base. Por ejemplo: using System; namespace Herencia public class ClaseBase int x,y; public ClaseBase() Console.WriteLine("Constructor de la clase base"); 7/21
8 public class ClaseDerivada : ClaseBase int z; public ClaseDerivada() Console.WriteLine("Constructor de la clase derivada"); public class Aplicacion static void Main(string[] args) ClaseDerivada d=new ClaseDerivada(); La salida de este programa es la siguiente: Constructor de la clase base Constructor de la clase derivada Palabra reservada base En ocasiones, puede ser interesante ejecutar el constructor de la clase base proporcionándole algunos argumentos o ejecutar algún método de la clase base desde el código de la clase derivada. Para ello se utiliza la palabra base. base es muy parecido a this. La diferencia más importante es que la segunda se refiere siempre al propio objeto, y base hace referencia a la superclase, a la clase de la que deriva la clase actual, a la clase padre. base puede utilizarse de dos formas: A) Para hacer referencia a alguno de los constructores de la clase base en la clase derivada. Como ejemplo, se va a calcular el área de un cilindro. Se definen las clases Circulo - con dos campos, uno constante y que define PI, y el radio- y la clase Cilindro, que se considera como un círculo al que se le ha añadido una altura. El área de un círculo es el producto de π por el cuadrado del radio, y el de un cilindro es el área de la base que es un círculo- por la altura. De esta manera, se tendrá que sobrescribir el método Area() en la clase derivada. using System; namespace TemasMatematicos public class Circulo public const double PI= ; protected double radio; public Circulo(double radio) this.radio=radio; 8/21
9 public virtual double Area() return PI*radio*radio; public class Cilindro : Circulo double altura; public Cilindro(double radio,double altura):base(radio) this.altura=altura; public override double Area() return PI*radio*radio*altura; class Aplicacion static void Main(string[] args) Cilindro c=new Cilindro(1,2); Console.WriteLine("Area=0",c.Area()); La salida de este programa es: Area= Este programa tiene alguna líneas en la que en importante detenerse. a) public virtual double Area() En la clase base, Circulo, se define el método Area() como virtual, para indicar que será sobrescrito en la clase derivada. b) public override double Area() En la clase Cilindro que deriva de la clase Circulo, se sobrescribe este método para calcular el área del cilindro ya que parece que se debería llamar de la misma manera y se precede del modificador override. c) public Cilindro(double radio,double altura):base(radio) En esta sentencia se invoca en primer lugar el constructor de la clase base para que inicialice el radio y después se ejecuta el código de la clase derivada. En general, para ejecutar el constructor de la clase base, en la misma línea donde se define el constructor de la clase derivada, se sigue la palabra base con los argumentos necesarios para que se ejecute un determinado constructor de la superclase precedida de :. Dependiendo del constructor de la clase base, se utilizan unos argumentos u otros. 9/21
10 También se puede llamar a un constructor de la misma clase, escribiendo después del constructor :this(),de la misma forma que se ha hecho con :base(). B) Para invocar un método de la clase base desde la clase derivada se utiliza cuando dicho método está sobrecargado-. Este concepto se ha explicado brevemente con anterioridad. Sin embargo, se aprovecha este ejemplo para profundizar un poco más en él. Si se quiere invocar un método de la clase base se puede invocar con la palabra reservada base, de la misma forma que se utiliza para llamar al objeto actual con this. Así, en el ejemplo anterior, si se quiere invocar el método Area() de la clase Circulo, desde el código de la clase derivada se hace de la siguiente manera: base.area(). En ese mismo bloque de código es decir, en la clase derivada- para referirse al método Area() de la clase Cilindro, se puede hacer de dos formas: Area() o bien this.area() Por ejemplo, public class ClaseDerivada : ClaseBase public void HacerAlgoDeAlgunaManera() base.haceralgo(); //realizar el resto del procedimiento En el ejemplo se observa que con la línea: base.haceralgo(); se refiere al método de la clase base, que tendrá el mismo nombre que en la clase derivada. Polimorfismo de referencias Se puede asignar a una referencia de una superclase una referencia de una subclase. Esta es una característica muy útil y tremendamente potente de C#, que también se encuentra en C++ y en Java, aunque con diferencias sustanciales. 10/21
11 El siguiente ejemplo sirve para explicar este concepto: using System; namespace Polimorfismo public class Caja protected double x; protected double y; protected double z; public Caja(double ancho, double largo, double alto) x=ancho; y=largo; z=alto; public double Volumen() return x*y*z; public class CajaConPeso : Caja public double Peso; public CajaConPeso(double a, double b, double c, double peso) : base(a,b,c) this.peso=peso; public class MiClaseApp static void Main(string[] args) //Se obtienen referencias a objetos //de las clases base y derivada Caja refcaja=new Caja(1,2,3); CajaConPeso refcajaconpeso=new CajaConPeso(3,4,5,6); double volumen; volumen=refcaja.volumen(); Console.WriteLine("Vol=0",volumen); //se asigna una referencia de la clase base //a una refencia. de la clase derivada refcaja=refcajaconpeso; volumen=refcaja.volumen(); Console.WriteLine("Vol=0",volumen); //Console.WriteLine("Peso=0", refcaja.peso); La salida de este programa es: Vol=6 11/21
12 Vol=60 refcajaconpeso es una referencia a un objeto de la clase CajaConPeso clase derivada- y refcaja una referencia a un objeto de la clase Caja clase base-. Como CajaConPeso es una subclase de Caja es posible asignar a refcaja la referencia refcajaconpeso. Es muy importante entender bien que el que determina qué miembros son accesibles y cuáles no es el tipo de variable de referencia ni el tipo de objeto al que se refiere. Cuando una referencia a un objeto de una subclase se asigna a una referencia de la superclase, sólo se tiene acceso a aquéllas partes del objeto definidas en la superclase (figura 6.1). Por eso, aunque ahora refcaja y refcajaconpeso referencian al mismo objeto de la clase CajaConPeso, refcaja no puede acceder al campo Peso a pesar de ser una referencia a un objeto de la clase CajaConPeso. Esto tiene sentido ya que la clase base la superclase- no tiene conocimiento no puede ver y por lo tanto tampoco acceder o invocar- a lo que en la clase derivada se añade a su propia definición. No es posible para una referencia de tipo Caja acceder al campo Peso ya que no ha sido definido en la clase base Caja. Por eso, la última línea de este programa está comentada, porque daría un error al compilar. Se podría haber creado esa referencia directamente, al crear un objeto de la clase derivada, es decir, Caja refcaja=new CajaConPeso(3,4,5,6); En este caso, refcaja es una referencia de tipo Caja a un objeto de tipo CajaConPeso. Esto es extraordinariamente importante y dota de una gran flexibilidad y potencia a este lenguaje, ya que si una superclase contiene un método que está sobrescrito en la subclase, entonces, cuando se referencian distintos tipos de objetos a través de una variable de referencia de la superclase, se ejecutan distintas versiones del método. refcaja refcajacopeso x y z Volumen() x y z Volumen() Objeto tipo Caja Peso Objeto tipo CajaConPeso Figura 6.1: La referencia refcaja sólo puede invocar los miembros de la clase derivada que conoce, que son los que tiene en la superclase. 12/21
13 por ejemplo: suponga que se desea definir un método que puede admitir como parámetro cualquier tipo de dato. Dicho método podría tener la siguiente forma: public void UnMetodo(object obj) //codigo Como hasta ahora se ha venido repitiendo, todo dato en C# es un objeto, deriva de él y por lo tanto puede tratarse como tal. El polimorfismo de referencias nos permite escribir el siguiente fragmento de código: string unstring = Hola Mundo ; int unentero = 3; const double PI = 3.14; MiClase unaclase = new MiClase(); ClaseDeMicrosoft otraclase = new ClaseDeMicrosoft(); UnMetodo(unString); UnMetodo(unEntero); UnMetodo(PI); UnMetodo(unaClase); UnMetodo(otraClase); Observe que no se ha sobrecargado el método UnMetodo. El código anterior es posible por el polimorfismo de referencias, porque realmente, ocurre lo siguiente: object refobj; //Inicialmente null, no referencia a nada string unstring = Hola Mundo ; refobj = unstring; UnMetodo(refObj);... La referencia al string unstring, apunta a un objeto que es la cadena Hola Mundo, que como todo string es un objeto, es decir, deriva de object. Por el polimorfismo de referencias, es posible asignar una referencia de una clase en este caso un string- a una referencia de una superclase en este caso a object-. Esta técnica permite tratar los datos de manera genérica. El polimorfismo de referencias existe también en Java pero la técnica para conseguirlo es menos directa y complicada que en C#, ya que en Java no todos los tipos de datos son objetos. En concreto, no lo son los llamados tipos simples, aunque Java proporciona a todos ellos una clase intermedia llamada envoltorio que los convierte en clases. Pero siempre es necesario realizar un paso intermedio para convertir los llamados tipos básicos a tipos de su clase envoltorio. En C# no es necesario realizar este paso, porque los tipos de datos son objetos. Esta manera de trabajar proporciona una enorme potencia a este lenguaje. 13/21
14 Interfaces. Una interface garantiza un determinado comportamiento de una clase o estructura. Cuando una clase implementa una interface se garantiza que soportará los métodos, propiedades, eventos e indexadores de la interface. La interface es una alternativa a una clase abstracta. Una interface es similar a una clase o a una estructura, pero sus miembros son abstractos, es decir, no están definidos, no tienen código. Declara modos de comportamiento, pero deja su definición para las clases que la implementen. Cuando una clase implementa una interface, debe implementar todos los métodos de la interface. Hay una gran diferencia entre heredar de una clase abstracta e implementar una interface. Por ejemplo: un Coche es un vehículo hereda las características y comportamiento de un vehículo-, pero puede tener la capacidad de PoderRegularLaTemperatura (como una casa, por ejemplo). Cuando se hereda, se hace referencia a lo que se es, y cuando se implementa una interface se hace referencia a la capacidad de comportarse de una determinada manera. En este capítulo se estudia cómo crear, implementar y usar las interfaces. Además, se tratará cómo implementar múltiples interfaces. Estructura de una interface. La estructura de una interface es la siguiente: [atributos OPC ] [modificadores de acceso OPC ] interface NombreDeLaInterface [:interfacesbase] //Cuerpo de la interface Los atributos se tratarán más adelante. Por ahora es suficiente con decir que los atributos en C# contienen información sobre el tipo de dato y puede ser consultada mediante reflexión. Los atributos son opcionales. Los modificadores de acceso opcionales- pueden ser los mismos que los de las clases y con el mismo efecto, a excepción de abstract y sealed, que no tienen sentido para una interface, es decir: new, public, protected, internal y private. La palabra interface es seguida del nombre de la interface. Generalmente aunque no hay porqué hacerlo así- se suele utilizar -como convenio- un nombre que comience por la letra mayúscula I, como IClonable, IMiInterface, etc... Si la interface hereda a su vez de otras interfaces, entonces, después del nombre de la interface se escribe dos puntos (:) y, separados por comas, los nombres de las interfaces que implementa. 14/21
15 Por ejemplo: interface IAvion : IVolar, IVehiculo //Código Suponga que desea crear una interface que defina la capacidad de ser imprimible que se llame IImprimible y que tenga un método que se llame Imprimir() La definición sería: interface IImprimible void Imprimir(); Por ejemplo, se puede crear una clase Documento. Para indicar que el tipo Documento se puede imprimir basta con que implemente la interface IImprimible. Implementar una interfce no es más que escribir código en los métodos definidos en la interface. La sintaxis es la misma que si derivara de la interface, aunque, como se ha dicho, es necesario implementar todos los métodos de la interface. Por ejemplo: public interface IImprimible void Imprimir(); public class Documento : IImprimible string contenido; public Documento(string frase) contenido=frase; public void Imprimir() Console.WriteLine(contenido); class MiAplicacion static void Main(string[] args) Documento undocumento=new Documento("Contenido 1"); undocumento.imprimir(); La salida de este programa es: Contenido 1 15/21
16 Suponga que se desea crear otra interface que defina el comportamiento necesario para guardar y leer desde una fuente de datos una base de datos, o el disco duro,...-. Se le llamará, por ejemplo, IArchivable. Esta interface podría tener dos métodos: Leer() y Escribir(). Una posible definición es, por ejemplo: interface IArchivable void Leer(); void Escribir() Para indicar que la clase Documento tiene la capacidad de ser almacenado en el disco duro, basta con que implemente la interface IArchivable e IImprimible. public class Documento: IImprimible, IArchivable void Leer() //Código que implementa el método void Escribir() //Código que implementa el método public void Imprimir() //Código que implementa el método //Otros miembros y código propio de la clase Documento Es responsabilidad del autor de la clase Documento implementar o definir el comportamiento de los métodos de la interface. Si una clase implementa una interface debe implementar de manera obligatoria todos los métodos de la interface. Todos los miembros de una interface son públicos por defecto- para que puedan ser implementados por otras clase. Por esta razón no llevan ningún modificador. A continuación se escribe un ejemplo completo. Se define una nueva clase, Rectángulo, que implemente la interface IImprimible. Se puede observar cómo se definen de manera diferente el mismo método Imprimir() en las dos clases y cómo el Rectángulo no tiene la capacidad de ser almacenado en disco. El ejemplo completo sería: interface IArchivable void Leer(); void Escribir(); 16/21
17 public interface IImprimible void Imprimir(); public class Rectangulo : IImprimible int ancho; int alto; public Rectangulo(int lado1, int lado2) ancho=lado1; alto=lado2; public void Imprimir() Console.WriteLine("ancho=0,alto=1",ancho,alto); public class Documento : IImprimible, IArchivable string contenido; public Documento(string frase) contenido=frase; public void Imprimir() Console.WriteLine(contenido); public void Leer() Console.WriteLine("Leyendo CONTENIDO desde le disco duro"); public void Escribir() Console.WriteLine("Escribiendo CONTENIDO en disco duro"); class MiAplicacion static void Main(string[] args) Documento undocumento=new Documento("Contenido 1"); Rectángulo unrect = new Rectángulo(12,13); undocumento.escribir(); undocumento.leer(); undocumento.imprimir(); unrect.escribir(); Polimorfismo de referencias Se vuelve a estudiar aquí el polimorfismo de referencias, pero ahora desde un punto de vista distinto: la interface. 17/21
18 No es posible crear objetos de tipo interface. Esto es lógico si pensamos que sus métodos están declarados, pero no definidos. No tendría sentido un objeto sin métodos implementados. Por esta razón, no se puede escribir: IImprimible refinterface = new IImprimible(); Sin embargo, puede crearse una referencia de tipo interface para que apunte a cualquier objeto de un tipo que implemente dicha interface. Por ejemplo: IImprimible refinterface; Documento undocumento=new Documento( texto del documento ); refinterface = (IImprimible)unDocumento; o bien, de manera más comprimida: IImprimible refinterface=(iimprimible)new Documento( otro texto ); Se tiene la garantía de que cualquier clase que implemente la interface IImprimible tendrá implementado el método Imprimir(). Por eso, tiene sentido que una referencia a una interface pueda invocar todos los métodos -que tenga declarados como interface- del objeto al que apunta. Sin embargo, la interface IImprimible no conoce cómo cada clase lo implementa ni le hace falta saberlo- ni qué más miembros tienen dichas clases. Por eso no puede invocar aquellos métodos, propiedades, etc, que sean únicamente propios del objeto. Para ilustrar esta idea, piense en la aplicación anterior con el siguiente código en el método Main(): Documento doc=new Documento("contenido del documento"); IImprimible refinterfaceimprimible=doc; refinterfaceimprimible.imprimir(); o bien: IImprimible refinterfaceimprimible; refinterfaceimprimible=new Documento("Una frase"); refinterfaceimprimible.imprimir(); En resumen: una referencia a una determinada interface, puede apuntar a cualquier objeto de una clase o estructura que la implemente. Esto convierte el polimorfismo de referencias en una herramienta extremadamente flexible y poderosa. En el ejemplo anterior la clase Rectangulo implementa la interface IImprimible y la clase Documento las interfaces IImprimible e IArchivable. Gracias al polimorfismo de referrencias se puede escribir: Documento doc=new Documento("contenido del documento"); Rectangulo rect=new Rectangulo(12,10); IImprimible refinterfaceimprimible=doc; 18/21
19 refinterfaceimprimible.imprimir(); refinterfaceimprimible=rect; refinterfaceimprimible.imprimir(); o bien: IImprimible refinterfaceimprimible; refinterfaceimprimible=new Documento("Una frase"); refinterfaceimprimible.imprimir(); refinterfaceimprimible=new Rectangulo(12,10); refinterfaceimprimible.imprimir(); Miembros de interface. Los miembros de una interface son: - Los que hereda de las interfaces base. - Los que se declaran en la propia interface. Una interface puede declarar cero o más miembros, los cuales tienen acceso public por defecto. Por lo tanto, los miembros de una interface no pueden ser declarados con los modificadores abstract, public, protected, internal, private, virtual, override, o static. Herencia de interfaces. Una interface puede heredar cero o más interfaces de modo explícito (herencia múltiple de interfaces). A tales interfaces se les llama interfaces base explícitas. No obstante, una interface no sólo hereda las interface que explícitamente indica, sino también aquéllas heredadas implícitamente, es decir, aquéllas que han heredado las interface de las que hereda. Por ejemplo: interface IControl void Paint(); // ITextBox hereda de IControl interface ITextBox: IControl void SetText(string text); // IListBox hereda de IControl interface IListBox: IControl void SetItems(string[] items); interface IComboBox: ITextBox, IListBox //... 19/21
20 La interface IComboBox tendrá todos los métodos de las interfaces ITextBox y de IListBox, y por lo tanto, los de IControl, ya que implícitamente la hereda. Implementación de una interface. Las interfaces pueden ser implementadas mediante clases y estructuras. Para indicar que una clase o estructura implementa una interface se ha de incluir el identificador de la interface en la lista de tipos base de la clase o estructura. Ejemplo: interface IControl void Paint(); interface ITextBox: IControl void SetText(string text); class TextBox: ITextBox public void Paint()... public void SetText(string texto) En este caso la clase TextBox no sólo implementa ITextBox, sino también IControl. Utilización de los operadores is y as con interfaces Este operador se utiliza para averiguar si un determinado objeto soporta una interface. Su formato general es: objeto is tipo La expresión anterior devuelve True en caso de que objeto soporte o implementa la interface tipo. En caso contrario devuelve False. Por ejemplo: Rectangulo rect = new Rectangulo(13,15); if( rect is IImprimible ) IImprimible refinterface = (IImprimible) rect; refinterface.imprimir();... Pero el uso de is es ineficaz porque puede generar excepciones. Una solución mejor es utilizar el operador as. 20/21
21 Este operador combina el operador is y un casting o conversión de tipos. Primero se chequea si la conversión es válida y si es así, se realiza la conversión. En caso contrario, se devuelve null. La expresión general es: objeto as tipo Por ejemplo: Rectangulo rect = new Rectangulo(13,15); IImprimible refinterface = rect as IImprimible; if(refinterface!= null) refinterface.imprimir(); else Console.WriteLine( Rectangulo no soporta Iimprimible )... 21/21
Programación Orientada a Objetos con Java
Programación Orientada a Objetos con Java M.C. Jorge Eduardo Ibarra Esquer jorgeeie@uabc.mx Sobrecarga de métodos Java permite la definición de dos o más métodos que tengan el mismo nombre, dentro de la
Más detallesCurso de Java POO: Programación orientada a objetos
Curso de Java POO: Programación orientada a objetos Luis Guerra Velasco Curso INEM 02830. Programación en Java Marzo 2010 Índice 1 Introducción a la POO 2 Herencia y polimorfismo 3 Empaquetado de proyectos
Más detallesTema 3: Herencia en C++ Programación Orientada a Objetos Curso 2008/2009 Begoña Moros Valle
Tema 3: Herencia en C++ Programación Orientada a Objetos Curso 2008/2009 Begoña Moros Valle Contenido Tipos de herencia Herencia y niveles de visibilidad Herencia y creación Redefinición de métodos Conversión
Más detallesRESUMEN DE CONCEPTOS BASICOS DE PROGRAMACION JAVA
UNED Centro Asociado de Cádiz RESUMEN DE CONCEPTOS BASICOS DE PROGRAMACION JAVA 1. OBJETOS Cualquier elemento del programa es un objeto. Un programa es un conjunto de objetos que se comunican entre sí
Más detallesPHP y MySQL. Inicio: - Herencia - Palabra clave Final - Polimorfismo - Type Hinting - Abstracción de clases
PHP y MySQL Inicio: - Herencia - Palabra clave Final - Polimorfismo - Type Hinting - Abstracción de clases Herencia de Objetos La herencia permite crear muchas clases que son similares entre si, sin tener
Más detallesCurso de Python Inicial
Logo IAA-CSIC Curso organizado por el Gabinete de Formación del CSIC Curso de Python Inicial Clases Contenidos 1. Paradigmas de la Programación 2. Programación Orientada a objetos 3. Clases 4. Objetos
Más detallesEXAMEN FINAL Metodología y Programación Orientada a Objetos. Curso 2010 2011. Cuatrimestre de otoño. 17 de Enero de 2011
EXAMEN FINAL Metodología y Programación Orientada a Objetos. Curso 2010 2011. Cuatrimestre de otoño. 17 de Enero de 2011 1. (0,75 PUNTOS) Identificad a continuación las sentencias que son ciertas, descartando
Más detallesIntroducción a la Programación Orientada a Objetos
Introducción a la Programación Orientada a Objetos El paradigma imperativo. En un programa se tienen una serie de variables con las cuales operamos y modificamos mediante sentencias y funciones para producir
Más detallesPOLIMORFISMO "una interfaz, múltiples métodos".
"una interfaz, múltiples métodos". 20/02/2007 Polimorfismo 2 Indice Definición y caracteristicas Objetivos. SOBRRESCRITURA-SOBRECARGA SOBRECARGA Clases y métodos abstractos INTERFACES (herencia múltiple)
Más detalles2.2.- Paradigmas de la POO
2.2.- Paradigmas de la POO Los principios propios de la orientación a objetos son: 2.2.1.- Abstracción de Datos 2.2.2.- Encapsulamiento 2.2.3.- Ocultamiento 2.2.4.- Herencia 2.2.5.- Polimorfismo Cualquier
Más detallesProgramación Orientada a Objetos en Java
Programación Orientada a Objetos en Java Curso 2006-2007 Tema 4 Herencia y Polimorfismo Gonzalo Méndez Pozo Dpto. de Ingeniería de Software e Inteligencia Artificial Universidad Complutense de Madrid Herencia
Más detallesIntroducción a la programación orientada a objetos
Introducción a la programación orientada a objetos 1. Introducción a la programación orientada a objetos 2. Las clases 3. El tipo Struct 4. Diferencias entre Class y Struct 5. Pilares de la Programación
Más detallesTema 6. Reutilización de código. Programación 2015-2016. Programación - Tema 6: Reutilización de código
Tema 6 Reutilización de código Programación 2015-2016 Programación - Tema 6: Reutilización de código 1 Tema 6. Reutilización de código Modularidad. Implementación de métodos. Uso de métodos. Programación
Más detallesGUIA PROGRAMACIÓN ORIENTADA A OBJETOS
GUIA PROGRAMACIÓN ORIENTADA A OBJETOS 1. Por qué la P.O.O? R= A medida que se van desarrollando los lenguajes, se va desarrollando también la posibilidad de resolver problemas más complejos. En la evolución
Más detallesJava Inicial (20 horas)
Java Inicial (20 horas) 1 Temario 1. Programación Orientada a Objetos 2. Introducción y Sintaxis Java 3. Sentencias Control Flujo 4. POO en Java 5. Relaciones entre Objetos 6. Polimorfismo, abstracción
Más detallesProgramación en Java. Programación en OO
Programación en OO Lección 4:Programación en OO 1. Herencia 2. Modificadores de Acceso 3. Interfaces Herencia Es la acción en la que una clase obtiene los métodos y propiedades definidos en otra clase,
Más detalles8. Sentencia return y métodos
92 A. García-Beltrán y J.M. Arranz 8. Sentencia return y métodos Objetivos: a) Describir el funcionamiento de la sentencia return b) Interpretar el resultado de una sentencia return en el código fuente
Más detallesHerencia. 3.- Herencia. Declaración de una clase derivada en Delphi. Jerarquía de clases
Herencia 3.- Herencia La herencia nos permite definir datos y métodos que son generales (comunes a distintas clases) por separado de las que son particulares a cada clase. Esto se logra definiendo lo que
Más detalles9. Objetos y clases. 9.1. Clases
Programación orientada a objetos con Java 103 9. Objetos y clases Objetivos: a) Presentar el concepto de objeto, clase, atributo, método e instancia b) Interpretar el código fuente de una aplicación Java
Más detallesPartes de un programa en Java. A. Ejemplo de un Programa en Java /* Programa Ejemplo de Java: Muestra una Ventana Archivo: Ejemplo1.
Partes de un programa en Java A. Ejemplo de un Programa en Java /* class Ejemplo1 { //comienza la clase Ejemplo1. public static void main(string[] args) { // comienza el método main. JFrame miventana;
Más detallesEn cualquier caso, tampoco es demasiado importante el significado de la "B", si es que lo tiene, lo interesante realmente es el algoritmo.
Arboles-B Características Los árboles-b son árboles de búsqueda. La "B" probablemente se debe a que el algoritmo fue desarrollado por "Rudolf Bayer" y "Eduard M. McCreight", que trabajan para la empresa
Más detallesDefinición de clases: Herencia, polimorfismo, ligadura dinámica
Tema 7 Definición de clases: Herencia, polimorfismo, ligadura dinámica Con alguna frecuencia es necesario definir clases de objetos entre las cuales hay elementos comunes. En una aplicación en la cual
Más detallesProgramación orientada a objetos
Repaso Programación orientada a objetos Curso INEM. Programación en Java Santiago Muelas Pascual smuelas@fi.upm.es! Clase! Objeto! Atributo o variable de instancia! Método! Instanciar/crear un objeto!
Más detallesModulo 1 El lenguaje Java
Modulo 1 El lenguaje Java 13 - Codificación en Java Una de las grandes diferencias entre Java y Pascal en cuando a la codificación es que Java se trata de un lenguaje de los llamados case sensitive Esto
Más detallesConstructores y Destructores
Ya se ha apuntado que C++ no permite crear objetos sin dar un valor inicial apropiado a todas sus variables miembro. Esto se hace por medio de unas funciones llamadas constructores, que se llaman automáticamente
Más detallesProgramación Orientada a Objetos en Java
Programación Orientada a Objetos en Java Curso 2006-2007 Tema 3 Clases y Objetos Gonzalo Méndez Pozo Dpto. de Ingeniería de Software e Inteligencia Artificial Universidad Complutense de Madrid Clases y
Más detallesProgramación Avanzada para Sistemas de Telecomunicación. Objetos y clases. J.C. Cruellas. Objetos y clases
Programación Avanzada para Sistemas de Telecomunicación Objetos y clases Juan Carlos Cruellas cruellas@ac.upc.es Objetos y clases Concepto de objeto. Concepto de clase. Clases, objetos y programas. Clases
Más detallesUniversidad de Cantabria corcuerp@unican.es
Herencia Pedro Corcuera Dpto. Matemática Aplicada y Ciencias de la Computación Universidad de Cantabria corcuerp@unican.es Objetivos Aprender los conceptos de herencia Comprender la forma de derivar una
Más detallesProf. Dr. Paul Bustamante
Prácticas de C++ Practica Nº 8 Informática II Fundamentos de Programación Prof. Dr. Paul Bustamante ÍNDICE ÍNDICE... 1 1. INTRODUCCIÓN... 1 1.1 EJERCICIO 1: HERENCIA Y POLIMORFISMO I... 1 1.2 EJERCICIO
Más detallesGESTIÓN DE EXCEPCIONES EN JAVA. CAPTURA CON BLOQUES TRY CATCH Y FINALLY. EJEMPLOS RESUELTOS. (CU00927C)
APRENDERAPROGRAMAR.COM GESTIÓN DE EXCEPCIONES EN JAVA. CAPTURA CON BLOQUES TRY CATCH Y FINALLY. EJEMPLOS RESUELTOS. (CU00927C) Sección: Cursos Categoría: Lenguaje de programación Java nivel avanzado I
Más detalles19. Packages o paquetes
Programación orientada a objetos con Java 201 19. Packages o paquetes Objetivos: a) Definir el concepto de paquete b) Interpretar el código fuente de una aplicación Java donde se utilicen paquetes c) Construir
Más detallesEl lenguaje de programación Java
Departament d Arquitectura de Computadors El lenguaje de programación Java Java (I) Orientado a objetos Ejecutado por una maquina virtual Independiente de la plataforma Multithreaded Orientado a la red
Más detallesISTP CIDET COMPUTACION E INFORMATICA ARREGLOS EN JAVA
ARREGLOS EN JAVA I I N T R O D U C C I Ó N En las sesiones anteriores, los datos manejados en los programas han sido datos simples (carácter, entero, reales) En un gran número de problemas es necesario
Más detallesESCUELA DE INGENIERÍA DE SISTEMAS DEPARTAMENTO DE COMPUTACIÓN PROGRAMACIÓN 2 PRÁCTICA DE LABORATORIO 7 Herencia y Composición en POO
ESCUELA DE INGENIERÍA DE SISTEMAS DEPARTAMENTO DE COMPUTACIÓN PROGRAMACIÓN 2 PRÁCTICA DE LABORATORIO 7 Herencia y Composición en POO Contenido Introducción... 1 Concepto de la Herencia... 2 Relación de
Más detallesExamen Junio- Grupo A Lunes 17 de Junio - Programación en C++ Pág. 1
Examen Junio- Grupo A Lunes 17 de Junio - Programación en C++ Pág. 1 ÍNDICE ÍNDICE... 1 1.1 Ejercicio 1: Máquina Expendedora (3.5 ptos.)... 1 1.2 Ejercicio 2: Clase Circulo (1.0 pto.)... 3 1.3 Ejercicio
Más detallesPatrones para persistencia (I) Ingeniería del Software II
Patrones para persistencia (I) Ingeniería del Software II 1 Patrones para la construcción del esquema relacional En todos los ejemplos realizaremos transformaciones del siguiente diagrama de clases: Figura
Más detallesPrácticas de Programación
Prácticas de Programación Tema 1. Introducción al análisis y diseño de programas Tema 2. Clases y objetos Tema 4. Tratamiento de errores Tema 5. Aspectos avanzados de los tipos de datos Tema 6. Modularidad
Más detallesModelo de Objetos Distribuidos
Remote Method Invocation Modelo de Objetos Distribuidos Un objeto remoto es un objeto cuyos métodos pueden ser invocados desde otra máquina virtual de java, potencialmente en un host diferente. Modelo
Más detallesClases. Java: Clases y Objetos. Clases. Clases. Modificadores de clase. Definición de una clase. Cada objeto es un ejemplar de una clase
Java: Clases y Objetos Clases La unidad fundamental de programación en Java es la clase Un programa Java está formado por un conjunto de clases Una clase es una plantilla que describe un conjunto de objetos
Más detallesCapítulo 6. Introducción a la POO
Capítulo 6. Introducción a la POO 6. 1. Clases, Objetos y Métodos Definición La Programación Orientada a Objetos (POO) es una forma especial de programar, más cercana a cómo expresaríamos las cosas en
Más detallesCreación y administración de grupos de dominio
Creación y administración de grupos de dominio Contenido Descripción general 1 a los grupos de Windows 2000 2 Tipos y ámbitos de los grupos 5 Grupos integrados y predefinidos en un dominio 7 Estrategia
Más detallesContenidos. Funciones (suplemento) Funciones. Justificación del uso de Funciones
Contenidos 1. Justificación del uso de funciones. 2. Declaración de funciones: prototipos. 3. Prototipos y ficheros de cabecera. 4. Polimorfismo (sobrecarga de funciones). 5. Argumentos formales y actuales.
Más detallesPruebas de unidad con JUnit
Pruebas de unidad con JUnit Cuando se implementa software, resulta recomendable comprobar que el código que hemos escrito funciona correctamente. Para ello, implementamos pruebas que verifican que nuestro
Más detallesMANUAL COPIAS DE SEGURIDAD
MANUAL COPIAS DE SEGURIDAD Índice de contenido Ventajas del nuevo sistema de copia de seguridad...2 Actualización de la configuración...2 Pantalla de configuración...3 Configuración de las rutas...4 Carpeta
Más detallesCAPÍTULO IV BREVE DESCRIPCIÓN DE LA INFRAESTRUCTURA DE CÓMPUTO VISUAL BASIC 6.0 PARA WINDOWS
CAPÍTULO IV BREVE DESCRIPCIÓN DE LA INFRAESTRUCTURA DE CÓMPUTO VISUAL BASIC 6.0 PARA WINDOWS 4.1 Antecedentes históricos El lenguaje de programación BASIC (Beginner's All purpose Symbolic Instruction Code)
Más detallesIntroducción al lenguaje Java
Tipo de entrega: Fecha límite: Lugar: Introducción al lenguaje Java por grupos de prácticas sesión de laboratorio Atenea Objetivos de la práctica: Escribir aplicaciones simples en Java Utilizar el entorno
Más detallesUNIVERSIDAD CATOLICA DE COLOMBIA FACULTAD DE INGENIERIA DE SISTEMAS
UNIVERSIDAD CATOLICA DE COLOMBIA FACULTAD DE INGENIERIA DE SISTEMAS CURSO: JAVA BASICO PROFESOR: EMERSON CASTAÑEDA SANABRIA TEMA: Programación Orientada a Objetos OBJETIVOS: Familiarizarse con la Programación
Más detallesMetadatos en Plataformas ECM
Metadatos en Plataformas ECM understanding documents Ofrece tu sistema soporte para tipos documentales en bases de datos? Por qué debería importarte? Marzo, 2013 Basado en: Manejo de metadatos en plataformas
Más detallesI. Introducción a la programación orientada a objetos y al lenguaje JAVA Colegio Reuven Feuerstein Javier Navarro
I. Introducción a la programación orientada a objetos y al lenguaje JAVA Colegio Reuven Feuerstein Javier Navarro Utilizando Clases Definidas en Java La manera de utilizar una clase previamente definida
Más detallesPROGRAMACIÓN ORIENTADA A OBJETOS (L40629) Sabino Miranda-Jiménez
PROGRAMACIÓN ORIENTADA A OBJETOS (L40629) Sabino Miranda-Jiménez Encapsulamiento: Control de Acceso Clases en Java (1) UNIVERSIDAD AUTÓNOMA DEL ESTADO DE MÉXICO En Java se organizan las clases en paquetes
Más detallesCurso de Doctorado: Tecnologías de Objetos
Curso de Doctorado: Tecnologías de Objetos Grupo IMO Área de Lenguajes y Sistemas Informáticos Departamento de Informática J. Baltasar García Perez-Schofield http://webs.uvigo.es/jbgarcia/ Implementación
Más detallesVisual Basic 1. Empleo de módulos y Procedimientos. Procedimientos definidos por el usuario
Empleo de módulos y Procedimientos Procedimientos definidos por el usuario Según lo que hemos visto hasta ahora, Visual Basic, almacena el código en módulos. Hay tres clases de módulos: formularios (.frm),
Más detallesMantenimiento Limpieza
Mantenimiento Limpieza El programa nos permite decidir qué tipo de limpieza queremos hacer. Si queremos una limpieza diaria, tipo Hotel, en el que se realizan todos los servicios en la habitación cada
Más detallesLenguajes de Programación Curso 04-05. Práctica 4. Herencia. Utilización de interfaces y clases abstractas. 1. Interfaces 1. 2. Clases abstractas 2
Objetivos Herencia. Utilización de interfaces y clases abstractas. Índice 1. Interfaces 1 2. Clases abstractas 2 3. Collections Framework 3 3.1. Collection........................................... 3
Más detallesQUÉ ES LA RENTABILIDAD Y CÓMO MEDIRLA. La rentabilidad mide la eficiencia con la cual una empresa utiliza sus recursos financieros.
QUÉ ES LA RENTABILIDAD Y CÓMO MEDIRLA La rentabilidad mide la eficiencia con la cual una empresa utiliza sus recursos financieros. Qué significa esto? Decir que una empresa es eficiente es decir que no
Más detallesClases abstractas e interfaces
Clases abstractas e interfaces Clases abstractas Una clase abstracta es una clase que no se puede instanciar se usa únicamente para definir subclases Cuándo es una clase abstracta? En cuanto uno de sus
Más detallesTema: Sobrecarga de Operadores.
Programación II. Guía 7 1 Facultad: Ingeniería Escuela: Computación Asignatura: Programación II Tema: Sobrecarga de Operadores. Objetivos Describir como redefinir (sobrecargar) operadores para que funcionen
Más detallesINSTITUTO TECNOLOGICO de la laguna Programación Orientada a Objetos en C++
5.- Herencia Múltiple. Un hecho natural es que una persona tenga más de un pariente mayor, esta situación también se puede dar en la herencia de clases, naturalmente este tipo de herencia involucra un
Más detallesFórmulas. Objetivos y Definición. Definir fórmulas nos brinda una forma clave de compartir conocimiento y obtener código generado optimizado
97 Objetivos y Definición Definir fórmulas nos brinda una forma clave de compartir conocimiento y obtener código generado optimizado Cuando el valor de un atributo o variable puede calcularse a partir
Más detallesManual para la utilización de PrestaShop
Manual para la utilización de PrestaShop En este manual mostraremos de forma sencilla y práctica la utilización del Gestor de su Tienda Online mediante Prestashop 1.6, explicaremos todo lo necesario para
Más detallesLa ventana de Microsoft Excel
Actividad N 1 Conceptos básicos de Planilla de Cálculo La ventana del Microsoft Excel y sus partes. Movimiento del cursor. Tipos de datos. Metodología de trabajo con planillas. La ventana de Microsoft
Más detalles11. Algunas clases estándar de Java (II)
122 A. García-Beltrán y J.M. Arranz 11. Algunas clases estándar de Java (II) Objetivos: a) Presentar la clase predefinida en Java para trabajar con arrays b) Interpretar el código fuente de una aplicación
Más detallesDiseño orientado a los objetos
Diseño orientado a los objetos El Diseño Orientado a los Objetos (DOO) crea una representación del problema del mundo real y la hace corresponder con el ámbito de la solución, que es el software. A diferencia
Más detallesPara leer la entrada de consola, lo primero que se hace es construir un Scanner que este asociado al flujo de entrada estándar System.
CICLO: 01/2010 Universidad Don Bosco Materia: Lenguaje de Programación III Contenido: 1-Lectura de Datos de entrada. 2-Introduccion a JOPTIONPANE. 3-Estructuras de Control. ->LECTURA DE DATOS DE ENTRADA
Más detallesIntroducción. Herencia y Polimorfismo. Ejemplos (I) Ejemplos (II) Control de Acceso. Herencia
Introducción Herencia y Polimorfismo Se pueden definir jerarquías de clases, con clases generales que definen el comportamiento común a unos objetos y clases específicas que sólo añaden o redefinen el
Más detallesConceptos. ELO329: Diseño y Programación Orientados a Objetos. ELO 329: Diseño y Programación Orientados a Objetos
Conceptos ELO329: Diseño y Programación Orientados a Objetos 1 Paradigmas de Programación Historia: Los computadores parten cableados por hardware, Luego se introduce la programación en binario, Se desarrolla
Más detallesRepaso de las características más importantes de la programación Java y su adaptación a Android
Repaso de las características más importantes de la programación Java y su adaptación a Android 1. Entorno de programación en java 2. Variables y tipos de datos 3. Operaciones y operadores 4. Clases y
Más detallesProf. Dr. Paul Bustamante
Carnet Nombre: Examen C++ Grupo A Informática II Fundamentos de Programación Prof. Dr. Paul Bustamante Pág.1 Índice 1. INTRODUCCIÓN... 1 2. EJERCICIO 1: AGENDA TELEFÓNICA (4.0 PTOS.)...1 3. EJERCICIO 2:
Más detallesBase de datos en Excel
Base de datos en Excel Una base datos es un conjunto de información que ha sido organizado bajo un mismo contexto y se encuentra almacenada y lista para ser utilizada en cualquier momento. Las bases de
Más detallesProf. Dr. Paul Bustamante
Carné: Nombre: Informática II Fundamentos de Programación Prof. Dr. Paul Bustamante INDICE 1. INTRODUCCIÓN... 1 Pag.1 1.1 EJERCICIO1: CÁLCULO DEL IMC (3.0 PTS.)... 1 1.2 EJERCICIO2: OPERADOR VIRTUAL DE
Más detallesPROYECTOS, FORMULACIÓN Y CRITERIOS DE EVALUACIÓN
PROYECTOS, FORMULACIÓN Y CRITERIOS DE EVALUACIÓN GESTIÓN DE PROYECTOS CON PLANNER AVC APOYO VIRTUAL PARA EL CONOCIMIENTO GESTIÓN DE PROYECTOS CON PLANNER Planner es una poderosa herramienta de software
Más detallesMonografía RECINTOS SEGUROS v4.2
Monografía RECINTOS SEGUROS v4.2 (6 Septiembre 2011) (Conservar esta página si se va a imprimir a doble cara) MONOGRAFÍA RECINTOS SEGUROS V4.2 Página 2 de 19 Departamento de Consultoría Documento Confidencial
Más detalles15. Parámetros o argumentos
Programación orientada a objetos con Java 161 15. Parámetros o argumentos Objetivos: a) Profundizar en el concepto de parámetro de una clase e indicar su mecanismo de funcionamiento. b) Interpretar el
Más detallesLas propiedades de la clase en java es el equivalente a las variables globales en lenguajes estructurados como el C.
EJERCICIO GUIADO. JAVA: VARIABLES GLOBALES Variables Globales / Propiedades de la Clase Las propiedades de la clase en java es el equivalente a las variables globales en lenguajes estructurados como el
Más detallesCorrespondencias entre taxonomías XBRL y ontologías en OWL Unai Aguilera, Joseba Abaitua Universidad de Deusto, EmergiaTech
Correspondencias entre taxonomías XBRL y ontologías en OWL Unai Aguilera, Joseba Abaitua Universidad de Deusto, EmergiaTech Resumen Todo documento XBRL contiene cierta información semántica que se representa
Más detallesCrear una Nueva Solución Vacía:
Lo primero que haremos será crear una Solución Vacía, en la cual almacenaremos todos los proyectos y sus clases, que desarrol lemos a lo largo de este curso. Crear una Nueva Solución Vacía: Clic en el
Más detallesIntroducción al lenguaje JAVA
Universidad Autónoma de Tlaxcala Introducción al lenguaje JAVA M.C.. José Juan Hernández ndez Mora Segunda Sesión 1. Arreglos 2. Matrices 3. Clases en Java 4. Clases de Usuario en Java 5. Objetos definidos
Más detallesManual de rol gestor de GAV para moodle 2.5
Manual de rol gestor de GAV para moodle 2.5 Consultas LDAP-GAUR... 2 Buscar en LDAP datos de un usuario... 2 Docentes... 3 Buscar en GAUR datos de un docente... 3 Buscar en GAUR la docencia de un docente
Más detallesClases y Objetos. Informática II Ingeniería Electrónica
Clases y Objetos Informática II Ingeniería Electrónica Los Tipos de Datos Hasta ahora, en un programa podemos usar para representar variables a: Tipos fundamentales : enteros (int), caracteres (char),
Más detallesDIAGRAMA DE CLASES EN UML
DIAGRAMA DE CLASES EN UML Mg. Juan José Flores Cueto jflores@usmp.edu.pe Ing. Carmen Bertolotti Zuñiga cbertolotti@usmp.edu.pe INTRODUCCIÓN UML (Unified Modeling Language) es un lenguaje que permite modelar,
Más detallesGENERACIÓN DE CÓDIGO
GENERACIÓN DE CÓDIGO INTRODUCCION La generación de código es la fase más compleja de un compilador, puesto que no sólo depende de las características del lenguaje fuente sino también de contar con información
Más detallesclass Nombre_Clase extends Nombre_SuperClase { cuerpo de la clase extendida }
REUTILIZACIÓN DE CLASES:MODELO DE HERENCIA EN JAVA Java soporta herencia simple pero no múltiple. Lo hace mediante el mecanismo de extensión de clase. A partir de él, una subclase se extiende (hereda)
Más detallesClases y funciones amigas: friend
1. Introducción a las funciones amigas (Funciones friend) 2. Funciones amigas 3. Clases amigas 4. Ejemplo: La clase fraccional. Métodos operadores amigos 5. Ejemplo: Las clases Coche y Camión. 1 Introducción:
Más detallesEjercicios - Persistencia en Android: ficheros y SQLite
Ejercicios - Persistencia en Android: ficheros y SQLite Índice 1 Uso de ficheros (0.5 puntos)...2 2 Persistencia con ficheros (0.5 puntos)...3 3 Base de datos: SQLiteOpenHelper (0.5 puntos)... 3 4 Base
Más detallesMANUAL DE USUARIO DE LA APLICACIÓN DE ACREDITACION DE ACTIVIDADES DE FORMACION CONTINUADA. Perfil Entidad Proveedora
MANUAL DE USUARIO DE LA APLICACIÓN DE ACREDITACION DE ACTIVIDADES DE FORMACION CONTINUADA Perfil Entidad Proveedora El objetivo del módulo de Gestión de Solicitudes vía Internet es facilitar el trabajo
Más detallesCreación de Funciones de Conducción
Creación de Funciones de Conducción Requerimientos Para el desarrollo de esta actividad se requiere que: Contemos con un robot BoeBot armado con placa Arduino. Repetición En estos momentos habremos notado
Más detallesCurso de PHP con MySQL Gratis
Curso de PHP con MySQL Gratis Introducción Este mini curso o mini tutorial de PHP le ayudará a realizar cualquier sistema para que pueda insertar uno o varios registros a una base de datos con MySQL, este
Más detallesLa pestaña Inicio contiene las operaciones más comunes sobre copiar, cortar y pegar, además de las operaciones de Fuente, Párrafo, Estilo y Edición.
Microsoft Word Microsoft Word es actualmente (2009) el procesador de textos líder en el mundo gracias a sus 500 millones de usuarios y sus 25 años de edad. Pero hoy en día, otras soluciones basadas en
Más detallesIntroduccion al Lenguaje C. Omar Andrés Zapata Mesa Grupo de Fenomenología de Interacciones Fundamentales, (Gfif) Universidad de Antioquia
Introduccion al Lenguaje C Omar Andrés Zapata Mesa Grupo de Fenomenología de Interacciones Fundamentales, (Gfif) Universidad de Antioquia Introducción C es un lenguaje de programación creado en 1972 por
Más detallesCREACIÓN Y CONFIGURACIÓN DE WIKIS
Paso 1: Creación CREACIÓN Y CONFIGURACIÓN DE WIKIS Como con el resto de actividades, para crear un wiki lo primero es activar el modo de edición y seleccionar la opción Wiki de la lista desplegable Agregar
Más detallesCONSULTAS CON SQL. 3. Hacer clic sobre el botón Nuevo de la ventana de la base de datos. Aparecerá el siguiente cuadro de diálogo.
CONSULTAS CON SQL 1. Qué es SQL? Debido a la diversidad de lenguajes y de bases de datos existentes, la manera de comunicar entre unos y otras sería realmente complicada a gestionar de no ser por la existencia
Más detallesJava en 2 horas. Rodrigo Santamaría
+ Java en 2 horas Rodrigo Santamaría + Generalidades 2 Desarrollado por Sun en 1995 Hereda mucha de la sintaxis de C (1972) Fuertemente tipado y orientado a objetos Aplicaciones compiladas a bytecode Gestión
Más detallesGENERACIÓN DE TRANSFERENCIAS
GENERACIÓN DE TRANSFERENCIAS 1 INFORMACIÓN BÁSICA La aplicación de generación de ficheros de transferencias permite generar fácilmente órdenes para que la Caja efectúe transferencias, creando una base
Más detalles1. Qué tipos de relación hay entre las siguientes clases?
Ejercicios Tema 8: Herencia 1. Qué tipos de relación hay entre las siguientes clases? Personal de la Universidad PAS Profesor 1 n Estudiante a) herencia y asociación b) herencia y dependencia c) dependencia
Más detallesLENGUAJES DE CONSULTA ORIENTADOS A OBJETOS
LENGUAJES DE CONSULTA ORIENTADOS A OBJETOS Los lenguajes de consulta constituyen una funcionalidad importante de los SGBDOO. El usuario puede recuperar los datos especificando simplemente las condiciones
Más detallesUNIDAD 1. LOS NÚMEROS ENTEROS.
UNIDAD 1. LOS NÚMEROS ENTEROS. Al final deberás haber aprendido... Interpretar y expresar números enteros. Representar números enteros en la recta numérica. Comparar y ordenar números enteros. Realizar
Más detallesTutorial de UML. Introducción: Objetivos: Audiencia: Contenidos:
Tutorial de UML Introducción: El Lenguaje de Modelamiento Unificado (UML - Unified Modeling Language) es un lenguaje gráfico para visualizar, especificar y documentar cada una de las partes que comprende
Más detalles2.1. Introducción al lenguaje Java
Bloque II. Elementos del lenguaje de programación Java 1.Introducción a los lenguajes de programación 2. Estructura de un programa 3. Datos y expresiones simples 4. Instrucciones de control 5. Entrada/salida
Más detallesClase adicional 3. Métodos. Temas
Clase adicional 3 Temas Métodos o Definir un método o Llamar a un método o Llamada por valor o Constructores o Método static Arrays Vectores Problemas de la clase adicional Problemas de diseño Métodos
Más detallesÁrboles AVL. Laboratorio de Programación II
Árboles AVL Laboratorio de Programación II Definición Un árbol AVL es un árbol binario de búsqueda que cumple con la condición de que la diferencia entre las alturas de los subárboles de cada uno de sus
Más detalles