Está en la página 1de 21

Programacion´

orientada a objetos

Dra. Elisa Schaeffer

elisa@yalma.fime.uanl.mx

12 de febrero de 2007

MECAS512 Estructura de Datos en C++

PROGRAMACION´

ORIENTADA A OBJETOS

un paradigma de programacion´ paradigma de programacion´

programa = un conjunto de objetos que colaboran entre ellos = un conjunto de objetos que colaboran entre ellos

la meta de la colaboracion´= un conjunto de objetos que colaboran entre ellos entre objetos es la realizacion´ las tareas

entre objetos es la realizacion´

las tareas indicadas del programa

de

OBJETO

estado + comportamiento + identidad

Los objetos de un programa OO corresponden a los objetos del mundo real y/o a objetos internos del programa.

ESTADO DE UN OBJETO

Los datos del objeto

los atributos (es decir, las variables definidas) y sus valores asignadas en cada momento atributos (es decir, las variables definidas) y sus valores asignadas en cada momento

por lo general, la alteracion´ esta´ controladodefinidas) y sus valores asignadas en cada momento de los valores de los atributos en P

de los valores de los atributos

en POO pura: visibilidad de los datos esta´ limitada al objeto mismo OO pura: visibilidad de los datos esta´ limitada al objeto mismo

algo parecido al struct del lenguaje C struct del lenguaje C

en la mayor´ıa de los lenguajes OOP, objetos pueden “compartir” datosen P OO pura: visibilidad de los datos esta´ limitada al objeto mismo algo parecido al

COMPORTAMIENTO DE UN OBJETO

Los metodos´

del objeto: lo que puede hacer el objeto

elementos del “funcionamiento” del programaLos metodos´ del objeto: lo que puede hacer el objeto subrutinas/funciones/procedimientos, es decir, algoritmos la

subrutinas/funciones/procedimientos, es decir, algoritmos

la “cadena a acceso” al objectosubrutinas/funciones/procedimientos, es decir, algoritmos facilita la comunicacion/interacci´ on´ de los objetos

facilita la comunicacion/interacci´es decir, algoritmos la “cadena a acceso” al objecto on´ de los objetos pueden producir cambios

on´

de los objetos

pueden producir cambios en el estado del objeto cambios en el estado del objeto

el ejecucion´objetos pueden producir cambios en el estado del objeto de un metodo´ se desencadena tras la

de un metodo´

se desencadena tras la recepcion´

de un evento/mensaje/llamada (de otro objeto)

en POO pura: no hay llamadas a subrutinas, solamente intercambio de mensajes OO pura: no hay llamadas a subrutinas, solamente intercambio de mensajes

IDENTIDAD DE UN OBJECTO

Cada objecto es unico.´

aunque dos objetos tuvieron los mismos datos y los mismosI DENTIDAD DE UN OBJECTO Cada objecto es unico.´ metodos,´ son dos objetos distintos se puede

metodos,´

son dos objetos distintos

se puede diferenciar entre objetos y as´ı guardar una referencia a un cierto objeto referencia a un cierto objeto

normalmente implementado con n´umeros de identificacion´objetos y as´ı guardar una referencia a un cierto objeto corrientes asignados a la hora de

corrientes asignados a la hora de “creacion”´

del objeto

CONSEQUENCIAS

Los programas OO suelen ser mas´

reutilizar que programas escritos en un lenguaje del paradigma

faciles´

de escribir, mantener y

procedural (como C, Pascal, Fortran o Basic).

Un objeto se trata como una entidad indivisible.

INTERFACES GRAFICOS´

La popularidad de POO de hoy es en gran parte un resultado de su

uso facil´

en las cuales los diferentes elementos de la interfaz son objetos

que interactuen por eventos.

La POO tambien´ por eventos.”

en la implementacion´

de interfaces graficas´

de usuario,

se conoce por el nombre “programacion´

dirigida

CLASES DE OBJETOS

Objetos que tienen definidos los mismos atributos y los mismos

metodos´

Al escribir una clase, el programador define un “modelo” de objeto que pueda manejar y guardar ciertos datos y que ofrece cierta funcionalidad (interna y/o externa) por el medio de los metodos.´

pertenecen al misma clase de objetos.

En una clase, se combina el almacenaje de los datos y su

manejamiento — hay que evitar casos en donde unos objetos sirven puramente como contenedoras de datos mientras otros

cuentan con los metodos´

de procesarlos.

INSTANCIACION´

Cada objecto es una instancia de una cierta clase: al crear el

objeto se lee las definiciones de los atributos y los metodos´

clase y forma el objeto en la memoria de la computadora a partir de ellas.

de la

¡No confundirse entre los conceptos de objeto, clase y instancia!

¿EJEMPLOS?

Intentamos identificar juntos las clases, los objetos y las instancias en diferentes contextos:

las transacciones bancariaslos objetos y las instancias en diferentes contextos: una tienda en-linea el control de una linea

una tienda en-lineaen diferentes contextos: las transacciones bancarias el control de una linea de produccion´ un procesador de

el control de una linea de produccion´instancias en diferentes contextos: las transacciones bancarias una tienda en-linea un procesador de texto ¿Otras ideas?

