Transp objetos

27
Departamento de Lenguajes y Ciencias de la Computación E.T.S.I. Telecomunicación Universidad de Málaga http://www.lcc.uma.es/ Programación Orientada a Objetos

Transcript of Transp objetos

Page 1: Transp objetos

Departamento de Lenguajes y

Ciencias de la Computación

E.T.S.I. Telecomunicación

Universidad de Málaga

http://www.lcc.uma.es/

Programación Orientada a Objetos

Page 2: Transp objetos

Departamento de Lenguajes y Ciencias de la Computación Programación Orientada a Objetos 2

Contenido

• Introducción histórica

• Conceptos básicos de la Programación O. O.

• Conceptos avanzados de la Programación O.O.

Page 3: Transp objetos

Departamento de Lenguajes y Ciencias de la Computación Programación Orientada a Objetos 3

Introducción Histórica

Page 4: Transp objetos

Departamento de Lenguajes y Ciencias de la Computación Programación Orientada a Objetos 4

Evolución de los Lenguajes de ProgramaciónA

BSTRACCIÓN

OPERACIONAL

ABSTRACCIÓN

DE

DATOS

LenguajesMáquina /

Ensamblador

InstruccionesMáquina

Direcciones deMemoria,Registros

FORTRANExpresiones,Funciones

Variables deTipos Predef.,

Arrays

PASCALEstr. Control,Subprogramas

Definición deTipos,

Punteros

MODULA-2ADA

OcultamientoInformación,

Interfaces

TiposAbstractos de

Datos

LenguajesOrientados a

Objetos

Clases,Objetos

Métodos,Mensajes

Page 5: Transp objetos

Departamento de Lenguajes y Ciencias de la Computación Programación Orientada a Objetos 5

Evolución de los Lenguajes Orientados a Objetos

• Simula (Nygaard, 60s)

• Smalltalk (Xerox PARC, 70s)

• Eiffel (Meyer, 80s)

• C++ (Stroustrup, 80s)

• Java (Sun Microsystems, 90s)

• C# (Microsoft, 00s)

Page 6: Transp objetos

Departamento de Lenguajes y Ciencias de la Computación Programación Orientada a Objetos 6

Conceptos Básicos de la

Programación O.O.

Page 7: Transp objetos

Departamento de Lenguajes y Ciencias de la Computación Programación Orientada a Objetos 7

Clases y Objetos

• CLASE = SUBPROGRAMAS + VARIABLES�Criterio de Modularización

�Estado + Comportamiento

�Entidad estática

�Clase ≈ Tipo

• OBJETO = Instancia de una CLASE� Entidad dinámica

� Cada objeto tiene su propio estado

� Objetos de una misma clase comparten un comportamiento

� Objeto ≈ Variable

Page 8: Transp objetos

Departamento de Lenguajes y Ciencias de la Computación Programación Orientada a Objetos 8

(1,3)

(2,2)

(2,1)

(5,2.5)

ANIMAL

VEHÍCULO

FIGURA

PUNTO

Page 9: Transp objetos

Departamento de Lenguajes y Ciencias de la Computación Programación Orientada a Objetos 9

¿Qué es una Clase?

Caja negra que oculta en su implementación:

�Atributos: variables que codifican el estado de una instancia de la clase (objeto)

�Métodos: subprogramas que describen el comportamiento de un objeto de la clase

Una clase es semejante a un tipo:�Atributos: estructura de datos

�Métodos: operaciones sobre el tipo

Page 10: Transp objetos

Departamento de Lenguajes y Ciencias de la Computación Programación Orientada a Objetos 10

¿Qué es un Objeto?

Instancia de una clase:

�Cada objeto de una clase tiene su propia copia de los atributos (estado propio)

�Todos los objetos de una clase comparten los mismos métodos (comportamiento común)

Page 11: Transp objetos

Departamento de Lenguajes y Ciencias de la Computación Programación Orientada a Objetos 11

Implementador vs. Usuario

• Las clases son cajas negras con�Interfaz (uso)

�Implementación (funcionamiento)

• El implementador se encarga de definir el interfaz y de desarrollar la implementación

• El usuario empleará los objetos de la clase exclusivamente a través del interfaz

Page 12: Transp objetos

Departamento de Lenguajes y Ciencias de la Computación Programación Orientada a Objetos 12

Un ejemplo: la clase Punto

trasladar(a,b)distancia(pto)

Atributos = Estado Propio

Métodos = Comportamiento Común

Punto

R x,y;

(Punto)x= 2y= 3 (Punto)

x= 5y= 7

(Punto)x= -1y= 4

Clase

Objetos

Page 13: Transp objetos

Departamento de Lenguajes y Ciencias de la Computación Programación Orientada a Objetos 13

INTERFAZ CLASE PuntoMÉTODOS

cambiar_x(E R nx); cambiar_y(E R ny);trasladar(E R dx,dy);R distancia(E Punto p);

FIN Punto;

Definiendo la clase Punto

Comportamiento

Page 14: Transp objetos

Departamento de Lenguajes y Ciencias de la Computación Programación Orientada a Objetos 14

• El objeto afectado no aparece como argumento del método:

trasladar(E R dx,dy);

• En realidad, el objeto afectado es un argumento de entrada/salida implícito llamado éste:

ALGORITMO trasladar(ES Punto éste,E R dx,dy);

