1 Principios de La POO
Short Description
Principios de la programación orientada a objetos Visiten mi blog en: http://dragons-rise.blogspot.com/...
Description
PRINCIPIOS DE LA PROGRAMACIÓN ORIENT ORIENTADA ADA A OBJETOS
-1-
UNIVERSIDAD PRIVADA PRIVADA ANTENOR ORREGO ESCUELA DE INGENIERIA DE COMPUTACIÓN Y SISTEMAS PROGRAMACIÓN ORIENTADA A OBJETOS
PRINCIPIOS DE LA PROGRAMACIÓN ORIENT ORIENTADA ADA A OBJETOS APELLIDOS Y NOMBRES:
CUEVA CHAMORRO, Diego DIAZ MAZABEL, Jorge MONTOYA MORENO, Johan
TRUJILLO, AGOSTO 2007
-2-
CONTENIDOS I.
RESUMEN……………………………………………….…………….04
II.
PRINCIPIOS DE LA PROGRAMACION ORIENTADA A OBJETOS…………………………………………..05 1. ¿QUE ES UN OBJETO?………………………………….. OBJETO?…………………………………...…….05 .…….05 2. PROGRAMACION ORIENTADA A OBJETOS……………… OBJETOS……………… 05 3. VENTAJAS DE LA P.O.O.………………………….……………08 P.O.O. ………………………….……………08 4. PRINCIPIOS DE DE LA P.O.O………………………… P.O.O………………………………..…….09 ……..…….09 4.1 PRINCIPIO DE LA ABSTRACCION………………….… ABSTRACCION………………….…..09 ..09 4.2 PRINCIPIO DEL ENCAPSULAMIENTO……………… ENCAPSULAMIENTO…………………10 …10 4.3 PRINCIPIO DEL POLIFORMISMO……………..………..11 POLIFORMISMO……………..………..11 4.4 PRINCIPIO DE LA JERARQUIA…………………… JERARQUIA………………………….12 …….12 4.5 PRINCIPIO DE MODULARIDAD…………………… MODULARIDAD…………………………13 ……13 4.6 PRINCIPIO DE PASO DE MENSAJES………………….14 MENSAJES………………….14
III.
CONCLUSIONES……………………………………………………15
IV.
REFERENCIAS BIBLIOGRÁFICAS……………………… BIBLIOGRÁFICAS……………………………….16 ……….16
-3-
RESUMEN
Existen diferentes paradigmas o modelos para la tarea de programar, una de ellas es la Programación Orientada a Objetos. Se trata de un enfoque de basada en la forma en la que los hombres observamos nuestro mundo, en “objetos”. Todo es objetos, un animal, una máquina, una persona, por lo tanto el mundo está construido por una inmensa cantidad objetos. Todos estos objetos se diferencian por sus características llamadas atributos y los comportamientos que presentan. Esto nos lleva a ver un programa como el conjunto de los objetos que se van interrelacionando para lograr un resultado deseado, otro punto clave de la POO. Por ejemplo, tenemos una computadora, ésta está constituida por sus objetos: Mouse, teclado, monitor, CPU, etc; si quisiera jugar “Mario Bros.” tengo que hacer que estos objetos interactúen, así, si quiero que Mario salte presiono la tecla “arriba” en el teclado, lo cual manda un mensaje al CPU para que realice determinados proceso, no me importa qué se lleva a cabo en este, ya sea entrar a un modo gráfico, trabajar con variables de posiciones, etc., lo que me importa es que al solicitarle una acción éste responda a lo que le pedí; el resultado sería ver cómo Mario salta en la pantalla para coger alguna moneda. La P.O.O. tiene sus principios o cualidades para trabajar que están presentes en el ejemplo anterior. Son: abstracción, paso de mensajes, encapsulamiento, polimorfismo, modularidad y jerarquía, las cuales serán expuestas a lo largo de la presente monografía. -4-
PRINCIPIOS DE LA PROGRAMACION ORIENTADA A OBJETOS 1.- ¿QUÉ ES UN OBJETO? Sería un poco difícil hablar de Programación Orientada a Objetos sin tener por lo menos una pequeña idea de qué es un “objeto”.Un objeto puede ser cualquier entidad del mundo real; por ejemplo un mamífero, un monitor, un menú en la computadora, la fecha, etc. Cada uno de estos objetos contiene datos o información y puede llevar a cabo alguna función. Los objetos se van conectando e interactuando, de forma que se va creando todo lo que conocemos y vemos a nuestro alrededor. Dentro de la computación (lo que nos interesa), (1) “un objeto es la representación de un concepto para un programa”. Y tiene la información necesaria para conocer las características de un objeto y las operaciones que se le pueden hacer, aspectos que están encapsulados en el mismo objeto. Los objetos que tienen propiedades similares están dentro de plantillas que son clases, pero por ahora basta con tener t ener el concepto de un objeto.
2.- PROGRAMACION ORIENTADA A OBJETOS La Programación Orientada a Objetos es un paradigma o un modelo de programación que utiliza objetos como bloque esencial de construcción. Al decir que es un paradigma nos referimos a que son una serie de pautas y un estilo para que sigan los programadores, así como la Programación Estructurada tiene sus pautas. (2) Es una serie de normas de realizar las cosas de manera que otras personas puedan utilizarlas y adelantar su trabajo, de manera que consigamos que el código se pueda reutilizar. -5-
Existen diferentes enfoques a la hora de la tarea de programar. El modelo al cuál estábamos acostumbrados era el de Programación Estructurada, el cual funcionaba bien para nuestros programas pequeños y poco complejos; pero el siguiente paso o siguiente enfoque es el orientado a objetos, la que toma y repotencia muchos conceptos del enfoque estructurado. Es una manera distinta de pensar en la programación, acercándonos más a cómo son las cosas en la vida real. De esta forma nuestra lógica para desarrollar los programas es más sencilla, vamos juntando los objetos como bloques esenciales de construcción para edificar un edificio, los cuales colaboran entre ellos para realizar tareas. Si en la Programación Estructurada se mantiene separados los datos y procedimientos, en cambio en la P.O.O. éstos se encuentran íntimamente relacionados bajo el concepto de los “objetos”. Éstos se asemejan más a la forma de pensar del hombre y no al de la máquina, debido a la forma racional de pensar de los hombres y sus procesos como las abstracciones que hacen en su mente; el hombre puede conocer muchos objetos que están a su alrededor e utilizarlos, sin necesidad de saber exactamente que es lo que sucede dentro de ellos para obtener los resultados que busca. Es un paradigma que facilita la creación de buen software, ya que se presta a un buen mantenimiento, se pueden hacer programas de gran extensión, y se reutiliza el software. Los programas son escritos en términos de objetos, propiedades y comportamientos. Por mucho tiempo los programadores creaban software muy parecido uno de otro que resolvían los mismos problemas repetitivamente. Para que los esfuerzos de un programador pueda ser usado por otra persona es que se utiliza la Programación Orientada a Objetos. Son normas para programar de manera que otras personas puedan usar nuestro código, haciendo más fácil su trabajo y dándole la característica de reutilizable al código.
-6-
(3) “El elemento básico de este paradigma no es la función (elemento básico de
la programación estructurada), sino un ente denominado objeto.” Cada objeto proporciona un servicio o realiza una acción que es usada por otros objetos Se podría ver a los objetos como veíamos a los métodos en la Programación Estructurada, como pequeñas partes del programa que van dando solución a pequeñas situaciones y que se van conectando para formar el programa en sí, sólo que los objetos tienen otras propiedades y se prestan más para las abstracciones y otras cosas. Para tener una imagen de a qué se refiere la Programación Orientada a Objetos pensemos en nuestros cuerpos. Veamos el cuerpo humano como el conjunto de órganos que lo conforman, a los cuales podemos llamar objetos. Cada uno realiza sus características o sus atributos, por ejemplo un órgano puede tener color rojizo, ser grande o pequeño, estar enfermo, etc; y a la vez cada uno tiene sus propias funciones o comportamientos como respirar en el caso de los pulmones o generar movimiento en el caso de los músculos. Los órganos se encuentran relacionados para cumplir con las funciones del cuerpo. Nosotros sabemos qué es lo que hacen estos objetos, pero no sabemos cómo lo hacen (sin referirnos a los conceptos de biología que se puedan tener), aún así podemos usar estos objetos mandando mensajes desde nuestra cabeza; como cuando queremos caminar, le decimos a los músculos de nuestras piernas que se muevan, y nos hacen caso, más no nos preocupamos por cuales músculos músculos se contraen, cuales cuales se relajan, por por cuánto tiempo, etc., esas funciones son propias del objeto y no necesitamos conocerlas (de otra forma sería un verdadero problema caminar, con todas las acciones que tendríamos que calcular). Además sabemos que el cuerpo humano está compuesto por células en sus niveles más bajos, las cuales son objetos más pequeños, también con sus funciones propias y atributos, que al juntarse van a ir formando los órganos. Puede parecer un poco confuso pero la Programación Orientada a Objetos trabaja de esta forma. Un programa está hecho de muchos componentes u
-7-
objetos, cada uno jugando un rol diferente en el programa y que se pueden interrelacionar entre ellos. La Programación Orientada a Objetos se basa en cómo en el mundo real, los objetos están compuestos por objetos más pequeños, los cuales se pueden combinar. Este modelo de programación presenta muchos conceptos para crear y usar objetos de forma flexible y fácil.
3.- VENTAJAS DE LA P.O.O. (4) Entre las ventajas que presenta el paradigma de la P.O.O. tenemos:
Uniformidad. Representar los objetos implica un análisis, diseño y codificación de los mismos.
Comprensión. Los datos de los objetos, así como sus procedimientos están agrupados en clases, correspondiendo con las estructuras de información del programa, haciendo un modelo ordenado y jerárquico.
Flexibilidad. Como los procedimientos manipulan los datos, los l os cambios
que realicen a éstos puede afectar cualquier parte del programa donde estos datos aparezcan.
Estabilidad. Hay partes del programa que permanecen inalterable, ya que hay objetos que permanecen constantes y otros que cambian frecuentemente, para eso se aíslan los que cambien frecuentemente,
Reusabilidad. Está basado en la reutilización de código. Se trata de usar las definiciones de objeto de otros programas, si son compatibles en su uso. Desde este punto de vista, el desarrollo de un programa puede ser una simple combinación de objetos, los cuales se pueden relacionar.
-8-
4.- PRINCIPIOS DE LA P.O.O. Existen 6 principales principios de la Programación Orientada a Objetos:
4.1.- PRINCIPIO ABSTRACCIÓN “Abstraer es suprimir u ocultar algunos detalles de un proceso o de un elemento, para resaltar algunos aspectos, detalles o estructuras” Ocultar parte de la información es una omisión voluntaria de detalles en el desarrollo de un programa o una representación abstracta La abstracción es la forma en que nuestra mente modela la realidad, formando los objetos. Por eso se crea objetos en los programas que simulen los comportamientos de los objetos del mundo real. Nosotros no pensamos en las cosas que vemos como la unión de sus componentes más pequeños; no vemos un carro como el conjunto de llantas, motor, asientos, timón, espejos, etc., sino que lo vemos como la entidad compleja que es, en eso se basa la abstracción. No nos interesa conocer los detalles de cada uno de sus componentes o qué es lo que hace cada parte, simplemente porque nos basta conocer el carro o el objeto superficialmente, con tal que podamos interactuar con él y al hacerlo obtengamos una respuesta para satisfacer nuestra necesidad; como desplazarnos rápidamente de un lugar a otro, ante esta solicitud, el carro responde realizando el movimiento. Cada objeto en el sistema puede realizar trabajos, informar y "comunicarse" con otros objetos en el sistema sin revelar cómo se está implementado. Los procesos, las funciones o los métodos pueden también ser abstraídos y cuando lo están, una variedad de técnicas son requeridas para ampliar una abstracción.
-9-
La abstracción humana se realiza de manera jerárquica. Cada sistema se va dividiendo en sistemas más pequeños hasta ir llegando a los niveles más simples, de esta forma se nos presenta una realidad mucho más ordenada y entendible. Ésta es la forma de pensar de la P.O.O. (5) Existen niveles en la abstracción, que son: - Comunidad de objetos que interactúan : Hay líneas de comunicación y cooperación - Agrupación de objetos que trabajan juntos en una unidad: Se van formando los Paquetes (en caso de Java) - Interacción cliente-servidor : Los objetos se proporcionan servicios
4.2.- PRINCIPIO DE ENCAPSULAMIENTO El “Encapsulamiento” le permite decidir al programador de objetos que información dar a conocer y cual información ocultar al resto de objetos, no olvidar que los objetos pueden estar conformados por otros objetos. Los objetos suelen presentar sus métodos como interfaces públicas que es lo que se le puede pedir al objeto objeto y sus atributos como datos privados privados e inaccesibles desde otros objetos. Así como dentro de una empresa, a los empleados no se les dice toda la información respecto a la misma, ni se les comunica de todos los procesos que se dan en ella; de ésta forma los objetos no siempre muestran toda su información . Lo que hacen los objetos generalmente es presentar a otros objetos sus métodos o las acciones que realiza, para que éste pueda solicitarlas. Sin embargo los atributos de un objeto, sus características, éstas quedan dentro de ellos mismos, siendo inaccesible para otros objetos. De esta forma es difícil que un objeto pueda cambiar los atributos de otro, desde fuera de él. (6) Para permitir que otros objetos consulten o modifiquen los atributos de los objetos, las clases suelen presentar métodos de acceso. De esta forma el
- 10 -
acceso a los datos de los objetos es controlado por el programador, evitando efectos laterales no deseados, como cambios inesperados en los atributos de un objeto, dando como consecuencia que sus procesos arrojen resultados erróneos para lo que deseamos. Con esto podemos decir que con el encapsulamiento de los datos se consigue que las personas que utilizan un objeto se vean en la necesidad de comprender únicamente su interfaz, cómo interactuar con ese objeto, no tomando interés en cómo está implementado, y reduciendo la complejidad de utilización.
4.3.- PRINCIPIO DE POLIFORMISMO En programación orientada a objetos se llama polimorfismo a la capacidad que tienen objetos de diferentes clases de responder al mismo mensaje. Lo que quiere decir es que puede haber muchos mensajes con el mismo nombre, en diferente s clases. Cada clase responde al mensaje con su método o código propio. Un objeto pueda presentar diferentes comportamientos en función al contexto en el que pueda estar trabajando; cuando se envía un dato a un objeto del que no se sabe su tipo específico, se ejecuta el método adecuado de acuerdo con su tipo. (7) El nombre de “Poliformismo” viene de las muchas formas de responder al mismo mensaje. En un sentido literal, significa la cualidad de tener más de una forma. También se le llama el (8) “Fenómeno por el que, cuando se envía un mensaje aun objeto del que no se sabe su tipo específico, se ejecuta el método adecuado de acuerdo con su tipo.”
Se aplica igualmente a la propiedad de algunas operaciones de comportarse de forma diferente en diferentes objetos. Por ejemplo, consideremos la sumar. El
- 11 -
operador + realiza la suma de dos números de diferente tipo. Además se puede definir la operación de sumar dos cadenas mediante el operador suma. El polimorfismo sólo es aplicable si cualquiera de los posibles tipos de objetos que se invoquen tienen definida la operación empleada, y los tipos de datos de entrada requeridos y los valores devueltos, más allá de cómo se empleen o calculen, son compatibles entre sí.
4.4.- PRINCIPIOS DE LA JERARQUÍA (9) “Nuestro mundo está organizado de una manera jerárquica, en un orden. De esta forma, las clases dentro de un programa también se presentan ordenadas en jerarquías, formándose los árboles de herencia.”
Por ejemplo, viendo en nuestro mundo, podemos tener como mascota un perro “siberiano”, jerárquicamente éste estaría dentro del grupo de los canes o perros, a la vez dentro de los mamíferos, dentro de los vertebrados, y así varios niveles de jerarquía dentro de los cuales se encuentra. La jerarquía se encuentra ligada a la “Herencia”. (10) “La herencia es la propiedad que permite a los objetos construirse a partir de otros objetos.” La utilidad de la herencia es que las clases hijas reciben propiedades de sus clases padres, evitando la necesidad de repetir el código anterior, haciendo el código reutilizable. Existen varias formas de determinar qué atributos y comportamientos pueden heredar las clases hijas de su superclase. El propio acto de tomar propiedades de su superclase se denomina “herencia” Los objetos forman siempre una organización jerárquica, en el sentido de que ciertos objetos son superiores a otros de cierto modo. Existen varios tipos tipos de jerarquías: simples, cuando su estructura pueda ser representada por medio de un "arbol", es decir, tienen solo una clase superior, padre superclase; complejas, cuando un hijo puede tener varios padres padres (es algo más difícil de manejar y Java no permite estos casos)
- 12 -
(11) La estructura estructura jerárquica puede distinguirse distinguirse en ella tres niveles:
-La raíz de la jerarquía. Se trata de un objeto único y especial. Este se caracteríza caracteríza por estar en el nivel más alto de la estructura y suele recibir un nombre muy genérico, genérico, como por por ejemplo objeto madre, autos, áreas; cualquier cualquier nombre que represente el universo de todo t odo lo que viene dentro de esa clase. -Los objetos intermedios. Son aquellos que descienden directamente de la raíz y que a su vez tienen descendientes. Representan conjuntos o clases de objetos, que pueden ser muy generales o muy especializados, según la aplicación. Reciben nombres genéricos que dicen qué conjunto de elementos representan, como área_círculo, área_cuadrado,etc. -Los objetos terminales. Son todos aquellos que descienden de una clase o subclase y no tienen descendientes. Se les llama instancias o ítems
4.5.- PRINCIPIO DE MODULARIDAD La modularidad permite al programador dividir su programa complejo en varios módulos o partes diferentes. Cada uno resolverá una parte de un problema grande, y después interactuarán todos los módulos, como si se armara un rompecabezas. Se basa en la frase “divide y vencerás”. (12) “Cada una de las cuales debe ser tan independiente como sea posible de la aplicación en sí y de las restantes partes. Se debe tener en cuenta los conceptos asociados de dependencia, acoplamiento, cohesión, interfaz, encapsulación y abstracción.” Al partir el programa se disminuye su grado de dificultad para resolverlo, pues ahora el problema más grande se ve como un conjunto de problemas más pequeños. No sólo hace que resolvamos más fácilmente el problema, sino que hace el programa generado más fácil de comprender para otra persona, y por lo mismo, más fácil de darle mantenimiento o implementarlo. Cuando vemos un programa dividido en módulos, podemos tener una idea de qué es lo que hace cada parte, y de esta forma entenderlo bloque por bloque. En la Programación Estructurada manejábamos manejábamos el concepto concepto de la modularidad en el el momento de - 13 -
trabajar con métodos o funciones, en la Programación Orientada a Objetos se usa de manera similar, pero basado en el trabajo con los objetos y las clases.
4.6.- PRINCIPIO DE PASO DE MENSAJES (13) Son el medio a través del cuál interactúan los objetos, estimulan la ocurrencia de cierto comportamiento en el objeto objeto receptor. Con el paso paso de mensajes los objetos pueden solicitar a otros objetos que realicen alguna acción o que modifiquen sus atributos. Junto con el paso de mensajes se implementan llamadas a los métodos de un objeto, lo que nos permite hacer que ese objeto realice determinada acción que está dentro de su comportamiento.
En la programación Estructurada el paso de mensajes correspondía a las funciones, ahora se extiende a los objetos. Al llamar a un objeto podemos mandarle valores como número u otros para que realice un trabajo o simplemente invocar una de sus acciones sin darle valores, ya que puede no necesitarlos. Por ejemplo, podemos mandar un mensaje a un objeto llamado “carro” para que encienda el motor. Para eso llamamos a una funcione de ese objeto que se podría llamar “encender_motor”. También podríamos poner la caja de cambios en un determinado número. Haríamos un proceso similar, llamaríamos al método “caja_cambios” pero esta vez le mandaríamos un valor o parámetro como 2, o 5, que representaría en qué número queremos que se ponga la caja de cambios; de esta manera estamos modificando los atributos del objeto “carro”. En el programa en sí, el paso de parámetros tiene la siguiente forma: “ objeto_receptor.operación(parámetros) ” El paso de parámetros es el que mantiene comunicado todo un sistema orientado a objetos. Al mandar un mensaje pedimos que se realice un acción, sin preocuparnos en ese momento en los cálculos que se tendrán que llevar a cabo para un proceso exitoso, solo pensando en qué datos es necesario mandar a ser trabajados para obtener lo que queremos.
- 14 -
CONCLUSIONES
La programación Orientada a Objetos es otra forma de ver la programación, basándonos en la perspectiva que tenemos los humanos de nuestro mundo, hecho en base a objetos que se interrelacionan. Es el modelo más usado actualmente, hasta que se desarrolle uno nuevo que satisfaga de mejor manera los requerimientos de software del futuro.
Con este nuevo paradigma se pueden hacer programas más complejos, pero a la vez más fácil de entender, permitiendo el trabajo en equipo y la re-utilización del código, hecho por otra persona.
No necesitamos comprender exactamente como funcionan todos los objetos que participan en un programa, lo que prima en la Programación Orientada a Objetos es la capacidad de interactuar de los objetos, la posibilidad de responder ante una solicitud de acción. No nos importa cómo se lleve a cabo una acción, lo que nos importa es que se nos devuelva el resultado que queremos.
Son los principios de la P.O.O. los que le dan la fuerza para ser el paradigma actual, éstas características aseguran que hagamos un buen uso de los objetos y nos dan facilidades para trabajar con ellos, conocerlas bien significa una gran ventaja a la hora de programar.
- 15 -
REFERENCIAS (1) Miguel Ángel Manzanedo del Campo, Guía de Iniciación al Lenguaje JAVA,
http://pisuerga.inf.ubu.es/lsi/Invest/Java/Tuto/I_1.htm ,
Leído
16.08.2007
(2) Miguel Angel Alvarez, Alvarez, ,¿Qué es la programacion orientada a objetos?, http://www.desarrolloweb.com/articulos/499.php Leído 16.08.2007 (3) Miguel Ángel Manzanedo del Campo, Guía de Iniciación al Lenguaje ,
JAVA,
http://pisuerga.inf.ubu.es/lsi/Invest/Java/Tuto/I_1.htm ,
Leído
16.08.2007
(4) Universidad Distrital Francisco José de Caldas, Programación Orientada a Objetos, http://ieee.udistrital.edu.co/concurso/programacion_orientada _objetos/poo/intro.html#. Leído 19.08.2007
(5) Natividad Martinez Madrid, Introducción a la Programación Orientada a Objetos, Archivo .pdf, Leído el 17.
(6) Miguel Ángel Manzanedo del Campo, Guía de Iniciación al Lenguaje JAVA,
http://pisuerga.inf.ubu.es/lsi/Invest/Java/Tuto/I_1.htm ,
Leído
17.08.2007
(7) Wikipedia,
Polimorfismo (programación orientada a objetos), http://es.wikipedia.org/wiki/Polimorfismo_(programaci%C3%B3n_orienta da_a_objetos),, Leído 18.08.2007 da_a_objetos) (8) Juan Manuel Dodero, Universidad Carlos III de Madrid, Principios de la Programación Orientada a Objetos, 2002, Archivo .pdf, Leído el 16.08.2007 (9) Miguel Ángel Manzanedo del Campo, Guía de Iniciación al Lenguaje JAVA,
http://pisuerga.inf.ubu.es/lsi/Invest/Java/Tuto/I_1.htm ,
Leído
16.08.2007
(10) Pablo Alvarez Mántaras, Lenguajes de Programación, conceptos de programación orientada a objetos, http://programarenc.webcindario.com/ Cplus/capitulo1.htm , Leído 15.08.2007 (11) Monografías, Monografías, Programación Orientada a Objetos Sistemas de Procesamiento de Datos, http://www.monografias.com/trabajos/ objetos/objetos.shtml , Leído 18.08.2007
- 16 -
(12) Arbis Percy Reyes Paredes, Conceptos y principios orientado a objetos http://www.elguille.info/colabora/NET2005/Percynet_Conceptos yprincipiosorientadoaobjetos.htm , Leído 17.08.2007
(13) Miguel Ángel Manzanedo del Campo, Guía de Iniciación al Lenguaje JAVA, http://pisuerga.inf.ubu.es/lsi/Invest/Java/Tuto/I_1.htm , Leído 16.08.2007
- 17 -
View more...
Comments