trabajo poo

18
UNIVERSIDAD DE ORIENTE NÚCLEO MONAGAS ESCUELA DE INGENIERÍA Y CIENCIAS APLICADAS CURSO ESPECIAL DE GRADO: CsC Paradigma orientado a objetos Profesor: Jonathan Vásquez. Bachilleres: Centeno G., Renny J. C.I.21.350. 253 Fernández G. Ana B. C.I.21.329. 313

Upload: renny-centeno

Post on 15-Aug-2015

62 views

Category:

Engineering


0 download

TRANSCRIPT

Page 1: Trabajo poo

UNIVERSIDAD DE ORIENTE

NÚCLEO MONAGAS

ESCUELA DE INGENIERÍA Y CIENCIAS APLICADAS

CURSO ESPECIAL DE GRADO: CsC

Paradigma orientado a objetos

Profesor: Jonathan Vásquez.

Maturín, Marzo del 2015

Bachilleres:

Centeno G., Renny J. C.I.21.350.253

Fernández G. Ana B. C.I.21.329.313

Page 2: Trabajo poo

ÍndiceIntroducción..........................................................................................................................3

1. Marco teórico.................................................................................................................4

1.1 Paradigma...............................................................................................................4

1.2 Programación orientada a objetos........................................................................4

1.3 Reseña histórica......................................................................................................4

1.4 Conceptos fundamentales de la POO...................................................................5

1.5 Características de la POO.....................................................................................6

1.6 Ventajas y desventajas de la POO........................................................................7

1.7 Lenguajes basados en la POO..............................................................................8

2. Desarrollo...........................................................................................................................9

Conclusión............................................................................................................................11

Bibliografía..........................................................................................................................12

Page 3: Trabajo poo

Introducción

La programación surge para resolver problemas de la vida real. Desde sus inicios, ha permitido a los seres humanos simplificar tareas, por ejemplo tareas de cálculo, que manualmente tomarían días enteros. Los programadores se han dedicado una y otra vez a diseñar programas que suplan las necesidades humanas y de las organizaciones. Sin embargo, anteriormente existía una gran desventaja. Mismos programas destinados a la resolución de un mismo problema, debían crearse cada uno desde el inicio y por separado. Es aquí donde nace la necesidad de desarrollar una serie de normas que permitieran que todo el trabajo desarrollado por otros programadores pudiese ser usado por otros. Esto es, la reutilización de código.

Es aquí donde surge el paradigma de la programación orientada a objetos, que permite crear objetos. Ahora bien, cabe entender que para poder crear objetos, primero se debe pensar en objetos. En la programación, el pensamiento en objetos es bastante parecido al pensamiento en la vida real. Primero se debe entender que un objeto de la vida real tiene determinadas características y funcionalidades. Tal cual lo hace un objeto en la programación orientada a objetos. Los objetos combinan estas características o atributos con las funcionalidades o comportamiento.

Los atributos y el comportamiento de un objeto, lo hacen ser instancia o ejemplares de una clase. Es decir, contienen todas las características de una clase y permiten utilizar sus métodos, guardando los valores de dichos objetos. Las características de cada objeto permiten identificarlo y diferenciarlo de otros objetos. Mientras que sus métodos van a facilitar la interacción entre los mismos. Es importante resaltar que no se puede tratar a los atributos y al comportamiento de un objeto como entidades separables. El programador siempre debe pensar en el objeto como un conjunto que relaciona los dos valores antes mencionados.

El paradigma de la programación orientada a objetos surge como a partir de una necesidad. La necesidad de tener un acceso transparente a los datos y de que se lleven a cabo ciertas funcionalidades. Por supuesto, este paradigma de la programación orientada a objetos cumple con ciertas características como lo son la abstracción, la herencia, el polimorfismo, la ocultación, el encapsulamiento y la recolección de basura.

Por otra parte, a pesar de que la programación orientada a objetos supone muchas ventajas, como la reutilización de código y el acercamiento del programa a la realidad. Sin embargo, no todo puede ser beneficioso. El pensamiento orientado a objetos no siempre está arraigado en los programadores, pues requiere una lógica de pensamiento distinta a la común y más visionaria. Por lo que a algunos programadores se les dificulta familiarizarse con el paradigma orientado a objetos. Otra desventaja es que muchas veces los resultados de la programación orientada a objetos son programas dotados de numerosas y extensas líneas de código, que limitan la velocidad de procesamiento.

