Está en la página 1de 56

T27: Programación orientada a objetos.

Objetos. Clases. Herencia. Polimorfismo.


Lenguajes

Especialidad: Informática

B.O.E. de 13 de febrero de 1996

Franma Informática: tema 27 – 1 / 56


Índice
❖ Índice

A. Desarrollo

B. Recursos
C. Aplicación
A. Desarrollo
didáctica

D. Mapa conceptual
B. Recursos
C. Aplicación didáctica
D. Mapa conceptual

Franma Informática: tema 27 – 2 / 56


❖ Índice

A. Desarrollo
❖ 0. Introducción
❖ 1. POO
❖ 2. Clases y objetos
❖ 3. Herencia
❖ 4. Interfaces
❖ 5. Polimorfismo
❖ 6. Lenguajes
❖ 6. Conclusión A. Desarrollo
B. Recursos
C. Aplicación
didáctica

D. Mapa conceptual

Franma Informática: tema 27 – 3 / 56


0. Introducción

Programación: proceso de diseño, codificación, depuración y


mantenimiento de programas de computadora.
Lenguaje programación: lenguaje formal diseñado para realizar procesos
(algoritmos) que pueden ser llevados a cabo por máquinas.

• Programación imperativa → prog. estructurada → prog. modular:


- Abstracción:
■ Funcional: conjunto de instrucciones bajo un nombre.
■ De datos: conjunto de datos bajo un nombre.
• Programación orientada a objetos:
- Aúna abstracción funcional y de datos.
- Nuevos conceptos: abstracción, encapsulamiento, herencia y
polimorfismo.
- Origen: SIMULA (1962), primer lenguaje OO.

Franma Informática: tema 27 – 4 / 56


1. Programación orientada a objetos
❖ Índice
Def: forma de programación que abstrae las características y
A. Desarrollo
❖ 0. Introducción
comportamiento que nos interesa de los elementos del
❖ 1. POO mundo real.
❖ 2. Clases y objetos
❖ 3. Herencia
❖ 4. Interfaces
Caracterśiticas de un lenguaje OO:
❖ 5. Polimorfismo
❖ 6. Lenguajes 1. Todo es un objeto.
❖ 6. Conclusión
2. Programa = conjunto de objetos comunicándose (envío de
B. Recursos
C. Aplicación
mensajes).
didáctica 3. Cada objeto tiene su propia memoria.
D. Mapa conceptual
4. Todo objeto es de algún tipo (clase).
5. Todos los objetos del mismo tipo pueden recibir los mismos
mensajes.

Franma Informática: tema 27 – 5 / 56


1. Programación orientada a objetos
❖ Índice
Características fundamentales de la POO:
A. Desarrollo
❖ 0. Introducción • Abstracción.
❖ 1. POO
❖ 2. Clases y objetos • Encapsulamiento.
❖ 3. Herencia • Principio ocultación.
❖ 4. Interfaces
❖ 5. Polimorfismo • Herencia.
❖ 6. Lenguajes
❖ 6. Conclusión
• Polimorfismo.
B. Recursos Otras características de la POO:
C. Aplicación
didáctica
• Gestión memoria.
D. Mapa conceptual
• Empaquetamiento.

Franma Informática: tema 27 – 6 / 56


1. Programación orientada a objetos
❖ Índice
Abstracción: aislar las características que nos interesa de un
A. Desarrollo
❖ 0. Introducción
elemento y que nos permite modelar la realidad.
❖ 1. POO
❖ 2. Clases y objetos
❖ 3. Herencia Características:
❖ 4. Interfaces
❖ 5. Polimorfismo
❖ 6. Lenguajes
• nombre
❖ 6. Conclusión • peso
B. Recursos • número de huevos
C. Aplicación
didáctica
Comportamientos:
D. Mapa conceptual
• comer
• dormir
• poner huevos
• piar

Franma Informática: tema 27 – 7 / 56


