Está en la página 1de 27

Programacin Orientada a Objetos

Departamento de Lenguajes y Ciencias de la Computacin E.T.S.I. Informtica Universidad de Mlaga

Contenido
Introduccin histrica Conceptos bsicos de la Programacin O. O. Conceptos avanzados de la Programacin O.O.

Programacin Modular. Programacin Orientada a Objetos

Introduccin Histrica

Programacin Modular. Programacin Orientada a Objetos

Evolucin de los Lenguajes de Programacin


A B S T R A C C I N O P E R A C I O N A L

Instrucciones Mquina Expresiones, Funciones Estr. Control, Subprogramas Ocultamiento Informacin, Interfaces Mtodos, Mensajes

Lenguajes Mquina / Ensamblador FORTRAN

Direcciones de Memoria, Registros Variables de Tipos Predef., Arrays Definicin de Tipos, Punteros Tipos Abstractos de Datos Clases, Objetos

A B S T R A C C I N D E D A T O S

PASCAL

MODULA-2 ADA Lenguajes Orientados a Objetos

Programacin Modular. Programacin Orientada a Objetos

Evolucin 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)

Programacin Modular. Programacin Orientada a Objetos

Conceptos bsicos de la programacin orientada a objetos

Programacin Modular. Programacin Orientada a Objetos

Clases y Objetos
CLASE = SUBPROGRAMAS + VARIABLES
! Criterio de Modularizacin ! Estado + Comportamiento ! Entidad esttica ! Clase Tipo ! ! ! !

OBJETO = Instancia de una CLASE

Entidad dinmica Cada objeto tiene su propio estado Objetos de una misma clase comparten un comportamiento Objeto Variable

Programacin Modular. Programacin Orientada a Objetos

VEHCULO ANIMAL

PUNTO (1,3) FIGURA (2,2) (2,1)


Programacin Modular. Programacin Orientada a Objetos 8

(5,2.5)

Qu es una Clase?
Caja negra que oculta en su implementacin:
Atributos: variables que codifican el estado de una instancia de la clase (objeto) Mtodos: subprogramas que describen el comportamiento de un objeto de la clase

Una clase es semejante a un tipo:


Atributos: estructura de datos Mtodos: operaciones sobre el tipo
Programacin Modular. Programacin 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 mtodos (comportamiento comn)

Programacin Modular. Programacin Orientada a Objetos

10

Implementador frente a Usuario


Las clases son cajas negras con
Interfaz (uso) Implementacin (funcionamiento)

El implementador se encarga de definir el interfaz y de desarrollar la implementacin El usuario emplear los objetos de la clase exclusivamente a travs del interfaz
Programacin Modular. Programacin Orientada a Objetos 11

Un ejemplo: la clase Punto


Punto Atributos = Estado Propio Mtodos = Comportamiento Comn

Clase

R x,y; trasladar(a,b) distancia(pto)

Objetos

(Punto) x= 2 y= 3

(Punto) x= -1 y= 4 (Punto) x= 5 y= 7
12

Programacin Modular. Programacin Orientada a Objetos

Definicin de la clase Punto


INTERFAZ CLASE Punto MTODOS cambiar_x(E R nx); Comportamiento cambiar_y(E R ny); trasladar(E R dx,dy); R distancia(E Punto p); FIN Punto;

Programacin Modular. Programacin Orientada a Objetos

13

Definicin de Mtodos
El objeto afectado no aparece como argumento del mtodo:
trasladar(E R dx,dy);

En realidad, el objeto afectado es un argumento de entrada/salida implcito llamado ste:


ALGORITMO trasladar(ES Punto ste, E R dx,dy);
Programacin Modular. Programacin Orientada a Objetos 14

Implementacin de la clase Punto (1)


IMPLEMENTACIN CLASE Punto ATRIBUTOS R x,y; Estado MTODOS cambiar_x(E R nx) INICIO x = nx; // x == ste.x FIN cambiar_y(E R ny) INICIO y = ny; // y == ste.y FIN
15

acceso al argumento implcito

Programacin Modular. Programacin Orientada a Objetos

Implementacin de la clase Punto (2)


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 16 Programacin Modular. Programacin Orientada a Objetos

Uso de 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 slo puede manipular un Punto a invocando a los mtodos del interfaz de la clase Punto (comportamiento)
Programacin Modular. Programacin Orientada a Objetos 17

Invocacin de Mtodos
Los mtodos 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=1 y=3

Programacin Modular. Programacin Orientada a Objetos

18

Relacin de Composicin
la composicin permite expresar a una relacin 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()

Programacin Modular. Programacin Orientada a Objetos

19

Implementacin de la Composicin (1)


INTERFAZ CLASE Segmento MTODOS trasladar(E R dx,dy); R longitud(); FIN Segmento;

Programacin Modular. Programacin Orientada a Objetos

20

Implementacin de la Composicin (2)


IMPLEMENTACIN CLASE Segmento ATRIBUTOS Punto Orig, Dest MTODOS trasladar(E R dx,dy) INICIO Orig.trasladar(dx,dy) Ext.trasladar(dx,dy) FIN R longitud(); INICIO DEVOLVER Orig.distancia(Ext) FIN FIN Segmento;
Programacin Modular. Programacin Orientada a Objetos 21

Conceptos avanzados de la programacin orientada a objetos

Programacin Modular. Programacin Orientada a Objetos

22

Herencia
Posibilidad de reutilizar cdigo Algo ms que:
incluir ficheros, o importar mdulos
FiguraCerrada

Polgono

Elipse

Distintos tipos de herencia:


simple / mltiple Pentgono estricta selectiva de implementacin/de interfaz
Cuadriltero Crculo

Rectngulo
Programacin Modular. Programacin Orientada a Objetos

Rombo
23

Herencia
Padres / Ascendientes

Una clase heredera proporciona los atributos y mtodos de la clase heredada, Punto y puede aadir otros nuevos. La clase heredera puede modificar el comportamiento heredado (por ejemplo, redefiniendo algn mtodo heredado) . Partcula La herencia es transitiva. Los objetos de una clase que hereda de Hijos / Descendientes otra pueden verse como objetos de esta ltima.
Programacin Modular. Programacin Orientada a Objetos 24

Herencia Mltiple
Existen lenguajes con herencia mltiple, lo que permite que una clase reutilice la funcionalidad ofrecida por varias clases.
Pensionista TrabajadorActivo

MedioPensionista

Programacin Modular. Programacin Orientada a Objetos

25

Herencia y Redefinicin
En la herencia las clases herederas pueden heredar un mtodo o servicio, y luego redefinirlo, modificando su implementacin.
Suma de distancias entre puntos consecutivos

Polgono

Cuadrado R lado;

R permetro( );

Resultado = 4*lado

R perimetro( );

Programacin Modular. Programacin Orientada a Objetos

26

Polimorfismo sobre los datos


Una variable puede referirse a objetos de clases distintas de la que se ha declarado. La restriccin dada por la herencia, permite construir estructuras con elementos de naturaleza distinta, pero con un comportamiento comn:

Programacin Modular. Programacin Orientada a Objetos

27

También podría gustarte