Herencia e Interfaces

Tamaño: px
Comenzar la demostración a partir de la página:

Download "Herencia e Interfaces"

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 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 detalles

Curso de Java POO: Programación orientada a objetos

Curso 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 detalles

Tema 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 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 detalles

RESUMEN DE CONCEPTOS BASICOS DE PROGRAMACION JAVA

RESUMEN 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 detalles

PHP 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 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 detalles

Curso de Python Inicial

Curso 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 detalles

EXAMEN 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 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 detalles

Introducción a la Programación Orientada a Objetos

Introducció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 detalles

POLIMORFISMO "una interfaz, múltiples métodos".

POLIMORFISMO 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 detalles

2.2.- Paradigmas de la POO

2.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 detalles

Programación Orientada a Objetos en Java

Programació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 detalles

Introducción a la programación orientada a objetos

Introducció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 detalles

Tema 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 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 detalles

GUIA PROGRAMACIÓN ORIENTADA A OBJETOS

GUIA 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 detalles

Java Inicial (20 horas)

Java 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 detalles

Programación en Java. Programación en OO

Programació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 detalles

8. Sentencia return y métodos

8. 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 detalles

Herencia. 3.- Herencia. Declaración de una clase derivada en Delphi. Jerarquía de clases

Herencia. 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 detalles

9. Objetos y clases. 9.1. Clases

9. 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 detalles