1. Programación orientada a objetos
❖ Índice
Encapsulación: agrupar los distintos elementos de una
A. Desarrollo
❖ 0. Introducción
entidad en el mismo nivel de abstración.
❖ 1. POO
❖ 2. Clases y objetos
❖ 3. Herencia
❖ 4. Interfaces
❖ 5. Polimorfismo
❖ 6. Lenguajes
❖ 6. Conclusión

B. Recursos
C. Aplicación
didáctica

D. Mapa conceptual

Franma Informática: tema 27 – 8 / 56


1. Programación orientada a objetos
❖ Índice
Principio de ocultación: ocultar el estado de un elemento
A. Desarrollo
❖ 0. Introducción
(objeto) de forma que solo sea modificable mediante sus
❖ 1. POO operaciones.
❖ 2. Clases y objetos
❖ 3. Herencia
❖ 4. Interfaces
❖ 5. Polimorfismo
❖ 6. Lenguajes
❖ 6. Conclusión

B. Recursos
C. Aplicación
didáctica

D. Mapa conceptual

Franma Informática: tema 27 – 9 / 56


1. Programación orientada a objetos
❖ Índice
Herencia: mecanismo que permite que una clase reciba las
A. Desarrollo
❖ 0. Introducción
propiedades y comportamientos de otras clases.
❖ 1. POO
❖ 2. Clases y objetos
❖ 3. Herencia • Uno de los pilares de la POO.
❖ 4. Interfaces
❖ 5. Polimorfismo
• Reutiliza el código. Minimiza tiempo de desarrollo/testing.
❖ 6. Lenguajes • Mecanismo de generalización/especialización.
❖ 6. Conclusión
• Base del polimorfismo.
B. Recursos
C. Aplicación
didáctica

D. Mapa conceptual

Franma Informática: tema 27 – 10 / 56


1. Programación orientada a objetos
❖ Índice
Polimorfismo: mecanismo que permite enviar mensajes
A. Desarrollo
❖ 0. Introducción
sintácticamente idénticos a objetos de distinto tipo.
❖ 1. POO
❖ 2. Clases y objetos
❖ 3. Herencia
❖ 4. Interfaces
❖ 5. Polimorfismo
❖ 6. Lenguajes
❖ 6. Conclusión

B. Recursos
C. Aplicación
didáctica

D. Mapa conceptual

Franma Informática: tema 27 – 11 / 56


2. Clases y objetos
❖ Índice
Clase: generalización de un tipo determinado de elementos
A. Desarrollo
❖ 0. Introducción
(objetos).
❖ 1. POO
❖ 2. Clases y objetos • Atributos: cada una de las características de una clase.
❖ 3. Herencia • Métodos: cada una de las operaciones que puede
❖ 4. Interfaces
❖ 5. Polimorfismo ejecutar un objeto. Modifica su estado.
❖ 6. Lenguajes
❖ 6. Conclusión Objeto: cada una de las instancias de una clase.
B. Recursos
C. Aplicación
• Identidad: conjunto de atributos que identifica
didáctica
unívocamente un objeto.
D. Mapa conceptual
• Mensaje: comunicación de un objeto a otro que hace
que el receptor ejecute uno de sus métodos.
• Estado: conjunto de valores que poseen los atributos.

Franma Informática: tema 27 – 12 / 56


2. Clases y objetos
❖ Índice

A. Desarrollo
❖ 0. Introducción
❖ 1. POO
❖ 2. Clases y objetos
❖ 3. Herencia
❖ 4. Interfaces
❖ 5. Polimorfismo
❖ 6. Lenguajes
❖ 6. Conclusión

B. Recursos
C. Aplicación
didáctica

D. Mapa conceptual

Gallina g = new Gallina (...)


g . nombre = ... ; // acceso
g . piar (); // mensaje

Franma Informática: tema 27 – 13 / 56


2.1. Declaración de una clase
class nombreClase {
< declaraci ó n de atributos >
< definici ó n de m é todos >
}

< declaraci ó n de atributos >:


< tipo > nombreAtributo [= valorInicial ]

< definici ó n de m é todos >:


< tipo > nombreM é todo ( [ lista par á metros ]) {
< cuerpo del m é todo >
}

Franma Informática: tema 27 – 14 / 56