Aun así, a través del tiempo y pese a las desventajas, el paradigma orientado a objetos ha sido tan apreciado que se han desarrollado numerosos lenguajes de programación basados en él.

Page 4: Trabajo poo

1. Marco teórico

1.1 Paradigma

Definicionabc (2015) nos habla de paradigma como:

Un paradigma es un modelo o patrón sostenido en una disciplina científica o epistemológica o, a diversa escala, en otros contextos de una sociedad.

La palabra “paradigma” viene del griego y significa “modelo” o “ejemplo”. La concepción de paradigma data de fines de la década del ’60 y refiere a un determinado modelo de pensamiento o de interpretación de las entidades que se corresponde con una disciplina y un contexto socio histórico dados. De cualquier forma, el concepto es amplio y puede hacer referencia a un modelo tan complejo como la explicación de determinado fenómeno científico y a algo tan informal y variable como es la interpretación de las relaciones sociales.

En cualquiera de los casos, un paradigma supone un determinado entendimiento de las cosas que promueve una forma de pensar en particular por sobre otras.

1.2 Programación orientada a objetos

Carballo (2007) indica que la programación Orientada a Objetos “es una metodología que basa la estructura de los programas en torno a los objetos”. Al respecto, el mismo autor explica:

Los lenguajes de POO ofrecen medios y herramientas para describir los objetos manipulados por un programa. Más que describir cada objeto individualmente, estos lenguajes proveen una construcción (Clase) que describe a un conjunto de objetos que poseen las mismas propiedades.

1.3 Reseña histórica

Bobarin(2008) señala la reseña histórica de la POO.

La Programación Orientación a Objetos (P.O.O.) surge en Noruega en 1967 con un lenguaje llamado Simula 67, desarrollado por Krinsten Nygaard y Ole-Johan Dahl, en el centro de cálculo noruego.

Simula 67 introdujo por primera vez los conceptos de clases, corrutinas y subclases (conceptos muy similares a los lenguajes Orientados a Objetos de hoy en día).

El nacimiento de la Programación Orientación a Objetos en Europa pasó inadvertido para gran parte de los programadores. Hoy tenemos la Orientación a Objetos como un niño de 33 años al que todos quieren bautizar.

En los 70’s científicos del centro de investigación en Palo Alto Xerox (Xerox park) inventaron el lenguaje Small talk que dio respuesta al problema anterior (investigar no planificar).

Small talk fue el primer lenguaje Orientado a Objetos puro de los lenguajes Orientados a Objetos, es decir, únicamente utiliza clases y objetos (Java usa tipos de datos primitivos, o bien los Wrappers que son clases que encapsulan tipos de datos primitivos).

Page 5: Trabajo poo

En los años 80’s Bjarne Stroustrup de AT&T Labs., amplió el lenguaje C para crear C++ que soporta la programación Orientada a Objetos.

En esta misma década se desarrollaron otros lenguajes Orientados a Objetos como Objective C, Common Lisp Object System (CIOS), object Pascal, Ada y otros.

Posteriores mejoras en herramientas y lanzamientos comerciales de C++ por distintos fabricantes, justificaron la mayor atención hacia la programación Orientada a Objetos en la comunidad de desarrollo de software.

En el inicio de los 90’s se consolida la Orientación a Objetos como una de las mejores maneras para resolver problemas. Aumenta la necesidad de generar prototipos más rápidamente (concepto RAD Rapid Aplication Developments). Sin esperar a que los requerimientos iniciales estén totalmente precisos.

En 1996 surge un desarrollo llamado JAVA (extensión de C++). Su filosofía es aprovechar el software existente. Facilitar la adaptación del mismo a otros usos diferentes a los originales sin necesidad de modificar el código ya existente.

En 1997-98 se desarrollan herramientas ‘CASE’ orientadas a objetos (como el diseño asistido por computadora).

