Programación Orientada a Objetos - Departamento de Lenguajes y

Anuncio
Programación Orientada a 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/
Contenido
• Introducción histórica
• Conceptos básicos de la Programación O. O.
• Conceptos avanzados de la Programación O.O.
Departamento de Lenguajes y
Ciencias de la Computación
Programación Orientada a Objetos
2
Introducción Histórica
Departamento de Lenguajes y
Ciencias de la Computación
Programación Orientada a Objetos
3
A
B
S
T
R
A
C
C
I
Ó
N
O
P
E
R
A
C
I
O
N
A
L
Evolución de los Lenguajes de
Programación
Instrucciones
Máquina
Expresiones,
Funciones
Estr. Control,
Subprogramas
Ocultamiento
Información,
Interfaces
Métodos,
Mensajes
Departamento de Lenguajes y
Ciencias de la Computación
Lenguajes
Máquina /
Ensamblador
Direcciones de
Memoria,
Registros
FORTRAN
Variables de
Tipos Predef.,
Arrays
PASCAL
Definición de
Tipos,
Punteros
MODULA-2
ADA
Lenguajes
Orientados a
Objetos
Tipos
Abstractos de
Datos
A
B
S
T
R
A
C
C
I
Ó
N
D
E
D
A
T
O
S
Clases,
Objetos
Programación Orientada a Objetos
4
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)
Departamento de Lenguajes y
Ciencias de la Computación
Programación Orientada a Objetos
5
Conceptos Básicos de la
Programación O.O.
Departamento de Lenguajes y
Ciencias de la Computación
Programación Orientada a Objetos
6
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
Departamento de Lenguajes y
Ciencias de la Computación
Programación Orientada a Objetos
7
VEHÍCULO
ANIMAL
PUNTO
(1,3)
FIGURA
(2,2)
(5,2.5)
(2,1)
Departamento de Lenguajes y
Ciencias de la Computación
Programación Orientada a Objetos
8
¿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
Departamento de Lenguajes y
Ciencias de la Computación
Programación Orientada a Objetos
9
¿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)
Departamento de Lenguajes y
Ciencias de la Computación
Programación Orientada a Objetos
10
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
Departamento de Lenguajes y
Ciencias de la Computación
Programación Orientada a Objetos
11
Un ejemplo: la clase Punto
Punto
R x,y;
Clase
Objetos
Atributos = Estado Propio
trasladar(a,b)
distancia(pto)
(Punto)
x= 2
y= 3
Departamento de Lenguajes y
Ciencias de la Computación
Métodos = Comportamiento Común
(Punto)
x= -1
y= 4
(Punto)
x= 5
y= 7
Programación Orientada a Objetos
12
Definiendo la clase Punto
INTERFAZ CLASE Punto
MÉTODOS
cambiar_x(E R nx);
Comportamiento
cambiar_y(E R ny);
trasladar(E R dx,dy);
R distancia(E Punto p);
FIN Punto;
Departamento de Lenguajes y
Ciencias de la Computación
Programación Orientada a Objetos
13
Definición de Métodos
• 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);
Departamento de Lenguajes y
Ciencias de la Computación
Programación Orientada a Objetos
14
Implementando la clase Punto (I)
IMPLEMENTACIÓN CLASE Punto
ATRIBUTOS
R x,y;
Estado
acceso al
argumento
implícito
MÉTODOS
cambiar_x(E R nx)
INICIO
x = nx;
// x == éste.x
FIN
cambiar_y(E R ny)
INICIO
y = ny;
// y == éste.y
FIN
Departamento de Lenguajes y
Ciencias de la Computación
Programación Orientada a Objetos
15
Implementando la clase Punto (II)
trasladar(E R dx,dy)
INICIO
x = x+dx;
y = y+dy;
FIN
R distancia(E Punto p)
INICIO
DEVOLVER sqrt(pow(x-p.x,2) +
pow(y-p.y,2))
FIN
FIN Punto;
Departamento de Lenguajes y
Ciencias de la Computación
acceso total a otros objetos
de la misma clase
Programación Orientada a Objetos
16
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;
Error
• El usuario sólo puede manipular un Punto
invocando a los métodos del interfaz de la
clase Punto (comportamiento)
Departamento de Lenguajes y
Ciencias de la Computación
Programación Orientada a Objetos
17
Invocación de Métodos
• 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)
Departamento de Lenguajes y
Ciencias de la Computación
(Punto)
x=15
x=
y=32
y=
P
Programación Orientada a Objetos
18
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
Segmento
R x,y;
Punto Orig, Ext;
trasladar(a,b)
distancia(pto)
trasladar(a,b)
longitud()
Departamento de Lenguajes y
Ciencias de la Computación
Programación Orientada a Objetos
19
Implementando la Composición (I)
INTERFAZ CLASE Segmento
MÉTODOS
trasladar(E R dx,dy);
R longitud();
FIN Segmento;
Departamento de Lenguajes y
Ciencias de la Computación
Programación Orientada a Objetos
20
Implementando la Composición (II)
IMPLEMENTACIÓN CLASE Segmento
ATRIBUTOS
Punto Orig, Dest;
MÉTODOS
trasladar(E R dx,dy)
INICIO
Orig.trasladar(dx,dy);
Dest.trasladar(dx,dy);
FIN
R longitud();
INICIO
DEVOLVER Orig.distancia(Dest);
FIN
FIN Segmento;
Departamento de Lenguajes y
Ciencias de la Computación
Programación Orientada a Objetos
21
Conceptos Avanzados de la
Programación O.O.
Departamento de Lenguajes y
Ciencias de la Computación
Programación Orientada a Objetos
22
Herencia
FiguraCerrada
• Posibilidad de reutilizar código
• Algo más que:
incluir ficheros, o
importar módulos
Elipse
Polígono
• Distintos tipos de herencia:
simple / múltiple
Pentágono
estricta
selectiva
de implementación/de interfaz
Cuadrilátero
Rectángulo
Departamento de Lenguajes y
Ciencias de la Computación
Círculo
Rombo
Programación Orientada a Objetos
23
Herencia
Padres / Ascendientes
• Una clase heredera proporciona los
atributos y métodos de la clase heredada,
Punto
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.
Partícula
• Los objetos de una clase que hereda de
otra pueden verse como objetos de esta
Hijos / Descendientes última.
Departamento de Lenguajes y
Ciencias de la Computación
Programación Orientada a Objetos
24
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
Departamento de Lenguajes y
Ciencias de la Computación
Programación Orientada a Objetos
25
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
Suma de distancias entre
puntos consecutivos
Cuadrado
R lado;
R perímetro( );
Departamento de Lenguajes y
Ciencias de la Computación
Resultado = 4*lado
R perimetro( );
Programación Orientada a Objetos
26
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:
Departamento de Lenguajes y
Ciencias de la Computación
Programación Orientada a Objetos
27
Descargar