2.1. Declaración de una clase
❖ Índice
Tipos en Java:
A. Desarrollo
❖ 0. Introducción
❖ 1. POO
Tipo primitivo Tamaño Valor
❖ 2. Clases y objetos byte 1 byte 0
❖ 3. Herencia
❖ 4. Interfaces short 2 bytes 0
❖ 5. Polimorfismo
❖ 6. Lenguajes
int 4 bytes 0
❖ 6. Conclusión long 8 bytes 0L
B. Recursos
float 4 bytes 0.0f
C. Aplicación
didáctica double 8 bytes 0.0d
D. Mapa conceptual
char 2 bytes ’\u000’
boolean 1 bit false

Franma Informática: tema 27 – 15 / 56


2.1.3. Sobrecarga de métodos
❖ Índice
Método sobrecargado: métodos con idéntico nombre. Se
A. Desarrollo
❖ 0. Introducción
distinguen por el número y tipo de parámetros.
❖ 1. POO
❖ 2. Clases y objetos Ejemplo:
❖ 3. Herencia
❖ 4. Interfaces class Calculadora {
❖ 5. Polimorfismo
❖ 6. Lenguajes ...
❖ 6. Conclusión
void sumaMemoria ( double a ) {
B. Recursos
C. Aplicación
...
didáctica
}
D. Mapa conceptual

void sumaMemoria ( double a , double b ) {


...
}
}

Franma Informática: tema 27 – 16 / 56


2.1.4. Constructores y destructores
❖ Índice
Constructor: método que se ejecuta inmediatamente después
A. Desarrollo
❖ 0. Introducción
de crear un objeto. En Java tienen el mismo nombre que la
❖ 1. POO clase sin tipo devuelto.
❖ 2. Clases y objetos
❖ 3. Herencia Constructor por defecto: constructor sin parámetros que se
❖ 4. Interfaces
define de forma implícita cuando una clase carece de
❖ 5. Polimorfismo
❖ 6. Lenguajes constructor.
❖ 6. Conclusión

B. Recursos Ejemplo:
C. Aplicación
didáctica
class Persona {
D. Mapa conceptual
...
Persona (...) { // constructor
...
}
}

Franma Informática: tema 27 – 17 / 56


2.1.4. Constructores y destructores
❖ Índice
Destructor: método que se ejecuta justo antes de destruir un
A. Desarrollo
❖ 0. Introducción
objeto.
❖ 1. POO
❖ 2. Clases y objetos Ejemplo:
❖ 3. Herencia
❖ 4. Interfaces class Persona {
❖ 5. Polimorfismo
❖ 6. Lenguajes ...
❖ 6. Conclusión

B. Recursos
C. Aplicación
// destructor
didáctica
protected void finalize () {
D. Mapa conceptual
...
}
}

Franma Informática: tema 27 – 18 / 56


2.1.4.1. Constructor this()
❖ Índice
this(): permite que un constructor invoque a otro. Debe ser
A. Desarrollo
❖ 0. Introducción
siempre la primera línea que se ejecuta.
❖ 1. POO
❖ 2. Clases y objetos Ejemplo:
❖ 3. Herencia
❖ 4. Interfaces
class Persona {
❖ 5. Polimorfismo
❖ 6. Lenguajes ...
❖ 6. Conclusión

B. Recursos
C. Aplicación
Persona ( int edad , String nombre ) {
didáctica
...
D. Mapa conceptual
}
Persona ( int edad ) {
this ( edad , " Pepe " );
...
}
}

Franma Informática: tema 27 – 19 / 56


2.2. Uso de objetos

Creación de objetos:
variableObjeto = new Constructor ( [ lista valores ])

Acceso a un atributo:
variableObjeto . nombreAtributo

Mensaje a un objeto:
variable . nombreM é todo ( [ lista valores ])

Franma Informática: tema 27 – 20 / 56


2.2.2. Mensajes
❖ Índice

A. Desarrollo objeto . m é todo (...); // cambia su estado


❖ 0. Introducción
❖ 1. POO
❖ 2. Clases y objetos
❖ 3. Herencia
❖ 4. Interfaces
❖ 5. Polimorfismo
❖ 6. Lenguajes
❖ 6. Conclusión