Definición de Métodos

Page 15: Transp objetos

Departamento de Lenguajes y Ciencias de la Computación Programación Orientada a Objetos 15

IMPLEMENTACIÓN CLASE PuntoATRIBUTOSR x,y;

MÉTODOScambiar_x(E R nx)INICIOx = nx;

FIN

cambiar_y(E R ny)INICIOy = ny;

FIN

Implementando la clase Punto (I)

acceso al

argumento

implícito

// x == éste.x

// y == éste.y

Estado

Page 16: Transp objetos

Departamento de Lenguajes y Ciencias de la Computación Programación Orientada a Objetos 16

trasladar(E R dx,dy)INICIOx = x+dx; y = y+dy;

FIN

R distancia(E Punto p)INICIODEVOLVER sqrt(pow(x-p.x,2) +

pow(y-p.y,2))FIN

FIN Punto;

Implementando la clase Punto (II)

acceso total a otros objetos

de la misma clase

Page 17: Transp objetos

Departamento de Lenguajes y Ciencias de la Computación Programación Orientada a Objetos 17

Usando la clase Punto• El usuario declara objetos como cualquier otra variable:

Punto p1, p2;

• Como usuario, no se puede acceder a la parte privada de los objetos:

p1.X = 2;

• El usuario sólo puede manipular un Puntoinvocando a los métodos del interfaz de la clase Punto (comportamiento)

Error

Page 18: Transp objetos

Departamento de Lenguajes y Ciencias de la Computación Programación Orientada a Objetos 18

(Punto)x=1y=3

P

• Los métodos se invocan mediante paso de mensajes:

P.trasladar(4,-1) = trasladar(P,4,-1)

• El objeto P es el receptor del mensaje:

trasladar(4,-1) (Punto)x= 5y= 2

Invocación de Métodos

Page 19: Transp objetos

Departamento de Lenguajes y Ciencias de la Computación Programación Orientada a Objetos 19

Relación de Composición

• la composición permite expresar una relación de tipo “está compuesto por”

• Por ejemplo, un segmento está compuesto por dos puntos: origen y extremo

Punto

R x,y;

trasladar(a,b)distancia(pto)

Segmento

Punto Orig, Ext;

trasladar(a,b)longitud()

Page 20: Transp objetos

Departamento de Lenguajes y Ciencias de la Computación Programación Orientada a Objetos 20

Implementando la Composición (I)

INTERFAZ CLASE SegmentoMÉTODOS

trasladar(E R dx,dy);R longitud();

FIN Segmento;

Page 21: Transp objetos

Departamento de Lenguajes y Ciencias de la Computación Programación Orientada a Objetos 21

Implementando la Composición (II)IMPLEMENTACIÓN CLASE SegmentoATRIBUTOSPunto Orig, Dest;

MÉTODOStrasladar(E R dx,dy)INICIOOrig.trasladar(dx,dy);Dest.trasladar(dx,dy);

FINR longitud();INICIODEVOLVER Orig.distancia(Dest);

FINFIN Segmento;

Page 22: Transp objetos

Departamento de Lenguajes y Ciencias de la Computación Programación Orientada a Objetos 22

Conceptos Avanzados de la

Programación O.O.

Page 23: Transp objetos

Departamento de Lenguajes y Ciencias de la Computación Programación Orientada a Objetos 23

Herencia

• Posibilidad de reutilizar código

• Algo más que:� incluir ficheros, o

� importar módulos

• Distintos tipos de herencia:�simple / múltiple

�estricta

�selectiva

�de implementación/de interfaz

FiguraCerrada

Polígono Elipse

CírculoCuadriláteroPentágono

RomboRectángulo

Page 24: Transp objetos

Departamento de Lenguajes y Ciencias de la Computación Programación Orientada a Objetos 24

Herencia

Punto

Partícula

Padres / Ascendientes

Hijos / Descendientes

• Una clase heredera proporciona los atributos y métodos de la clase heredada, y puede añadir otros nuevos.

• La clase heredera puede modificar el comportamiento heredado (por ejemplo, redefiniendo algún método heredado) .

• La herencia es transitiva.

• Los objetos de una clase que hereda de otra pueden verse como objetos de esta última.

Page 25: Transp objetos

Departamento de Lenguajes y Ciencias de la Computación Programación Orientada a Objetos 25

Herencia Múltiple

• Existen lenguajes con herencia múltiple, lo que permite que una clase reutilice la funcionalidad ofrecida por varias clases.

Pensionista TrabajadorActivo

MedioPensionista

Page 26: Transp objetos

Departamento de Lenguajes y Ciencias de la Computación Programación Orientada a Objetos 26

Herencia y Redefinición

• En la herencia las clases herederas pueden heredar un método o servicio, y luego redefinirlo, modificando su implementación.

Polígono

R perímetro( );

Cuadrado

R perimetro( );

R lado;

Suma de distancias entre puntos consecutivos

Resultado = 4*lado

Page 27: Transp objetos

Departamento de Lenguajes y Ciencias de la Computación Programación Orientada a Objetos 27

Polimorfismo sobre los datos

• Una variable puede referirse a objetos de clases distintas de la que se ha declarado.

• La restricción dada por la herencia, permite construir estructuras con elementos de naturaleza distinta, pero con un comportamiento común: