Trabajo Grupal La Programación Orientada a Objetos.

13
Universidad Privada Telesup Desarrollo de Aplicaciones Programación Orientada a Objetos Julio Ayala Vega Ingeniería de sistemas 2015

description

trabajo grupal desarrollo de aplicaciones

Transcript of Trabajo Grupal La Programación Orientada a Objetos.

Universidad Privada Telesup

Desarrollo de Aplicaciones

Programacin Orientada a Objetos

Julio Ayala VegaIngeniera de sistemas2015

A mi esposa por su paciencia A mis hijos por su confianza

ndice

Una breve historia de la Programacin Orientada a ObjetosObjetosClasesHerenciaTipos de datos abstractosEjecucin ModeloA manera de conclusinFuentes

Una breve historia de la Programacin Orientada a Objetos

Simula fue el primer lenguaje objeto. Como su nombre indica, se utiliza para crear simulaciones. Alan Kay, que estaba en la Universidad de Utah en el momento, le gust lo que vio en el lenguaje Simula. l tuvo una visin de un ordenador personal que proporcione aplicaciones grficas orientado y sinti que un lenguaje como SIMULA proporcionara una buena manera para que los no especialistas para crear estas aplicaciones. Vendi su visin de Xerox Parc y en la dcada de 1970, un equipo dirigido por Alan Kay en Xerox Parc cre el primer ordenador personal llamado Dynabook. Smalltalk fue el lenguaje orientado a objetos desarrollado para la programacin del Dynabook. Era una simulacin y lenguaje de programacin orientada a grficos. Smalltalk existe a este da aunque no es ampliamente utilizado comercialmente.La idea de la programacin orientada a objetos cobr impulso en la dcada de 1970 y principios de 1980 la programacin orientada a objetos en el lenguaje C Bjorn Stroustrup integrado. El lenguaje resultante se llama C ++ y se convirti en el primer lenguaje orientado a objetos a ser ampliamente utilizado comercialmente.

A principios de 1990 un grupo de Sun liderado por James Gosling desarroll una versin ms simple de C ++ llamado Java que estaba destinado a ser un lenguaje de programacin para aplicaciones de vdeo bajo demanda. Este proyecto se va a ninguna parte hasta que el grupo reorientado su enfoque y comercializa Java como lenguaje de programacin de aplicaciones de Internet. El lenguaje se ha ganado una gran popularidad a medida que Internet se ha disparado, aunque su penetracin en el mercado se ha visto limitado por su ineficiencia.

Objetos

Programacin orientada a objetos es, ante todo, acerca de los objetos. Inicialmente idiomas orientados a objetos se orientaron hacia el modelado de objetos del mundo real para que los objetos en un programa corresponden a los objetos del mundo real. Los ejemplos pueden incluir:Las simulaciones de un piso de la fbrica - objetos representan mquinas y materias primasLas simulaciones de un sistema planetario - objetos representan cuerpos celestes como planetas, estrellas, asteroides y nubes de gasUna PC de escritorio - objetos representan ventanas, documentos, programas y carpetasUn sistema operativo - objetos representan los recursos del sistema, como la CPU, memoria, discos, cintas, ratones y otros dispositivos de E / SLa idea con un objeto es que anuncia los tipos de datos que almacenar y los tipos de operaciones que permiten manipular los datos. Sin embargo, se oculta su aplicacin por parte del usuario. Para una verdadera analoga mundo, pensar en una radio. El propsito de una radio es jugar el contenido de los programas de las emisoras de radio (en realidad, traduce las seales de radiodifusin en los sonidos que los humanos pueden entender). Una radio tiene diferentes diales que permiten controlar funciones tales como la estacin que haya sintonizado, el volumen, el tono, el bajo, el poder, y as sucesivamente. Estos cuadrantes representan las operaciones que se pueden utilizar para manipular la radio. La aplicacin de la radio est oculto. Podra implementarse usando tubos de vaco o transistores de estado slido, o alguna otra tecnologa. El punto es que usted no necesita saber. El hecho de que la aplicacin es oculto permite a los fabricantes de radio para actualizar la tecnologa dentro de las radios sin necesidad de volver a aprender a usar una radio.