B. Recursos
C. Aplicación
didáctica

D. Mapa conceptual

Franma Informática: tema 27 – 21 / 56


2.3. Niveles de acceso
❖ Índice
En general:
A. Desarrollo
❖ 0. Introducción Privado: solo accesible desde la propia clase.
❖ 1. POO
❖ 2. Clases y objetos Público: accesible desde cualquier parte.
❖ 3. Herencia Protegido: accesible desde las subclases.
❖ 4. Interfaces
❖ 5. Polimorfismo
❖ 6. Lenguajes
❖ 6. Conclusión

B. Recursos
C. Aplicación
didáctica

D. Mapa conceptual

Franma Informática: tema 27 – 22 / 56


2.3.1. Niveles de acceso para clases
❖ Índice
Paquete: colección de clases.
A. Desarrollo
❖ 0. Introducción
Clases vecinas: aquellas clases que forman un paquete.
❖ 1. POO Modificadores de acceso:
❖ 2. Clases y objetos
❖ 3. Herencia • public: la clase es visible para cualquier clase, de
❖ 4. Interfaces
❖ 5. Polimorfismo cualquier paquete.
❖ 6. Lenguajes
❖ 6. Conclusión
• (sin modificador de acceso): la clase solo es visible
B. Recursos para sus clases vecinas.
C. Aplicación
didáctica Ejemplo:
D. Mapa conceptual
public class Persona {
...
}
class Factura {
...
}
Franma Informática: tema 27 – 23 / 56
2.3.2. Niveles de acceso para miembros

la propia clases clases


subclases
clase vecinas externas
private X
sin modificador X X
protected X X X
public X X X X

Franma Informática: tema 27 – 24 / 56


2.4. Referencias
❖ Índice
Referencia: identificador único de un objeto.
A. Desarrollo
❖ 0. Introducción
Variable de tipo objeto: tiene un valor null o una referencia.
❖ 1. POO Recolector de basura: mecanismo que libera los objetos no
❖ 2. Clases y objetos
❖ 3. Herencia referenciados.
❖ 4. Interfaces
❖ 5. Polimorfismo Ejemplo:
❖ 6. Lenguajes
❖ 6. Conclusión
Double x = new Double (1.2);
B. Recursos
C. Aplicación
Double y = x ;
didáctica
Double z = null ;
D. Mapa conceptual

Franma Informática: tema 27 – 25 / 56


2.4.1. Referencia this
❖ Índice
this: referencia al objeto actual.
A. Desarrollo
❖ 0. Introducción
❖ 1. POO
Ejemplo:
❖ 2. Clases y objetos
❖ 3. Herencia class Persona {
❖ 4. Interfaces ...
❖ 5. Polimorfismo
❖ 6. Lenguajes Persona ( String dni ) {
❖ 6. Conclusión
this . dni = dni ;
B. Recursos
C. Aplicación
}
didáctica
}
D. Mapa conceptual

Franma Informática: tema 27 – 26 / 56


2.5. Miembros estáticos
❖ Índice
Miembro estático: aquellos de los que no existen una copia
A. Desarrollo
❖ 0. Introducción
en cada objeto. Denominados también miembros de la
❖ 1. POO clase.
❖ 2. Clases y objetos
❖ 3. Herencia
❖ 4. Interfaces
• Se definen con static.
❖ 5. Polimorfismo
❖ 6. Lenguajes Ejemplo:
❖ 6. Conclusión

B. Recursos
C. Aplicación
didáctica

D. Mapa conceptual

Franma Informática: tema 27 – 27 / 56


3. Herencia
❖ Índice
Def: mecanismo que permite crear nuevas clases a partir de
A. Desarrollo
❖ 0. Introducción
las existentes.
❖ 1. POO
❖ 2. Clases y objetos • Facilita reusabilidad.
❖ 3. Herencia • Minimiza tiempo de desarrollo y verificaciones.
❖ 4. Interfaces
❖ 5. Polimorfismo
❖ 6. Lenguajes
Dos tipos:
❖ 6. Conclusión
Herencia múltiple: una clase hereda de varias.
B. Recursos
C. Aplicación
Herencia simple: solo se hereda de una única clase.
didáctica

D. Mapa conceptual

Franma Informática: tema 27 – 28 / 56


3. Herencia
❖ Índice
Subclase: la clase que hereda.
A. Desarrollo
❖ 0. Introducción
Superclase: clase de la que se hereda.
❖ 1. POO
❖ 2. Clases y objetos
❖ 3. Herencia
❖ 4. Interfaces
❖ 5. Polimorfismo
❖ 6. Lenguajes
❖ 6. Conclusión

B. Recursos
C. Aplicación
didáctica

D. Mapa conceptual

Sintaxis:
class SubClase extends SuperClase {
...
}

Franma Informática: tema 27 – 29 / 56


3.1. Override y 3.2. Shadowing
❖ Índice
Reescritura de miembros:
A. Desarrollo
❖ 0. Introducción • Reescritura de métodos (overriding): reemplazar la
❖ 1. POO
❖ 2. Clases y objetos implementación de un método heredado.
❖ 3. Herencia
❖ 4. Interfaces - @Override
❖ 5. Polimorfismo
❖ 6. Lenguajes • Ocultación de atributos (shadowing): ocultar un
❖ 6. Conclusión
atributo de la superclase redefiniéndolo.
B. Recursos
C. Aplicación
didáctica

D. Mapa conceptual

Franma Informática: tema 27 – 30 / 56


3.1. Override y 3.2. Shadowing
❖ Índice
Ejemplo:
A. Desarrollo
❖ 0. Introducción class Ave {
❖ 1. POO
❖ 2. Clases y objetos public int nombre ;
❖ 3. Herencia
❖ 4. Interfaces
public void piar () {
❖ 5. Polimorfismo System . out . println ( " Pio , pio " );
❖ 6. Lenguajes
❖ 6. Conclusión
}
B. Recursos }
C. Aplicación
didáctica

D. Mapa conceptual class Gallina extends Ave {


public String nombre ; // Shadowing
public void piar () { // Overriding
System . out . println ( " Quiquiriqu í " );
}
}

Franma Informática: tema 27 – 31 / 56


3.3. Visibilidad en la herencia

protected:
• Sin herencia: igual que el modificador por defecto.
• Con herencia: igual que public.
Resumen:

Miembro de la superclase Se hereda


public sí
protected sí
private no
(superclase y subclase: vecinas) sí
(sin modificador de acceso)
(superclase y subclase: no vecinas) no

Franma Informática: tema 27 – 32 / 56


3.4. Clase Object
❖ Índice
Object: clase situada en el vértice de la jerarquía de herencia
A. Desarrollo
❖ 0. Introducción
en Java.
❖ 1. POO
❖ 2. Clases y objetos • Se hereda de forma implícita.
❖ 3. Herencia • equals()
❖ 4. Interfaces
❖ 5. Polimorfismo • toString()
❖ 6. Lenguajes
❖ 6. Conclusión
• hashCode()
B. Recursos • clone()
C. Aplicación
didáctica
• finalize()
D. Mapa conceptual
• getClass()
• notify(), notifyAll() y wait().

Franma Informática: tema 27 – 33 / 56


3.5. super y 3.6. super()
❖ Índice
Acceso a la superclase:
A. Desarrollo
❖ 0. Introducción super: referencia a la superclase.
❖ 1. POO
❖ 2. Clases y objetos super(): constructor de la superclase.
❖ 3. Herencia
❖ 4. Interfaces • Solo se puede invocar dentro de un constructor.
❖ 5. Polimorfismo
❖ 6. Lenguajes
• Siempre la primera instrucción en ejecutarse.
❖ 6. Conclusión

B. Recursos
C. Aplicación
didáctica

D. Mapa conceptual

Franma Informática: tema 27 – 34 / 56