Del 98 a la fecha se desarrolla la arquitectura de objetos distribuidos RMI, Corba, COM, DCOM.

1.4 Conceptos fundamentales de la POO

Javaenejemplos(2010) explica los conceptos fundamentales de la POO:

Clase: definiciones de las propiedades y comportamiento de un tipo de objeto concreto. La instanciación es la lectura de estas definiciones y la creación de un objeto a partir de ellas.

Herencia: (por ejemplo, herencia de la clase D a la clase C) Es la facilidad mediante la cual la clase D hereda en ella cada uno de los atributos y operaciones de C, como si esos atributos y operaciones hubiesen sido definidos por la misma D. Por lo tanto, puede usar los mismos métodos y variables públicas declaradas en C. Los componentes registrados como "privados" (private) también se heredan, pero como no pertenecen a la clase, se mantienen escondidos al programador y sólo pueden ser accedidos a través de otros métodos públicos.

Objeto: entidad provista de un conjunto de propiedades o atributos (datos) y de comportamiento o funcionalidad (métodos) los mismos que consecuentemente reaccionan a eventos. Se corresponde con los objetos reales del mundo que nos rodea, o a objetos internos del sistema (del programa). Es una instancia a una clase.

Método: Algoritmo asociado a un objeto (o a una clase de objetos), cuya ejecución se desencadena tras la recepción de un "mensaje". Desde el punto de vista del comportamiento, es lo que el objeto puede hacer. Un método puede producir un cambio en las propiedades del objeto, o la generación de un "evento" con un nuevo mensaje para otro objeto del sistema.

Evento: Es un suceso en el sistema (tal como una interacción del usuario con la máquina, o un mensaje enviado por un objeto). El sistema maneja el evento enviando el mensaje adecuado al objeto pertinente. También se puede definir como

Page 6: Trabajo poo

evento, a la reacción que puede desencadenar un objeto, es decir la acción que genera.

Mensaje: una comunicación dirigida a un objeto, que le ordena que ejecute uno de sus métodos con ciertos parámetros asociados al evento que lo generó.

Propiedad o atributo: contenedor de un tipo de datos asociados a un objeto (o a una clase de objetos), que hace los datos visibles desde fuera del objeto y esto se define como sus características predeterminadas, y cuyo valor puede ser alterado por la ejecución de algún método.

Estado interno: es una variable que se declara privada, que puede ser únicamente accedida y alterada por un método del objeto, y que se utiliza para indicar distintas situaciones posibles para el objeto (o clase de objetos). No es visible al programador que maneja una instancia de la clase.

1.5 Características de la POO

Javaenejemplos(2010) nos habla ahora de las características de la POO.

Existe un acuerdo acerca de qué características contempla la "orientación a objetos", las características siguientes son las más importantes:

Abstracción: Denota las características esenciales de un objeto, donde se capturan sus comportamientos. Cada objeto en el sistema sirve como modelo de un "agente" abstracto que puede realizar trabajo, informar y cambiar su estado, y "comunicarse" con otros objetos en el sistema sin revelar cómo se implementan estas características. 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.

Encapsulamiento: Significa reunir a todos los elementos que pueden considerarse pertenecientes a una misma entidad, al mismo nivel de abstracción. Esto permite aumentar la cohesión de los componentes del sistema. Algunos autores confunden este concepto con el principio de ocultación, principalmente porque se suelen emplear conjuntamente.

Principio de ocultación: Cada objeto está aislado del exterior, es un módulo natural, y cada tipo de objeto expone una interfaz a otros objetos que específica cómo pueden interactuar con los objetos de la clase. El aislamiento protege a las propiedades de un objeto contra su modificación por quien no tenga derecho a acceder a ellas, solamente los propios métodos internos del objeto pueden acceder a su estado. Esto asegura que otros objetos no pueden cambiar el estado interno de un objeto de maneras inesperadas, eliminando efectos secundarios e interacciones inesperadas. Algunos lenguajes relajan esto, permitiendo un acceso directo a los datos internos del objeto de una manera controlada y limitando el grado de abstracción. La aplicación entera se reduce a un agregado o rompecabezas de objetos.