Partes 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 /* 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 detalles

En cualquier caso, tampoco es demasiado importante el significado de la "B", si es que lo tiene, lo interesante realmente es el algoritmo.

En 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 detalles

Definición de clases: Herencia, polimorfismo, ligadura dinámica

Definició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 detalles

Programación orientada a objetos

Programació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 detalles

Modulo 1 El lenguaje Java

Modulo 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 detalles

Constructores y Destructores

Constructores 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 detalles

Programación Orientada a Objetos en Java

Programació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 detalles

Programació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. 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 detalles

Universidad de Cantabria corcuerp@unican.es

Universidad 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 detalles

Prof. Dr. Paul Bustamante

Prof. 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 detalles

GESTIÓN DE EXCEPCIONES EN JAVA. CAPTURA CON BLOQUES TRY CATCH Y FINALLY. EJEMPLOS RESUELTOS. (CU00927C)

GESTIÓ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 detalles

19. Packages o paquetes

19. 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 detalles

El lenguaje de programación Java

El 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 detalles

ISTP CIDET COMPUTACION E INFORMATICA ARREGLOS EN JAVA

ISTP 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 detalles

ESCUELA 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 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 detalles

Examen 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 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 detalles

Patrones para persistencia (I) Ingeniería del Software II

Patrones 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 detalles

Prácticas de Programación

Prá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 detalles

Modelo de Objetos Distribuidos

Modelo 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 detalles

Clases. Java: Clases y Objetos. Clases. Clases. Modificadores de clase. Definición de una clase. Cada objeto es un ejemplar de una clase

Clases. 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 detalles

Capítulo 6. Introducción a la POO

Capí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 detalles

Creación y administración de grupos de dominio

Creació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 detalles

Contenidos. Funciones (suplemento) Funciones. Justificación del uso de Funciones

Contenidos. 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 detalles

Pruebas de unidad con JUnit

Pruebas 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 detalles

MANUAL COPIAS DE SEGURIDAD

MANUAL 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 detalles

CAPÍ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 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 detalles

Introducción al lenguaje Java

Introducció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 detalles

UNIVERSIDAD CATOLICA DE COLOMBIA FACULTAD DE INGENIERIA DE SISTEMAS

UNIVERSIDAD 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 detalles

Metadatos en Plataformas ECM

Metadatos 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 detalles

I. 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 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 detalles

PROGRAMACIÓN ORIENTADA A OBJETOS (L40629) Sabino Miranda-Jiménez

PROGRAMACIÓ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 detalles

Curso de Doctorado: Tecnologías de Objetos

Curso 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 detalles

Visual Basic 1. Empleo de módulos y Procedimientos. Procedimientos definidos por el usuario

Visual 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 detalles

Mantenimiento Limpieza

Mantenimiento 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 detalles

Lenguajes de Programación Curso 04-05. Práctica 4. Herencia. Utilización de interfaces y clases abstractas. 1. Interfaces 1. 2. Clases abstractas 2

Lenguajes 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 detalles

QUÉ 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É 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 detalles

Clases abstractas e interfaces

Clases 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 detalles

Tema: Sobrecarga de Operadores.

Tema: 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 detalles

INSTITUTO TECNOLOGICO de la laguna Programación Orientada a Objetos en C++

INSTITUTO 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 detalles

Fórmulas. Objetivos y Definición. Definir fórmulas nos brinda una forma clave de compartir conocimiento y obtener código generado optimizado

Fó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 detalles

Manual para la utilización de PrestaShop

Manual 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 detalles

La ventana de Microsoft Excel

La 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 detalles

11. Algunas clases estándar de Java (II)

11. 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 detalles

Diseño orientado a los objetos

Diseñ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 detalles

Para leer la entrada de consola, lo primero que se hace es construir un Scanner que este asociado al flujo de entrada estándar System.

Para 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 detalles

Introducción. Herencia y Polimorfismo. Ejemplos (I) Ejemplos (II) Control de Acceso. Herencia

Introducció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 detalles

Conceptos. 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. 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 detalles

Repaso 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 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 detalles

Prof. Dr. Paul Bustamante

Prof. 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 detalles

Base de datos en Excel

Base 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 detalles

Prof. Dr. Paul Bustamante

Prof. 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 detalles

PROYECTOS, FORMULACIÓN Y CRITERIOS DE EVALUACIÓN

PROYECTOS, 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 detalles

Monografía RECINTOS SEGUROS v4.2

Monografí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 detalles

15. Parámetros o argumentos

15. 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 detalles

Las propiedades de la clase en java es el equivalente a las variables globales en lenguajes estructurados como el C.

Las 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 detalles

Correspondencias 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 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 detalles

Crear una Nueva Solución Vacía:

Crear 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 detalles

Introducción al lenguaje JAVA

Introducció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 detalles

Manual de rol gestor de GAV para moodle 2.5

Manual 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 detalles

Clases y Objetos. Informática II Ingeniería Electrónica

Clases 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 detalles

DIAGRAMA DE CLASES EN UML

DIAGRAMA 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 detalles

GENERACIÓN DE CÓDIGO

GENERACIÓ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 detalles

class Nombre_Clase extends Nombre_SuperClase { cuerpo de la clase extendida }

class 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 detalles

Clases y funciones amigas: friend

Clases 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 detalles

Ejercicios - Persistencia en Android: ficheros y SQLite

Ejercicios - 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 detalles

MANUAL 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 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 detalles

Creación de Funciones de Conducción

Creació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 detalles

Curso de PHP con MySQL Gratis

Curso 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 detalles

La 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.

La 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 detalles

Introduccion 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 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 detalles

CREACIÓN Y CONFIGURACIÓN DE WIKIS

CREACIÓ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 detalles

CONSULTAS 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. 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 detalles

Java en 2 horas. Rodrigo Santamaría

Java 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 detalles

GENERACIÓN DE TRANSFERENCIAS

GENERACIÓ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 detalles

1. Qué tipos de relación hay entre las siguientes clases?

1. 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 detalles

LENGUAJES DE CONSULTA ORIENTADOS A OBJETOS

LENGUAJES 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 detalles

UNIDAD 1. LOS NÚMEROS ENTEROS.

UNIDAD 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 detalles

Tutorial de UML. Introducción: Objetivos: Audiencia: Contenidos:

Tutorial 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 detalles

2.1. Introducción al lenguaje Java

2.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 detalles

Clase adicional 3. Métodos. Temas

Clase 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 Á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