3.7. Clases abstractas
❖ Índice
Clase abstracta: una clase declarada abstract.
A. Desarrollo
❖ 0. Introducción • Pensadas para heredar.
❖ 1. POO
❖ 2. Clases y objetos • No instanciables.
❖ 3. Herencia • Puede no contener métodos abstractos.
❖ 4. Interfaces
❖ 5. Polimorfismo • Toda subclase:
❖ 6. Lenguajes
❖ 6. Conclusión - define los métodos abstractos,
B. Recursos - o se considera abstracta.
C. Aplicación
didáctica
Método abstracto: método definido pero no implementado.
D. Mapa conceptual

abstract class Clase {


...
abstract public tipo m é todo (...);
}

Franma Informática: tema 27 – 35 / 56


3.8. Clases y métodos no heredables
❖ Índice final:
A. Desarrollo
❖ 0. Introducción • Impide heredar de una clase.
❖ 1. POO
❖ 2. Clases y objetos final class ClaseFinal {
❖ 3. Herencia
❖ 4. Interfaces ...
❖ 5. Polimorfismo
❖ 6. Lenguajes
}
❖ 6. Conclusión
• Impide hacer overriding de un método.
B. Recursos
C. Aplicación
didáctica
class Clase {
D. Mapa conceptual ...
final void metodoFinal (...) {
...
}
}

Franma Informática: tema 27 – 36 / 56


4. Interfaces
❖ Índice
Interfaz: contrato por el que una clase se compromete a
A. Desarrollo
❖ 0. Introducción
implementar métodos abstractos. Pueden contener:
❖ 1. POO
❖ 2. Clases y objetos • Constantes.
❖ 3. Herencia • Métodos abstractos (abstract).
❖ 4. Interfaces
❖ 5. Polimorfismo • Métodos implementados (default).
❖ 6. Lenguajes
❖ 6. Conclusión
• Métodos estáticos (static).
B. Recursos • Tipos anidados.
C. Aplicación
didáctica Implmentación de una interfaz: implements.
D. Mapa conceptual
• Una clase abstracta que implementa una interfaz no
está obligada a implementar sus métodos abstractos.
Interfaz como tipo: una variable de tipo interfaz puede
referenciar objetos de clases que la implementen.

Franma Informática: tema 27 – 37 / 56


4. Interfaces

Visibilidad en clases abstractas e interfaces:


Clase abstracta Interfaz
Visibilidad atributos: public, protected o private siempre public
static: opcional siempre
final: opcional siempre
hereda de: una única clase de múltiples interfaces

Algunas interfaces de la API de Java:


Cloneable: permite realizar copias exactas de objetos.
Comparable y Comparator: realizan comparaciones de objetos.
List, Map y Set: colecciones.
Iterator: permite recorrer colecciones.

Franma Informática: tema 27 – 38 / 56


5. Polimorfismo
❖ Índice
Def: propiedad por la que es posible enviar mensajes
A. Desarrollo
❖ 0. Introducción
sintácticamente idénticos a objetos de distinto tipo.
❖ 1. POO Def: mecanismo que proporciona distintos comportamiento a
❖ 2. Clases y objetos
❖ 3. Herencia mensajes idénticos.
❖ 4. Interfaces
Def: polisemia en la POO: un nombre, muchos conceptos.
❖ 5. Polimorfismo
❖ 6. Lenguajes
❖ 6. Conclusión
Idea: una interfaz, múltiples métodos.
B. Recursos
C. Aplicación
didáctica
Tipos:
D. Mapa conceptual
• Estático.
• Dinámico.

Franma Informática: tema 27 – 39 / 56


Polimorfismo estático
❖ Índice
Def: es aquel donde el compilador decide qué método ejecutar
A. Desarrollo
❖ 0. Introducción
en tiempo de compilación.
❖ 1. POO Mecanismo: sobrecarga.
❖ 2. Clases y objetos
❖ 3. Herencia
❖ 4. Interfaces System . out . println (23);
❖ 5. Polimorfismo
❖ 6. Lenguajes System . out . println ( " Hola " );
❖ 6. Conclusión

B. Recursos
C. Aplicación
didáctica

D. Mapa conceptual

Franma Informática: tema 27 – 40 / 56


Polimorfismo dinámico
❖ Índice
Def: es aquel que selecciona qué método invocar en tiempo de
A. Desarrollo
❖ 0. Introducción
ejecución.
❖ 1. POO Mecanismo: Herencia e implementación de interfaces.
❖ 2. Clases y objetos
❖ 3. Herencia
❖ 4. Interfaces
❖ 5. Polimorfismo
❖ 6. Lenguajes
❖ 6. Conclusión

B. Recursos
C. Aplicación
didáctica

D. Mapa conceptual

Franma Informática: tema 27 – 41 / 56


5.1. Polimorfismo en la herencia
❖ Índice
Base: una variable de una superclase puede referenciar
A. Desarrollo
❖ 0. Introducción
cualquier objeto de sus subclases.
❖ 1. POO Tipo de una variable:
❖ 2. Clases y objetos
❖ 3. Herencia • Tipo estático: el tipo con el que se declarado la
❖ 4. Interfaces
❖ 5. Polimorfismo variable.
❖ 6. Lenguajes
❖ 6. Conclusión
• Tipo dinámico: el tipo del objeto que está
B. Recursos referenciando.
C. Aplicación
didáctica

D. Mapa conceptual

Franma Informática: tema 27 – 42 / 56


5.1. Polimorfismo en la herencia

Franma Informática: tema 27 – 43 / 56


5.1. Polimorfismo en la herencia
❖ Índice

A. Desarrollo
❖ 0. Introducción
❖ 1. POO
❖ 2. Clases y objetos
❖ 3. Herencia
❖ 4. Interfaces
❖ 5. Polimorfismo
❖ 6. Lenguajes
❖ 6. Conclusión

B. Recursos
C. Aplicación
didáctica

D. Mapa conceptual

Franma Informática: tema 27 – 44 / 56


5.1. Polimorfismo en la herencia
❖ Índice

A. Desarrollo public class Padre {


❖ 0. Introducción
❖ 1. POO
int x = 1;
❖ 2. Clases y objetos public void soy () {
❖ 3. Herencia
❖ 4. Interfaces
System . out . println ( " padre " );
❖ 5. Polimorfismo }
❖ 6. Lenguajes
❖ 6. Conclusión }
B. Recursos
C. Aplicación
didáctica

D. Mapa conceptual public class Hijo extends Padre {


String x = " x " ; // shadowing
@Override // overriding
public void soy () {
System . out . println ( " hijo " );
}
}
Franma Informática: tema 27 – 45 / 56
5.1. Polimorfismo en la herencia
❖ Índice

A. Desarrollo Padre p1 = new Padre ();


❖ 0. Introducción
❖ 1. POO
Padre p2 = new Hijo ();
❖ 2. Clases y objetos Hijo h = new Hijo ();
❖ 3. Herencia
❖ 4. Interfaces
❖ 5. Polimorfismo p1 . x // 1. Variable de tipo Padre
❖ 6. Lenguajes
❖ 6. Conclusión p1 . soy (); // " padre ". Objeto de tipo Padre
B. Recursos
C. Aplicación
didáctica p2 . x // 1. Variable de tipo Padre
D. Mapa conceptual p2 . soy (); // " hijo ". Objeto de tipo Hijo

h . x // "x ". Variable de tipo Hijo


h . soy (); // " hijo ". Objeto de tipo Hijo

Franma Informática: tema 27 – 46 / 56


5.2. Polimorfismo con interfaces
❖ Índice
Base: una variable de tipo interfaz puede referenciar cualquier
A. Desarrollo
❖ 0. Introducción
objeto de una clase que la implemente. A través de esa
❖ 1. POO variable solo serán visibles los miembros de la interfaz.
❖ 2. Clases y objetos
❖ 3. Herencia
❖ 4. Interfaces
Ejemplo:
❖ 5. Polimorfismo
❖ 6. Lenguajes // variable interfaz
❖ 6. Conclusión
List lista [] = new List [3];
B. Recursos
C. Aplicación
didáctica
/* ArrayList , LinkedList y Vector son
D. Mapa conceptual
clases que implementan List */
lista [0] = new ArrayList ();
lista [1] = new LinkedList ();
lista [2] = new Vector ();