Polimorfismo: comportamientos diferentes, asociados a objetos distintos, pueden compartir el mismo nombre, al llamarlos por ese nombre se utilizará el comportamiento correspondiente al objeto que se esté usando. O dicho de otro modo, las referencias y las colecciones de objetos pueden contener objetos de

Page 7: Trabajo poo

diferentes tipos, y la invocación de un comportamiento en una referencia producirá el comportamiento correcto para el tipo real del objeto referenciado. Cuando esto ocurre en "tiempo de ejecución", esta última característica se llama asignación tardía o asignación dinámica. Algunos lenguajes proporcionan medios más estáticos (en "tiempo de compilación") de polimorfismo, tales como las plantillas y la sobrecarga de operadores de C++.

Herencia: las clases no están aisladas, sino que se relacionan entre sí, formando una jerarquía de clasificación. Los objetos heredan las propiedades y el comportamiento de todas las clases a las que pertenecen. La herencia organiza y facilita el polimorfismo y el encapsulamiento permitiendo a los objetos ser definidos y creados como tipos especializados de objetos preexistentes. Estos pueden compartir (y extender) su comportamiento sin tener que volver a implementarlo. Esto suele hacerse habitualmente agrupando los objetos en clases y estas en árboles o enrejados que reflejan un comportamiento común. Cuando un objeto hereda de más de una clase se dice que hay herencia múltiple.

Recolección de basura: la Recolección de basura o Garbage Collector es la técnica por la cual el ambiente de Objetos se encarga de destruir automáticamente, y por tanto desasignar de la memoria, los Objetos que hayan quedado sin ninguna referencia a ellos. Esto significa que el programador no debe preocuparse por la asignación o liberación de memoria, ya que el entorno la asignará al crear un nuevo Objeto y la liberará cuando nadie lo esté usando. En la mayoría de los lenguajes híbridos que se extendieron para soportar el Paradigma de Programación Orientada a Objetos como C++ u Object Pascal, esta característica no existe y la memoria debe desasignarse manualmente.

1.6 Ventajas y desventajas de la POO

Bobarin(2008) dice, los lenguajes orientados a objetos presentan las siguientes ventajas:

· Fomenta la reutilización y extensión del código.

· Permite crear sistemas más complejos.

· Relacionar el sistema al mundo real.

· Facilita la creación de programas visuales.

· Construcción de prototipos

· Agiliza el desarrollo de software

· Facilita el trabajo en equipo

· Facilita el mantenimiento del software

Lo interesante de la POO es que proporciona conceptos y herramientas con las cuales se modela y representa el mundo real tan fielmente como sea posible.

Flexibilidad: Si partimos del hecho que mediante la definición de clases establecemos módulos independientes, a partir de los cuales podemos definir nuevas clases, entonces podemos pensar en estos módulos como bloques con los cuales podemos construir diferentes programas.

Page 8: Trabajo poo

Reusabilidad: Una vez que hemos definido a la entidad persona para utilizarla en una aplicación de negocios, por mencionar un ejemplo, y deseamos construir a continuación una aplicación, digamos de deportes, en donde requerimos definir a la misma entidad persona, no es deseable volver a escribir la definición para la entidad persona. Por medio de la reusabilidad podemos utilizar una clase definida previamente en las aplicaciones que nos sea conveniente. Es claro que la flexibilidad con la que se definió la clase va a ser fundamental para su reutilización.

Mantenibilidad: Las clases que conforman una aplicación, vistas como módulos independientes entre sí, son fáciles de mantener sin afectar a los demás componentes de la aplicación.

Extensibilidad: Gracias a la modularidad y a la herencia una aplicación diseñada bajo el paradigma de la orientación a objetos puede ser fácilmente extensible para cubrir necesidades de crecimiento de la aplicación.

A pesar de que las ventajas de la programación orientada a objetos superan a las limitaciones de la misma, podemos encontrar algunas características no deseables en ésta.

