Академический Документы
Профессиональный Документы
Культура Документы
Java
Polimorfismo
Polimorfismo
Es la propiedad que indica, literalmente, la posibilidad de que una entidad tome muchas formas. En trminos prcticos, el polimorfismo permite referirse a objetos de clases diferentes mediante el mismo elemento de programa y realizar la misma operacin de diferentes formas, segn sea el objeto que se referencia en ese momento.
Tipos
Ejemplo de polimorfismo
Polimorfismo
Sobrecarga Es la posibilidad de tener dos o ms funciones con el mismo nombre pero funcionalidad diferente. Es decir, dos o ms funciones con el mismo nombre realizan acciones diferentes.
Ejemplo sobrecarga
class Calculadora { int suma(int x, int y) { return (x + y); } float suma(float x, float y) { return (x + y); } }
Polimorfismo
Ocultamiento
Desde un objeto de la clase derivada, siempre se accede al mtodo sobrescrito. El mtodo original queda oculto. La decisin de a quien llamar se resuelve basndose en el tipo de la variable del objeto.
Polimorfismo
Ocultamiento: Problema 1
class Base { public: void Metodo( ) {cout << "Base::Metodo\n"; }}; class Derivada : public Base { public: void Metodo( ) {cout << "Deri::Metodo\n"; }}; void main() { Base ObjBase; Derivada ObjDerivada; Base* pBase; pBase = &ObjBase; pBase->Metodo( ); pBase = &ObjDerivada; pBase->Metodo( ); }
Polimorfismo
Sobrescritura virtual
Desde cualquier mtodo de la clase base o derivada o desde fuera de ellas, una llamada a un mtodo se resuelve en base al tipo del objeto, no el de la variable.
Polimorfismo
Implementacin de interfaces
Concepto de Interfaz Definicin:
Java:
interfaz UnaInterfaz { void Met( ); }
Tcnicas de Programacin II Ciclo
Polimorfismo
Polimorfismo
using System; abstract class Base{ public void imprimir() {Console.WriteLine("Imprimir: Clase Base");} abstract public void metodo(); } class Derivada : Base{ new public void imprimir(){Console.WriteLine("Imprimir: Clase Derivada");} override public void metodo(){Console.WriteLine("Metodo: Clase Derivada");} } class MainClass{ public static void Main(string[] args){ Base objbase ;//= new Base(); Derivada derivada = new Derivada(); objbase = derivada; objbase.imprimir(); objBase.metodo(); derivada.imprimir();derivada.metodo(); } }
Polimorfismo
Interfaz Declarar mtodos abstractos Implementar Mtodos Aadir datos miembros Crear objetos Crear arreglos, referencias X X X
Clase abstracta X
Ejercicios
Disear una clase Garaje que: En el constructor se indique el nmero total de plazas de garaje En cada plaza se pueda guardar tanto un coche como una moto Tenga una funcin que devuelva la cuota mensual de una plaza: -Si en dicha plaza hay un coche, la cuota se calcula como la potencia multiplicada por el nmero de plazas -Si en dicha plaza hay una moto, la cuota se calcula como la potencia multiplicada por 2 -Si no hay ningn vehculo en la plaza, la cuota es 0
Ejercicios
Se quiere elaborar el catlogo de un museo para lo cual se deben modelar las siguientes entidades: a) Los artistas, de los que se quiere guardar informacin acerca de su nombre y lugar de nacimiento, as como la fecha de su natalicio y de su fallecimiento.
b) Las obras artsticas, de cada una de las cuales se desea conocer su ttulo, su nmero de inventario, su autor y el ao en que la realiz. En el museo solo hay dos tipos de obras: esculturas y pinturas. De las primeras se quiere guardar informacin sobre el material en que fueron hechas y la altura que poseen. De las pinturas en cambio, se guardar informacin de sus dimensiones y del soporte en que han sido realizadas. c) El catlogo es una secuencia de obras artsticas.