Вы находитесь на странице: 1из 29

POLIMORFISMO

http://www.miprimercodigo.com

Polimorfismo

Mediante el polimorfismo, se pueden escribir programas que procesen genricamente como objetos de superclase- objetos de todas las clases existentes en una jerarqua. Las clases que no existen durante el desarrollo de los programas se pueden agregar con poca o ninguna modificacin de la parte genrica del programa, en tanto esas clases formen parte de la jerarqua que se esta procesando genricamente.
2

Polimorfismo

Hay varias formas de polimorfismo:


Cuando invocamos el mismo nombre de mtodo sobre instancias de distinta clase cuando creamos mltiples constructores cuando va subtipo asignamos una instancia de una subclase a una referencia a la clase base.

Cuando creamos una clase derivada, gracias a la relacin es-un podemos utilizar instancias de la clase derivada donde se esperaba una instancia de la clase base. Tambin se conoce como principio de substitucin.

Conceptos bsicos: POLIMORFISMO

Ej: Operacin Abrir


Puerta Abrir()

Cuenta
Abrir()

Puerto Abrir()

Plazo

Abrir()

Permite al modelador hablar el lenguaje del cliente. Evita asignar identificadores artificiosos para distinguir las operaciones. Contribuye a la reutilizacin de cdigo. Ej: Operacin Enchufar TomaDeCorriente
tensin Enchufar(e:Electrodomstico)

Casteo(Casting): Cambio de tipo forzado

Cmo podemos acceder a los mtodos definido en una clase derivada pero no en la base? Se debe hacer un cambio de tipo forzado. Por ejemplo:

Casteo(Casting): Cambio de tipo forzado

Casteo(Casting): Cambio de tipo forzado

Cmo sabemos que e es una referencia a una instancia de Manger? Lo podemos preguntar con el operador instance of.

Casteo(Casting): Cambio de tipo forzado

CLASES ABSTRACTAS

http://www.miprimercodigo.com

Clases Abstractas

Llevando la idea de herencia a un extremo, podemos pensar en buenas clases para representar un grupo de objetos pero que no tienen instancias propias.
Por ejemplo Forma como clase base de Triangulo, Circulo, Cuadrado.

Forma puede indicar todo el comportamiento vlido para una forma pero no puede instanciarse por si mismo.

10

Clases Abstractas

Las clases abstractas suelen representar conceptos generales, las caractersticas comunes de una serie de objetos. Declaracin:

En ente caso las clases abstractas deben por tener al menos un mtodo declarado pero no implementado( Mtodo Abstracto)

11

Palabra Reservada

Nombre de la Clase
Atributos

Mtodos

Uno o mas Mtodos Abstractos


12

Clases Abstractas

Las clases abstractas suelen representar conceptos generales, las caractersticas comunes de una serie de objetos. Las clases abstractas pueden definir mtodos no abstractos y atributos, y normalmente mtodos abstractos. El Lenguaje java obliga a que si una clase tiene un mtodo abstracto la clase se declara abstracta.

13

Clases Abstractas

Una caracterstica importante es que no se pueden crear objetos de una clase abstracta. Pero si se pueden declarar variables de una clase abstracta. Como estas estn en lo ms alto de la Jerarqua de clases, son superclases base, hay una conversin automtica de referencias de clases derivadas a clases base. As, se puede asignar a una variable de clase base abstracta cualquier objeto concreto de las clases derivadas.
14

Clases Abstractas

Una clase derivada que no redefine un mtodo abstracto es tambin clase abstracta. A menudo existen clases que sirven para definir un tipo genrico pero que no tiene sentido instanciar (crear objetos de ella). Mtodos abstractos: Un mtodo abstracto significa que tiene que ser sobrescrito. No est implementado.

15

Clases Abstractas

Una clase con uno o varios mtodos abstractos tiene que ser declarada abstracta. No obstante una clase abstracta no tiene porque tener mtodos abstractos. La clase abstracta tiene un mtodo sin implementacin.

16

INTERFACES

http://www.miprimercodigo.com

INTERFACES

El concepto de interface lleva un paso ms adelante la idea de las clases abstractas. En Java una interface es una clase abstracta pura, es decir una clase donde todos los mtodos son abstractos (no se implementa ninguno). Permite al diseador de clases establecer la forma de una clase (nombres de mtodos, listas de argumentos y tipos de retorno, pero no bloques de cdigo).
18

INTERFACES

Una interface puede tambin contener datos miembro, pero estos son siempre static y final. Una interface sirve para establecer un 'protocolo' entre clases. Para crear una interface, se utiliza la palabra clave interface en lugar de class. La interface puede definirse public o sin modificador de acceso, y tiene el mismo significado que para las clases

19

INTERFACES

Todos los mtodos que declara una interface son siempre public. Para indicar que una clase implementa los mtodos de una interface se utiliza la palabra clave implements. El compilador se encargar de verificar que la clase efectivamente declare e implemente todos los mtodos de la interface. Una clase puede implementar ms de una interface.
20

INTERFACES

Los interfaces son un tipo de clase especial que no implementa ninguno de sus mtodos. Todos son abstractos. Por tanto no se pueden instanciar. Si una clase que hereda de un interface, no implementa todos los mtodos de este, deber ser definida como abstracta.

21

Referencias a Interfaces Es posible crear referencias a interfaces, pero las interfaces no pueden ser instanciadas. Una referencia a una interface puede ser asignada a cualquier objeto que implemente la interface. Por ejemplo: InstrumentoMusical instrumento = new Guitarra(); instrumento.play(); System.out.prinln(instrumento.tipoInstrumento());
22

Extensin de interfaces Las interfaces pueden extender otras interfaces y, a diferencia de las clases, una interface puede extender ms de una interface. La sintaxis es:

23

Paquetes

Clasula package Un package es una agrupacin de clases afines. Equivale al concepto de librera existente en otros lenguajes o sistemas. Una clase puede definirse como perteneciente a un package y puede usar otras clases definidas en ese o en otros packages.

24

Paquetes

Clasula package Los packages delimitan el espacio de nombres (space name). El nombre de una clase debe ser nico dentro del package donde se define. Dos clases con el mismo nombre en dos packages distintos pueden coexistir e incluso pueden ser usadas en el mismo programa.

25

Paquetes

Clasula package Una clase se declara perteneciente a un package con la clausula package, cuya sintaxis es: package nombre_package; La clausula package debe ser la primera sentencia del archivo fuente. Cualquier clase declarada en ese archivo pertenece al package indicado.

26

Paquetes

Clasula package La clasula package es opcional. Si no se utiliza, las clases declaradas en el archivo fuente no pertenecen a ningn package concreto, sino que pertenecen a un package por defecto sin nombre.

27

Paquetes

Clasula package La agrupacin de clases en packages es conveniente desde el punto de vista organizativo, para mantener bajo una ubicacin comn clases relacionadas que cooperan desde algn punto de vista. Tambin resulta importante por la implicacin que los packages tienen en los modificadores de acceso, que se explican en un captulo posterior.
28

Tema 5. El Paradigma Orientado a Objetos.

Clasula import Cuando se referencia cualquier clase dentro de otra se asume, si no se indica otra cosa, que sta otra est declarada en el mismo package .

29

Вам также может понравиться