Limitaciones para el programador. No obstante que la tecnología orientada a objetos no es nueva, un gran porcentaje de programadores no están familiarizados con los conceptos de dicha tecnología. En otras palabras, la lógica de la programación estructurada sigue siendo predominante en la mayoría de los desarrolladores de software, después de haber revisado de forma breve los principios de la programación orientada a objetos, nos es claro que en ésta se requiere una lógica de pensamiento totalmente diferente a la lógica comúnmente utilizada para la programación estructurada.

Tamaño excesivo en las aplicaciones resultantes. La gran mayoría de los equipos de cómputo cuentan con capacidades tanto de almacenamiento como de memoria lo suficientemente buena como para ejecutar la mayoría de las aplicaciones que puedan desarrollarse con la tecnología orientada a objetos, sin embargo existen casos en los que lo anterior no se cumple. Una de las desventajas de la programación orientada a objetos es que cuando se heredan clases a partir de clases existentes se heredan de forma implícita todos los miembros de dicha clase aun cuando no todos se necesiten, lo que produce aplicaciones muy grandes que no siempre encajan en los sistemas con los que se disponga.

Velocidad de ejecución: Esto tiene que ver, en cierto modo, con el punto anterior, una aplicación innecesariamente pesada en muchas ocasiones es más lenta de ejecutar que una aplicación conformada únicamente por los módulos necesarios.

1.7 Lenguajes basados en la POO Existen gran variedad de lenguajes que se basan en este paradigma. Wikipedia (2013) muestra una lista entre los cuales se encuentran: “Java, C++, C, Phyton, Ada, Ruby, visual basic, Php, Perl, JavaScript, Pascal, entre otros”.

Page 9: Trabajo poo

2. Desarrollo

Desde que el hombre habito la tierra por cuestiones obvias de supervivencia y de calidad de vida se vio en la necesidad de realizar actividades que le generaran un resultado acorde a las expectativas que este quería alcanzar, sea cual sea el objetivo(conseguir alimentos, tener una casa, indagar sobre el mundo que lo rodea etc.), pero todos tenemos nuestra manera de hacer las cosas, podemos alcanzar el mismo resultado atacando el problema desde diferentes perspectivas, aun cuando no sabíamos la definición del concepto ya desde tiempos memorables se aplicaba el concepto de paradigma, el campo que nos concierne(la programación) por supuesto que no escapa de esto, existen diferentes métodos o modelos a seguir para resolver los problemas mediante programas informáticos, pero una manera de pensar no se efectúa de la noche a la mañana, una metodología de cómo se debe trabajar en cualquier campo de la vida necesita una acentuación y asimilación por parte de los protagonistas que tomaran dicho modelo como su manual a seguir a la hora de trabajar, la programación orientada a objetos como paradigma también sufrió este proceso, cuando un paradigma es nuevo es difícil que llegue a reemplazar a los ya existentes por misma naturaleza del ser humano que muchas veces se resiste al cambio.

En los años 60 nace el concepto de paradigma formalmente y a la vez en esa década comienza a formarse la programación orientada a objetos como paradigma, simula 67 fue el primer precursor de la programación orientada objetos, al mencionar por primera vez conceptos como clase, así simula 67 puso la primera piedra para que se desarrollaran lenguajes netamente basados en orientación a objetos como Small talk en la década del 70, ya en los 80 se desarrolla C++ basado en el lenguaje ya existente C, aquí ocurre un punto de quiebre ya que C++ tuvo una gran aceptación por parte de los programadores y así se comenzó a ver la orientación a objetos con otros ojos y se comenzó a desplazar a otros paradigmas como la programación estructurada o funcional, además C++ sufrió mejoras gracias al interés de diversas compañías y ya a principios de los 90 se consideraba a la programación orientada a objetos como una(sino la mejor) manera de trabajar a la hora de programar.

Entre los lenguajes que se desarrollaron desde los 60 hasta nuestros tiempos que permitieron difundir el paradigma de programación orientada a objetos tenemos simula67, Small talk, ada, pascal, c++, java.

Ahora bien, alcanzar el estatus de mejor modelo para programar no fue una tarea sencilla, parte de ese éxito obviamente recae en cómo está estructurado y de qué manera se trabaja en la programación orientada a objetos, vamos a analizar los conceptos y

Page 10: Trabajo poo