un procesador de textocontextos: las transacciones bancarias una tienda en-linea el control de una linea de produccion´ ¿Otras ideas?

¿Otras ideas?

´

ORDEN DE APARENCIA DE LOS LENGUAJES

1. Simula 67 por Ole-Johan Dahl y Kristen Nygaard

2. Smalltalk desarrollado en Simula en Xerox PARC (creacion´

modificacion´

de los objetos en marcha)

3. C++, una extension´

del lenguaje C

y

4. Versiones POO de lenguajes como Ada, BASIC, Lisp y Pascal

5. Eiffel

6. Java (la mayor´ıa de navegadores inclyuen su maquina´

virtual)

DISENO˜

Y IMPLEMENTACION´

EN POO

los patrones de diseno˜ patrones de diseno˜

(ingl. design patterns)

el diseno˜ diseno˜

por contrato (ingl. interface)

los lenguajes de modelado (por ejemplo U ML ) lenguajes de modelado (por ejemplo UML)

implementaciones modulares realizadas en paralelo

mantenimento, modificacion,´

extension´

y reuso mas´

facil´

EVENTOS

Ademas´

comunicar con otros objetos del programa), t´ıpicamente existen

eventos que permiten que el programa comunique con el sistema (o sea, el sistema operativo de la computadora).

Varios objetos pueden escuchar para ciertos tipos de eventos

para la recepcion´

de los eventos creados por los objetos mismos (para

de los cuales se registraron con anticipacion.´

¿EVENTO VS. MENSAJE?

La diferencia entre un evento y un mensaje es que un mensaje esta´ dirigida a un cierto objeto.

Los dos pueden contener atributos. Esto implica que ¡son

objectos tambien´

los eventos y mensajes mismos!

ENCAPSULAMIENTO

La ocultacion´

de la informacion´

los objetos estan´E NCAPSULAMIENTO La ocultacion´ de la informacion´ modulos´ “aislados”, protegidos contra su modificacion´ “no

modulos´

“aislados”, protegidos contra su

modificacion´

“no autoridaza”

por su clase, un objeto expone una interfaz para especificar las posibilidades de interaccion´ interfaz para especificar las posibilidades de interaccion´

t´ıpicamente los propios metodos´para especificar las posibilidades de interaccion´ internos del objeto son los unicos´ con acceso directo al

internos del objeto son los

unicos´

con acceso directo al estado del objecto

control de visibilidad : acceso privado, acceso limitado o acceso p´ublico visibilidad: acceso privado, acceso limitado o acceso p´ublico

ABSTRACCION´

Los objetos son “agentes” abstractos con ciertas aptitudes que comuniquen entre ellos.

No importa la manera de almacenaje de los datos ni la eleccion´ los algoritmos dentro de los metodos.´

Ofrecen algunos “servicios”, conocidos por las definiciones de las interfaces p´ublicas.

de

POLIMORFISMO

Se puede incluir implementaciones “alternativas” al funcionamiento de tal manera que depende del objecto el

metodo´

Es decir, funciones distintas pueden compartir el mismo nombre.

Por ejemplo, se puede llamar un cierto metodo´

una colecion´

de cual fue llamado, cual implementacion´

sera´ ejecutada.

a cada elemento de

de objetos, y depende del objeto mismo que´ efecto

tendra´ la invocacion´

Si la asignacion´

del metodo.´

del tipo del objeto referenciado ocurre durante la

ejecucion´

Otra opcion´

del programa, se habla de asignacion´

tard´ıa/dinamica´

es resolverlo ya en tiempo de compilacion´ .

.

HERENCIA

Relaciones entre las clases

las clases se relacionan entre s´ı de una manera jerarquica´ jerarquica´

los objetos contienen las propiedades y el comportamiento de todas las clases a las que pertenecen todas las clases a las que pertenecen

la definicion´el comportamiento de todas las clases a las que pertenecen de una clase puede extender comportamiento

de una clase puede extender comportamiento de

las clases superiores y anadir˜

atributos nuevos

herencia m´ultiple : un objeto puede heredar de mas´ clase m´ultiple: un objeto puede heredar de mas´ clase

de una

facilita el polimorfismo y el encapsulamiento

CLASES ABSTRACTAS Y INTERFACES

Muchos lenguages incorporan un concepto de clases abstractas y/o interfaces que no pueden ser instanciadas.

Herencia de una clase abstracta o la declaracion´

con una interfaz son “promesas” de cumplir con cierta funcionalidad definida por la clase/interfaz misma.

de conformancia

un mecanismo de polimorfismo

¿EJEMPLOS?

Intentamos identificar juntos jerarqu´ıas de clases y interfaces posibles en diferentes contextos:

las transacciones bancariasde clases y interfaces posibles en diferentes contextos: una tienda en-linea el control de una linea

una tienda en-lineaen diferentes contextos: las transacciones bancarias el control de una linea de produccion´ un procesador de

el control de una linea de produccion´posibles en diferentes contextos: las transacciones bancarias una tienda en-linea un procesador de texto ¿Otras ideas?

un procesador de textocontextos: las transacciones bancarias una tienda en-linea el control de una linea de produccion´ ¿Otras ideas?

¿Otras ideas?