Franma Informática: tema 27 – 47 / 56


6. Lenguajes
❖ Índice
1962: Simula.
A. Desarrollo
❖ 0. Introducción
1969: Smalltalk.
❖ 1. POO 1974: CLU.
❖ 2. Clases y objetos
❖ 3. Herencia 1983: ADA.
❖ 4. Interfaces
1998: C++.
❖ 5. Polimorfismo
❖ 6. Lenguajes 1986: Object Pascal y Eiffel.
❖ 6. Conclusión
1995: Java.
B. Recursos
C. Aplicación
2000: C#
didáctica

D. Mapa conceptual

Franma Informática: tema 27 – 48 / 56


6.1. Clasificación
❖ Índice
Lenguajes puros: Smalltalk, Eiffel.
A. Desarrollo
❖ 0. Introducción
Lenguajes mixtos: C++, Ada, Object Pascal, Java.
❖ 1. POO
❖ 2. Clases y objetos
❖ 3. Herencia
❖ 4. Interfaces
❖ 5. Polimorfismo
❖ 6. Lenguajes
❖ 6. Conclusión

B. Recursos
C. Aplicación
didáctica

D. Mapa conceptual

Nota: Java no es un lenguaje puro debido al uso de tipos


primitivos, pero se acerca mucho.

Franma Informática: tema 27 – 49 / 56


7. Conclusión
❖ Índice
• Lenguajes POO se encuentran en pleno auge.
A. Desarrollo
❖ 0. Introducción
• Tendencia POE = POO + GUI.
❖ 1. POO • Multitud de lenguajes POO vinculados a la web.
❖ 2. Clases y objetos
❖ 3. Herencia • Lenguajes POO + frameworks = desarrollo ágil.
❖ 4. Interfaces
❖ 5. Polimorfismo
❖ 7. Lenguajes
❖ 7. Conclusión

B. Recursos
C. Aplicación
didáctica

D. Mapa conceptual

Franma Informática: tema 27 – 50 / 56


❖ Índice

A. Desarrollo

B. Recursos
❖ 8. Bibliografía
C. Aplicación
didáctica

D. Mapa conceptual

B. Recursos

Franma Informática: tema 27 – 51 / 56


8. Bibliografía
❖ Índice
• El Lenguaje de Programación C++. Bjarne Stroustrup.
A. Desarrollo
Addison Wesley.
B. Recursos
❖ 8. Bibliografía • Java. The Complete Reference. 8ª ed. Herbert Schildt.
C. Aplicación
didáctica
Oracle Press.
D. Mapa conceptual
• C++: Guía De Autoenseñanza. Herbert Schildt, Osborne
McGraw Hill.
• Aprende a Programar con Java, 2ª. ed. Alfonso Jiménez et
al. Paraninfo, 2016.
• Documentación oficial de Java:
https://docs.oracle.com/en/java/

Franma Informática: tema 27 – 52 / 56


❖ Índice

A. Desarrollo

B. Recursos
C. Aplicación
didáctica
❖ 9. Aplicación
didáctica

D. Mapa conceptual

C. Aplicación didáctica

Franma Informática: tema 27 – 53 / 56


9. Aplicación didáctica en el aula
❖ Índice
Los aspectos relacionados con fundamentos de programación
A. Desarrollo
orientada a objetos:
B. Recursos
C. Aplicación
didáctica
• Programación (1º DAW y DAM).
❖ 9. Aplicación
didáctica
• Entornos de desarrollo (1º DAW y DAM).
D. Mapa conceptual • TIC II (2º Bachillerato).
• Programación y Computación (2º Bachillerato).

Franma Informática: tema 27 – 54 / 56


❖ Índice

A. Desarrollo

B. Recursos
C. Aplicación
didáctica

D. Mapa conceptual
❖ 11. Mapa
conceptual

D. Mapa conceptual

Franma Informática: tema 27 – 55 / 56


11. Mapa conceptual

Franma Informática: tema 27 – 56 / 56

También podría gustarte