características que conforma a este paradigma que le permitió ganarse la fidelidad de la comunidad de desarrollo de software.

Vayamos por parte, dentro de los conceptos básicos que se manejan tenemos objetos(es una entidad que tiene parámetros y comportamientos) y un ejemplo de este podría ser una persona, un auto, un libro, clases (plantilla que dispone de los atributos de un grupo de objetos) cuyo ejemplo podría ser “cantantes” donde sus objetos podían ser hector la voz, madonna, Shakira entre otros, método (algoritmo que describe un comportamiento de un objeto) que por ejemplo podría ser el caminar o el cantar de un cantante, herencia(propiedad que permite a una clase heredad de otra clase) que siguiendo con la línea de ideas seria “cantante de rock” que hereda de la clase “cantante, evento(suceso que ocurre en el sistema) como lo es que un objeto “cantante” ejecute su método “caminar” y mensaje(comunicación en el sistema) que no es más que notificarle a un objeto llámese “cantante” que ejecute su método “cantar”, como podemos ver son conceptos sumamente sencillos de manejar y es la base para comprender la programación orientada a objetos, con estos conceptos se maneja la programación de una manera más práctica.

Ahora bien las características más influyentes dentro del paradigma orientado a objetos son abstracción que nos permite ocultar la manera en la que un objeto realiza una función determinada, polimorfismo donde puede haber 2 comportamientos con el mismo nombre pero estos solo responderán cuando se les asocie con el objeto a que pertenecen, encapsulamiento que agrupa a todos los elementos pertenecientes a un mismo nivel de abstracción, herencia nos habla de que todas las clases se relacionan entre si y que facilita de manera enorme el polimorfismo y encapsulamiento, principio de ocultación es una técnica que le da independencia a cada objeto dentro del sistema, donde puede haber comunicación con otros objetos pero estos no pueden afectar sus características internas para mantener su integridad y por último y no menos importante la recolección de basura que es una técnica donde el ambiente de objetos del sistema se encarga borrar a aquellos objetos que ya no estén referenciados y así evitarle al programador la tarea de reasignar o limpiar la materia.

Se nota que la orientación a objetos es un paradigma más que útil y con muchas ventajas a la hora de programar, nos permite tener la reutilización del código para otros usos o especializar aún más ese código a través de la herencia, además de que podemos mantener al margen a nuestros objetos para que no se sepa la manera en que se realiza una determinada acción, logrando que los llamados sean más sencillos y la creatividad del programador pueda ser explotada, la interacción que existe entre clases objetos y métodos hacen al sistema más robusto, logrando poder aplicar el encapsulamiento y polimorfismo con facilidad logramos facilitarnos una serie de eventos que se nos podrían presentar en un problema pudiendo interactuar de manera sencilla los objetos sin confusiones.

A pesar de ciertas desventajas que se podrían presentar como el tamaño de la aplicación o que el programador no domine el paradigma por completo, la programación orientada a objetos es la mejor opción para desarrollar aplicaciones, no solo es versátil y se aplica a muchísimos casos sino que es robusta y confiable para el desarrollo de aplicaciones, muchos software se han desarrollado bajo este paradigma y su éxito ha sido garantizado, incluso aplicaciones que quedaran para el recuerdo de todos de los que disfrutamos del mundo de la computación están basadas en algún lenguaje de programación orientado a objetos.

Page 11: Trabajo poo

Conclusión El paradigma orientado a objetos surge de la necesidad de contar con normas que permitieran reutilizar el trabajo y los esfuerzos en programación de otros programadores en la búsqueda de la solución de los problemas. No es más que una representación de la realidad. Tal y como vemos los objetos en la realidad, los mismos pueden representarse a través de la programación orientada a objetos. Definiendo a un objeto como una entidad provista de características y funciones, que combina estos elementos para reaccionar a eventos. A pesar de que este paradigma fue desarrollado hace ya muchos años en Noruega, aún hoy es difícil para algunos programadores familiarizarse con la visión que supone la orientación a los objetos.