La idea es la misma con los objetos. Un objeto anuncia el conjunto de funciones que llevar a cabo para usted, pero no revela su implementacin. Piense en ello como un cuadro negro. Por ejemplo, pensar en los objetos en un escritorio. Por simplicidad pensar en dos tipos de objetos, un documento y un programa. Un documento contiene datos y un programa contiene instrucciones ejecutables. El escritorio necesita algunas funciones para manipular estos objetos. Por ejemplo, tiene que ser capaz de copiar, cortar y pegar estos objetos. No importa cmo se implementan estos objetos. Slo los necesita para llevar a cabo esas tres funciones. En consecuencia ambos documentos y programas ofrecen funciones que les permiten copiar, cortar y pegar.

Como otro ejemplo, considere una pila. Una pila proporciona un conjunto de operaciones tales como empujar, pop, IsEmpty, y la parte superior. Si la pila se implementa como un objeto, su aplicacin no ser visible en el programa. Se puede implementarse como una matriz, una cola, o alguna otra estructura de datos. El programa no necesita saber cmo se implementa la matriz. Su nica preocupacin es que la pila proporcione las operaciones especificadas y que las operaciones proporcionan el comportamiento deseado.

El conjunto de operaciones previstas por un objeto se llama su interfaz. La interfaz define tanto los nombres de las operaciones y el comportamiento de estas operaciones. En esencia, la interfaz es un contrato entre el objeto y el programa que la utiliza. El objeto garantiza que va a proporcionar el conjunto anunciado de las operaciones y que se comportar de una manera determinada. Cualquier objeto que se adhiere a este contrato puede ser utilizado indistintamente por el programa. Por lo tanto la aplicacin de un objeto puede cambiarse sin afectar el comportamiento de un programa. Por ejemplo, podemos reemplazar un objeto de la pila que se implementa como una matriz con un objeto de la pila que se implementa como una cola sin afectar el comportamiento del programa.

Clases

Un objeto no sirve de mucho si cada uno debe hacer a mano personalizado. Por ejemplo, las radios no sera tan frecuente si cada uno fue hecha a mano. Lo que se necesita es una manera de proporcionar un modelo para un objeto y un camino para una "fbrica" para utilizar este modelo de objetos producir en masa. Las clases proporcionan este mecanismo en la programacin orientada a objetos. Una clase es una fbrica que es capaz de producir en masa los objetos. El programador proporciona una clase con un modelo del tipo deseado del objeto. Un "modelo" en realidad est compuesto de:Una declaracin de un conjunto de variables que el objeto poseer,Una declaracin del conjunto de las operaciones que el objeto proveer, yUn conjunto de definiciones de funcin que implementa cada una de estas operaciones.El conjunto de variables que posee cada objeto se llaman variables de instancia. El conjunto de operaciones que proporciona el objeto se denominan mtodos. Para los propsitos ms prcticos, un mtodo es como una funcin.Cuando un programa quiere una nueva instancia de un objeto, se pide a la clase apropiada para crear un nuevo objeto para l. La clase asigna memoria para mantener las variables de instancia del objeto y devuelve el objeto al programa. Cada objeto sabe qu clase cre de modo que cuando se solicita una operacin para ese objeto, se puede buscar en la clase que implementa la funcin de esa operacin y llamar a esa funcin.

Herencia

Para motivar a la herencia, pensar en una radio despertador. Una radio reloj despertador tiene todas las funciones de una radio ms funciones adicionales para manejar la alarma del reloj. Si adoptamos la interfaz de la radio para la radio-despertador, entonces alguien que sabe cmo hacer funcionar una radio tambin sabr cmo operar la parte de radio de la radio reloj despertador. Por lo tanto, en lugar de disear el despertador de radio a partir de cero, podemos extender o heredar la interfaz definida por la radio. Por supuesto, tambin podemos utilizar la aplicacin existente para una radio y extenderlo a manejar las funciones de reloj de alarma.En la programacin orientada a objetos, herencia significa la herencia de interfaz de otro objeto, y, posiblemente, su aplicacin tambin. La herencia se realiza al afirmar que una nueva clase es una subclase de una clase existente. La clase que se hereda de se llama la superclase. La subclase hereda siempre interfaz completa de la superclase. Se puede ampliar la interfaz, pero no puede eliminar cualquier operacin de la interfaz. La subclase hereda tambin la implementacin de la superclase, o en otras palabras, las funciones que implementan las operaciones de la superclase. Sin embargo, la subclase es libre de definir nuevas funciones para estas operaciones. Esto se llama anular la implementacin de la superclase. La subclase puede recoger selectivamente y elegir qu funciones se anula. Todas las funciones que no son anulados se heredan.

