3 poo abstraccion modula..herencia

21
Ing Pedro Alvarez Sanchez 1 Programación Orientada a Objetos ING PEDRO ALVAREZ

Upload: pedro-alvarez-sanchez

Post on 12-Jun-2015

1.760 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: 3 poo abstraccion modula..herencia

Ing Pedro Alvarez Sanchez 1

Programación Orientada a Objetos

ING PEDRO ALVAREZ

Page 2: 3 poo abstraccion modula..herencia

Ing Pedro Alvarez Sanchez 2

Características de los Objetos

Las Características de los Objetos: Abstracción Modularidad Ocultamiento de la información Encapsulación Polimorfismo Herencia Acoplamiento y Cohesión

Donde cualquier Lenguaje OO debe implementar estos conceptos

Page 3: 3 poo abstraccion modula..herencia

Ing Pedro Alvarez Sanchez 3

Abstracción

Denota las características esenciales de un objeto que lo distingue de los demás

Visión simplificada de cierta parte de la realidad.

La elección de los detalles esenciales es subjetiva.

La clave de la POO esta en abstraer los métodos y los datos comunes a un conjunto de objetos y almacenarlos en una clase

Hay que centrarse en lo que es y lo que hace un objeto, antes de decidir como debería ser implementado

Page 4: 3 poo abstraccion modula..herencia

Ing Pedro Alvarez Sanchez 4

Modularidad

Fragmentar un programa en componentes individuales reduce su complejidad en algún grado.

Propiedad que tiene un sistema que ha sido descompuesto en un conjunto de módulos coherentes y débilmente acoplados.

Page 5: 3 poo abstraccion modula..herencia

Ing Pedro Alvarez Sanchez 5

Características de la modularidad

Encapsulamiento Ocultamiento de la

información

Page 6: 3 poo abstraccion modula..herencia

Ing Pedro Alvarez Sanchez 6

Encapsulación y ocultamiento Consiste en separar el aspecto externo del

objeto, al cual pueden acceder otros objetos, del aspecto interno del mismo, que es inaccesible para los demás.

Permite tratar a un objeto como una caja negra.

Permite que se modifique la implementación interna de un objeto sin afectar a los clientes que lo utilizan.

Page 7: 3 poo abstraccion modula..herencia

Ing Pedro Alvarez Sanchez 7

Polimorfismo

Polimorfismo: “ Un solo mensaje puede producir respuestas diferentes dependiendo del objeto que lo reciba (lo cual se define en la ejecución del sistema)”

Ligadura temprana: enlaces entre elementos de memoria (datos o funciones) en tiempo de compilación.

Ligadura tardía: enlaces entre elementos de memoria (datos o funciones) en tiempo de ejecución.

Page 8: 3 poo abstraccion modula..herencia

Ing Pedro Alvarez Sanchez 8

Page 9: 3 poo abstraccion modula..herencia

Ing Pedro Alvarez Sanchez 9

Relaciones

Las clases no existen aisladas sino que tienen dependencias entre ellas.

Los distintos tipos de relaciones son:Asociación.Agregación y Composición.Herencia.Relaciones dinámicas: Mensajes.

Page 10: 3 poo abstraccion modula..herencia

Ing Pedro Alvarez Sanchez 10

Relación de asociación

Representa la dependencia más general entre clases.

Representa una dependencia semántica entre dos clases.

Por defecto es bidireccional, aunque se puede restringir a una sola dirección.

Tiene multiplicidad. Es la propiedad que expresa el número de instancias de cada clase que participa en la relación:

(0..1, 1, 0..*, 1..*)

Page 11: 3 poo abstraccion modula..herencia

Ing Pedro Alvarez Sanchez 11

Ejemplo

Page 12: 3 poo abstraccion modula..herencia
Page 13: 3 poo abstraccion modula..herencia

Ing Pedro Alvarez Sanchez 13

Relación de agregación

Es una forma particular de asociación que expresa un acoplamiento mas fuerte entre objetos.

Indica que los objetos de una clase contienen o están formados por objetos de otras clases.

Por tanto, un objeto que representa el ‘todo’, está asociado con un conjunto de objetos que representan sus componentes.

Page 14: 3 poo abstraccion modula..herencia

Ing Pedro Alvarez Sanchez 14

Relación de composición

Se trata de una relación de agregación fuerte.

Un objeto no puede existir si no existen los objetos de los que está compuesto.Composición

Agregado de objetos para formar otros más complejos

Page 15: 3 poo abstraccion modula..herencia

Ing Pedro Alvarez Sanchez 15

Page 16: 3 poo abstraccion modula..herencia

Ing Pedro Alvarez Sanchez 16

Page 17: 3 poo abstraccion modula..herencia

Ing Pedro Alvarez Sanchez 17

Relación de herencia

Las clases se disponen en una jerarquía, donde una clase hereda todos los atributos y operaciones de las clases superiores en la jerarquía.

Una clase puede tener sus propios atributos y operaciones adicionales a lo heredado.

Una clase puede modificar los atributos y operaciones heredadas.

Page 18: 3 poo abstraccion modula..herencia

Ing Pedro Alvarez Sanchez 18

Relación de herencia

Las clases por encima en la jerarquía a una clase dada, se denominan superclases o clase base.

Las clases por debajo en la jerarquía a una clase dada, se denominan subclases.

Una clase puede ser superclase y subclase al mismo tiempo.

Tipos de herencia: Simple. Múltiple (no soportada por todos los lenguajes O.O.)

ClaseBase

ClaseDerivada

ClaseBase1 ClaseBase2

ClaseDerivada

Herencia Simple Herencia Múltiple

Page 19: 3 poo abstraccion modula..herencia

Ing Pedro Alvarez Sanchez 19

Page 20: 3 poo abstraccion modula..herencia

Ing Pedro Alvarez Sanchez 20

Jerarquías entre clases:

Herencia:Clase abstracta: clase que se introduce

para construir otras clases aprovechando la programación común a ellas o para la formación de “conjuntos polimórficos”.

Las clases abstractas no tienen instancias, tienen definidos mensajes a los que pueden responder más no cómo responder exactamente.

Anulación/Sustitución/sobre-escritura: si una propiedad definida en una clase se redefine en una subclase.

Figura

dibujar()

Triangulo

dibujar()

Cuadrado

dibujar()

Circulo

dibujar()

Page 21: 3 poo abstraccion modula..herencia

Ing Pedro Alvarez Sanchez 21

Sobrecarga

Sobrecarga: La idea de la sobrecarga es usarla tal como lo

hacemos con nuestro lenguaje natural, como por ejemplo las expresiones tomar agua, tomar del pelo, tomar medidas, tomar por hecho, tomar el poder, …

En software métodos con el mismo nombre y diferente signatura.(tipos y/o número de parámetros de entrada)

Ejmplo: int sumar(int, int), int sumar(int, int, int) y sumar(float, float)