Está en la página 1de 27

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
Evolución de los Lenguajes de
A
B
Programación A
B
S S
T
R Lenguajes Direcciones de T
Instrucciones R
A Máquina / Memoria,
C Máquina A
C Ensamblador Registros C
I C
Ó Variables de
Expresiones, FORTRAN
I
N Tipos Predef., Ó
Funciones
O Arrays N
P
E Definición de D
Estr. Control, PASCAL
R Tipos, E
A Subprogramas
C Punteros
D
I
O Ocultamiento Tipos A
MODULA-2 T
N Información, Abstractos de
A ADA O
L Interfaces Datos S

Métodos, Lenguajes Clases,


Mensajes Orientados a Objetos
Objetos
Departamento de Lenguajes y
Ciencias de la Computación 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)
(5,2.5)
FIGURA (2,2)
(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 Atributos = Estado Propio
R x,y;
Clase
trasladar(a,b) Métodos = Comportamiento Común
distancia(pto)

(Punto)
x= -1
y= 4
Objetos (Punto)
x= 2
y= 3 (Punto)
x= 5
y= 7

Departamento de Lenguajes y
Ciencias de la Computación 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
Estado R x,y;

MÉTODOS
cambiar_x(E R nx)
INICIO
x = nx; // x == éste.x
acceso al FIN

argumento cambiar_y(E R ny)


implícito 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
acceso total a otros objetos
FIN Punto;
de la misma clase
Departamento de Lenguajes y
Ciencias de la Computación 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) (Punto)
x=15
x=
P
y=32
y=

Departamento de Lenguajes y
Ciencias de la Computación 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) trasladar(a,b)
distancia(pto) 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 Polígono Elipse
 importar módulos
• Distintos tipos de herencia:
 simple / múltiple
Pentágono Cuadrilátero Círculo
 estricta
 selectiva
 de implementación/de interfaz
Rectángulo Rombo

Departamento de Lenguajes y
Ciencias de la Computación Programación Orientada a Objetos 23
Herencia
Padres / Ascendientes
• Una clase heredera proporciona los
Punto 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.
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.

Suma de distancias entre


Polígono puntos consecutivos Cuadrado

R lado;

R perímetro( ); R perimetro( );
Resultado = 4*lado

Departamento de Lenguajes y
Ciencias de la Computación 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

También podría gustarte