Hay un gran debate acerca de cmo utilizar la herencia. En particular, el debate se arremolina sobre si la herencia se debe utilizar cuando se quiere heredar una interfaz o si se debe utilizar cuando se quiere heredar aplicacin. Por ejemplo, suponga que desea definir un objeto de bsqueda que almacena (clave, valor) pares y permite que los valores que se levantaron por la prestacin de sus llaves. Ms precisamente, digamos que el objeto de la bsqueda es compatible con las siguientes operaciones:

insercin: Aade un (, valor clave) par al objeto.Eliminar: Elimina un (clave, valor) par del objeto.de bsqueda: Dada una clave recupera el valor asociado con esa clave del objeto.Ms tarde decidimos que queremos un nuevo objeto que nos permite atravesar el (valor clave,) pares en forma ordenada. El nuevo objeto debera apoyar las operaciones anteriores ms dos operaciones adicionales, rebobinar que nos pone de nuevo al principio, y el prximo que devuelve el siguiente (clave, valor) par. Dado que el nuevo objeto soporta todas las operaciones del objeto original de la bsqueda, podemos hacer que el nuevo objeto hereda la interfaz del objeto original. Este es un ejemplo de la herencia de interfaz.

Para dar un ejemplo de la herencia de implementacin, supongamos que queremos alcanzar el objetivo original de la bsqueda usando un rbol de bsqueda binaria. El rbol de bsqueda binaria probablemente ya tiene una implementacin para estas tres operaciones, pero no puede utilizar estos nombres para las operaciones. Si quisiramos heredar la implementacin del rbol binario, haramos el objeto de la bsqueda sea una subclase del rbol binario. Podramos entonces hacer la insercin, eliminacin y operaciones de bsqueda llamar a las operaciones de los rboles binarios correspondientes. Por supuesto, tambin podramos desechar nuestra interfaz propuesto y utilizar los nombres de la interfaz de rbol binario en lugar.

Le parece mal con esta imagen de algo? Bueno, recuerde que un objeto se supone que ocultar su aplicacin y que debera ser intercambiable con otros objetos que implementan la misma interfaz. No podemos muy bien desechar la interfaz y el uso de la interfaz del rbol binario porque eso sera atar la interfaz para la interfaz del rbol binario. As que debemos mantenernos firmes en nuestra interfaz propuesto originalmente. Sin embargo, hay otro problema. Al hacer heredar bsqueda de objetos del rbol binario, tambin hemos hecho dependientes de su implementacin en el rbol binario.

Esperemos que el ejemplo anterior muestra por qu la herencia de implementacin puede no ser una buena idea. En general he encontrado que la herencia debe ser utilizado slo cuando se quiere heredar una interfaz. Si se da la circunstancia de que la aplicacin se obtiene tambin puede utilizarse, tanto mejor. Hay otras maneras de reutilizar implementacin y vamos a discutir esto ms adelante en el curso.

Tipos de datos abstractos

Los objetos proporcionan un mecanismo ideal para la aplicacin de tipos de datos abstractos. Un tipo abstracto de datos es:Un tipo de datos, yUn conjunto de operaciones para la manipulacin de los datos.Ejemplos de tipos abstractos de datos incluyen pilas, rboles y tablas hash. La razn de la palabra "abstracto" es que un tipo abstracto de datos slo define el conjunto de operaciones que soporta (es decir, su interfaz). No define una implementacin. Con el fin de hacer que el tipo de datos de un hormign debe proporcionar una implementacin.

Un objeto es un vehculo de aplicacin agradable para los tipos abstractos de datos ya que los datos almacenados por el objeto pueden representar los datos del tipo de datos abstracto y la interfaz de lata del objeto representa el conjunto del tipo abstracto de datos de operaciones.

Ejecucin Modelo