Un objeto no es más que una instancia de una clase. Entendiéndose clase como la definición de cada una de las propiedades y funcionalidades de un objeto. Estas últimas también pueden ser denominadas como atributos y métodos respectivamente. Los atributos no son más que datos asociados y visibles desde fuera del mismo que son representativos de sus características. Esto permite a los objetos identificarse y diferenciarse del resto. Por otra parte, los métodos son las acciones, cambios o eventos que puede producir el objeto. Cabe destacar que, como un objeto es capaz de interactuar con otro objeto del programa, estos cambios o eventos pueden producir un mensaje para otro objeto. Ahora bien, este mensaje no es más que una comunicación hacia otro objeto, con el fin de que este ejecute o lleve a cabo alguno de sus métodos.

Es necesario recalcar que para poder programar bajo el paradigma orientado a objetos, se deben tomar en cuenta las características de esta programación. Entre ellas, se encuentra la abstracción. Esta característica se basa en capturar el comportamiento del objeto, definiendo y representando las propiedades más esenciales del objeto. Por otra parte, una característica importante a resaltar es la herencia. La herencia es la capacidad o la facilidad que tiene una clase de formar una jerarquía con otras clases. El encapsulamiento consiste en agrupar los elementos pertenecientes a una misma entidad. El principio de ocultación dice que los objetos son módulos, aislados del exterior, pero que su interfaz especifica formas para que otros objetos puedan comunicarse con él. El polimorfismo consiste en identificar con el mismo nombre comportamientos distintos que pueden provenir de distintos objetos. En la programación orientada a objetos también se cuenta con la propiedad de destruir cualquier objeto que haya quedado en desuso. A esto se le llama recolección de basura.

Como todo en el mundo, la programación orientada a objetos tiene sus pros y sus contras. Entre las ventajas que se pueden resaltar están la reutilización de código, la posibilidad de elaborar programas más complejos, el trabajo en equipo, la capacidad de mantenimiento de software, el hecho de que el programa esté más relacionado con la realidad, programas más visuales, desarrollo de software, entre otros. Pero también tiene que tener sus desventajas. La principal desventaja es la dificultad que representa para los programadores tener una visión orientada a objetos. Otras desventajas son la extensión en el código de los programas y la velocidad de ejecución.

Resta mencionar que se han desarrollado varios lenguajes de programación orientados a objetos como lo son Java, PHP, C++, Ada, Perl, entre otros. Hay que recordar que el paradigma orientado a objetos, como todo paradigma, en este momento se adapta al contexto social e histórico, pero probablemente en un futuro no lo haga.

Page 12: Trabajo poo

Bibliografía

BOBARIN, Gonzalo, Historia de la programación orientada a objetos, 2008, http://sis324loo.blogspot.com/2008/09/historia-de-los-lenguajes-de_29.html [consulta: lunes, 23 de marzo del 2015, hora: 9:52]

BOBARIN, Gonzalo, Ventajas, 2008, http://sis324loo.blogspot.com/2008/09/historia-de-los-lenguajes-de_29.html [consulta: lunes, 23 de marzo del 2015, hora: 9:55]

BOBARIN, Gonzalo, Desventajas, 2008, http://sis324loo.blogspot.com/2008/09/desventajas_1194.html [consulta: lunes, 23 de marzo del 2015, hora: 9:55]

CARBALLO, Yusneyi, Programación orientada a objetos [en línea], 2007, http://webdelprofesor.ula.ve/ingenieria/hyelitza/materias/programacion2/oxo/ProfaYusneyi_Tema8_POOClasesyObjetos.pdf [consulta: lunes, 23 de marzo del 2015, hora: 8:52]

Definifionabc, Definición de paradigma, 2015, http://www.definicionabc.com/general/paradigma.php [consulta: lunes, 23 de marzo del 2015, hora: 12:52]

Javaenejemplos, Paradigma de la programación orientada a objetos, 2010, http://javaenejemplos.blogspot.com/2010/06/paradigma-de-la-programacion-orientada_07.html [consulta: lunes, 23 de marzo del 2015, hora: 13:13]

Wikipedia, Programación orientada a objetos, 2013, http://es.wikipedia.org/wiki/Programaci%C3%B3n_orientada_a_objetos [consulta: martes, 24 de marzo del 2014, hora: 6:23]