Uno de los propsitos originales de los idiomas objeto era para modelar aplicaciones que tienen varios objetos que pueden estar operando simultneamente. Por ejemplo, las mquinas en una fbrica funcionan simultneamente. En un sistema operativo de diferentes dispositivos, como discos, el teclado y el ratn, pueden estar operando simultneamente. En un juego de ordenador diferentes actores, ya sea humano o generadas por ordenador, se pueden operar simultneamente.Todas estas aplicaciones tienen algo en un comn - que no tienen un solo hilo de control. En lugar de control se distribuye en toda la aplicacin. En cualquier momento dado varios objetos pueden querer realizar alguna accin. Lenguajes imperativos convencionales como C tienen problemas para modelar este tipo de aplicacin debido a que tienen un nico hilo de control. Lenguas objeto resolvieron este problema haciendo todo un objeto y que tenga autoridad residir dentro de cada objeto. Es decir, en un momento dado varios objetos se podran ejecutar una operacin (por lo menos este es el modelo conceptual - una computadora con un procesador secuencial podra simular este modelo intercalando la ejecucin de las operaciones). Objetos seran comunicarse entre s mediante el paso de mensajes. Un mensaje es simplemente una invocacin de una operacin en otro objeto. Por ejemplo, un sistema operativo podra Cola eventos de entrada que llegan desde varios dispositivos de entrada. Cada dispositivo de entrada puede ser representado como un objeto y la cola de eventos de entrada puede ser representado como un objeto. Cada vez que un dispositivo de entrada recibe un evento de entrada, sera invocar la operacin en la cola de eventos que aade un evento de entrada a la cola.

Smalltalk y Java son dos ejemplos bien conocidos de este "todo es un objeto" concepto. Tambin son muy adecuados para el modelado de responsabilidad distribuida. Por desgracia, no necesita todas las aplicaciones que se distribuya la responsabilidad y que es donde estos lenguajes orientados a objetos tienen problemas. La gente trata de obligar a este modelo en las aplicaciones que se modelan de forma ms natural utilizando un solo hilo de control. Cuando esto sucede, los programadores, especialmente los programadores de aprendizaje de programacin orientada a objetos, se confunden.

En este curso vamos a utilizar C ++ que tiene un modelo de ejecucin diferente. Conserva la nocin de un hilo central de control. Los objetos proporcionan servicios al hilo central de control. Por ejemplo, un objeto de la pila ofrece un servicio de pila. Usaremos principalmente objetos para implementar tipos de datos abstractos. El uso de objetos de esta manera nos dar las ventajas de la encapsulacin de datos y la reutilizacin del cdigo. Encapsulacin de datos significa que la implementacin de un objeto est oculto y por lo tanto podemos intercambiar objetos con diferentes implementaciones, pero la misma interfaz. Cdigo reutilizacin significa que podemos utilizar el mismo objeto en diferentes aplicaciones, por lo que no tenemos que escribir el cdigo dos veces.

A manera de conclusin.Vamos a ver las ventajas ms importantes de la programacin orientada a objetos: Reusabilidad. Cuando hemos diseado adecuadamente las clases, se pueden usar en distintas partes del programa y en numerosos proyectos. Mantenibilidad. Debido a la sencillez para abstraer el problema, los programas orientados a objetos son ms sencillos de leer y comprender, pues nos permiten ocultar detalles de implementacin dejando visibles slo aquellos detalles ms relevantes. Modificabilidad. La facilidad de aadir, suprimir o modificar nuevos objetos nos permite hacer modificaciones de una forma muy sencilla. Fiabilidad. Al dividir el problema en partes ms pequeas podemos probarlas de manera independiente y aislar mucho ms fcilmente los posibles errores que puedan surgir.La programacin orientada a objetos presenta tambin algunas desventajas como pueden ser: Cambio en la forma de pensar de la programacin tradicional a la orientada a objetos. La ejecucin de programas orientados a objetos es ms lenta. La necesidad de utilizar bibliotecas de clases obliga a su aprendizaje y entrenamiento.

Fuentes

http://web.eecs.utk.edu/~huangj/CS302S04/notes/oo-intro.htmlhttp://www.ciberaula.com/articulo/ventajas_poo/