SlideShare una empresa de Scribd logo
1 de 12
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
Índice
Introducció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
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.
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).
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
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
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.
 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”.
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
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.
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.
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/Profa
Yusneyi_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]

Más contenido relacionado

La actualidad más candente

Cuentas de usuarios ,grupos y unidades organizativas
Cuentas de usuarios ,grupos y unidades organizativasCuentas de usuarios ,grupos y unidades organizativas
Cuentas de usuarios ,grupos y unidades organizativas
Omar Chirinos Garcia
 
Manejo archivos en-python ejm program
Manejo archivos en-python ejm programManejo archivos en-python ejm program
Manejo archivos en-python ejm program
Daniel Arevalo
 
Diferencas , ventajas y desventajas
Diferencas , ventajas y desventajasDiferencas , ventajas y desventajas
Diferencas , ventajas y desventajas
bane12
 
Herencia - Programación Orientada a Objetos
Herencia - Programación Orientada a ObjetosHerencia - Programación Orientada a Objetos
Herencia - Programación Orientada a Objetos
Mario Villaseñor
 
PERSISTENCIA BASADA EN ARCHIVOS
PERSISTENCIA BASADA EN ARCHIVOSPERSISTENCIA BASADA EN ARCHIVOS
PERSISTENCIA BASADA EN ARCHIVOS
Darwin Durand
 

La actualidad más candente (20)

Consultas base de datos en SQL
Consultas base de datos en SQLConsultas base de datos en SQL
Consultas base de datos en SQL
 
Cuentas de usuarios ,grupos y unidades organizativas
Cuentas de usuarios ,grupos y unidades organizativasCuentas de usuarios ,grupos y unidades organizativas
Cuentas de usuarios ,grupos y unidades organizativas
 
Manejo archivos en-python ejm program
Manejo archivos en-python ejm programManejo archivos en-python ejm program
Manejo archivos en-python ejm program
 
Diferencas , ventajas y desventajas
Diferencas , ventajas y desventajasDiferencas , ventajas y desventajas
Diferencas , ventajas y desventajas
 
Ontologías: definición, metodologías y buenas prácticas para su construcción....
Ontologías: definición, metodologías y buenas prácticas para su construcción....Ontologías: definición, metodologías y buenas prácticas para su construcción....
Ontologías: definición, metodologías y buenas prácticas para su construcción....
 
Semana 4 Estructuras de datos(Tuplas, Conjuntos y Diccionarios)
Semana 4   Estructuras de datos(Tuplas, Conjuntos y Diccionarios)Semana 4   Estructuras de datos(Tuplas, Conjuntos y Diccionarios)
Semana 4 Estructuras de datos(Tuplas, Conjuntos y Diccionarios)
 
Hilos En Java
Hilos En JavaHilos En Java
Hilos En Java
 
LibreríAs De Java
LibreríAs De JavaLibreríAs De Java
LibreríAs De Java
 
Arquitectura del JDK.pptx
Arquitectura del JDK.pptxArquitectura del JDK.pptx
Arquitectura del JDK.pptx
 
Propiedades De La Poo
Propiedades De La PooPropiedades De La Poo
Propiedades De La Poo
 
Organizador grafico
Organizador graficoOrganizador grafico
Organizador grafico
 
Herencia - Programación Orientada a Objetos
Herencia - Programación Orientada a ObjetosHerencia - Programación Orientada a Objetos
Herencia - Programación Orientada a Objetos
 
Creación de tablas y relaciones en mysql workbench
Creación de tablas y relaciones en mysql workbenchCreación de tablas y relaciones en mysql workbench
Creación de tablas y relaciones en mysql workbench
 
Modulo 2 internet y redes de aprendizaje
Modulo 2 internet y redes de aprendizajeModulo 2 internet y redes de aprendizaje
Modulo 2 internet y redes de aprendizaje
 
Elementos caracteristicos de la poo
Elementos caracteristicos de la pooElementos caracteristicos de la poo
Elementos caracteristicos de la poo
 
Introducción a sql
Introducción a  sqlIntroducción a  sql
Introducción a sql
 
Mono Develop
Mono DevelopMono Develop
Mono Develop
 
PERSISTENCIA BASADA EN ARCHIVOS
PERSISTENCIA BASADA EN ARCHIVOSPERSISTENCIA BASADA EN ARCHIVOS
PERSISTENCIA BASADA EN ARCHIVOS
 
Tipos de archivo
Tipos de archivoTipos de archivo
Tipos de archivo
 
Manejo de eventos en java
Manejo de eventos en javaManejo de eventos en java
Manejo de eventos en java
 

Destacado (7)

antabla pdf
antabla pdfantabla pdf
antabla pdf
 
METODOS Y MODELOS POO
METODOS Y MODELOS POOMETODOS Y MODELOS POO
METODOS Y MODELOS POO
 
Trabajo de diseño de sistemas orientados a objetos
Trabajo de diseño de sistemas orientados a objetosTrabajo de diseño de sistemas orientados a objetos
Trabajo de diseño de sistemas orientados a objetos
 
Resumen de analisis y diseño de sistemas kendall & kendall
Resumen de analisis y diseño de sistemas  kendall & kendallResumen de analisis y diseño de sistemas  kendall & kendall
Resumen de analisis y diseño de sistemas kendall & kendall
 
Planificación de proyectos de software
Planificación de proyectos de softwarePlanificación de proyectos de software
Planificación de proyectos de software
 
Proyecto de software
Proyecto de softwareProyecto de software
Proyecto de software
 
Programación Orientada a Objetos - Resumen
Programación Orientada a Objetos - ResumenProgramación Orientada a Objetos - Resumen
Programación Orientada a Objetos - Resumen
 

Similar a Trabajo poo

Paradigma de Programación Orientada a Objetos
Paradigma de Programación Orientada a ObjetosParadigma de Programación Orientada a Objetos
Paradigma de Programación Orientada a Objetos
Jose Sanchez
 
Programacion orientada objetos-1
Programacion orientada objetos-1Programacion orientada objetos-1
Programacion orientada objetos-1
Scott Chavez
 
Programacion estructurada en objetos
Programacion estructurada en objetosProgramacion estructurada en objetos
Programacion estructurada en objetos
Angel Ordoñez
 
Programación orientada a objetos
Programación orientada a objetosProgramación orientada a objetos
Programación orientada a objetos
Marcelo Brocel
 
Programación orientada a objeto
Programación orientada a objetoProgramación orientada a objeto
Programación orientada a objeto
HRS1993
 
Programación orientada a objetos
Programación orientada a objetosProgramación orientada a objetos
Programación orientada a objetos
Carlos Esteves
 
Programación orientada a objetos
Programación orientada a objetosProgramación orientada a objetos
Programación orientada a objetos
Carlos Esteves
 

Similar a Trabajo poo (20)

Introducción a la P.O.O en Introducción a la Programación
Introducción a la P.O.O en Introducción a la ProgramaciónIntroducción a la P.O.O en Introducción a la Programación
Introducción a la P.O.O en Introducción a la Programación
 
LABORATORIO DE PROGRAMACIÓN I
LABORATORIO DE PROGRAMACIÓN ILABORATORIO DE PROGRAMACIÓN I
LABORATORIO DE PROGRAMACIÓN I
 
Paradigma de Programación Orientada a Objetos
Paradigma de Programación Orientada a ObjetosParadigma de Programación Orientada a Objetos
Paradigma de Programación Orientada a Objetos
 
Trabajo investigativo sobre la programación orientada a objetos y java
Trabajo investigativo sobre la programación orientada a objetos y javaTrabajo investigativo sobre la programación orientada a objetos y java
Trabajo investigativo sobre la programación orientada a objetos y java
 
Importancia, uso y caso de estudio del paradigma orientado a objetos
Importancia, uso y caso de estudio del paradigma orientado a objetosImportancia, uso y caso de estudio del paradigma orientado a objetos
Importancia, uso y caso de estudio del paradigma orientado a objetos
 
Programacion orientada objetos-1
Programacion orientada objetos-1Programacion orientada objetos-1
Programacion orientada objetos-1
 
Metodología orientada a objetos
Metodología orientada a objetosMetodología orientada a objetos
Metodología orientada a objetos
 
Programacion estructurada en objetos
Programacion estructurada en objetosProgramacion estructurada en objetos
Programacion estructurada en objetos
 
Poo3
Poo3Poo3
Poo3
 
Programación orientada a objetos
Programación orientada a objetosProgramación orientada a objetos
Programación orientada a objetos
 
Poo
PooPoo
Poo
 
Importancia Diseño Orientado a Objetos
Importancia Diseño Orientado a ObjetosImportancia Diseño Orientado a Objetos
Importancia Diseño Orientado a Objetos
 
Introducción a la Programación Orientada a Objetos
Introducción a la Programación Orientada a ObjetosIntroducción a la Programación Orientada a Objetos
Introducción a la Programación Orientada a Objetos
 
Guía Teórica POO
Guía Teórica POOGuía Teórica POO
Guía Teórica POO
 
Paradigma
Paradigma Paradigma
Paradigma
 
Programación orientada a objeto
Programación orientada a objetoProgramación orientada a objeto
Programación orientada a objeto
 
Expo
ExpoExpo
Expo
 
Programación orientada a objetos
Programación orientada a objetosProgramación orientada a objetos
Programación orientada a objetos
 
Programación orientada a objetos
Programación orientada a objetosProgramación orientada a objetos
Programación orientada a objetos
 
Orientado a objeto
Orientado a objetoOrientado a objeto
Orientado a objeto
 

Más de Renny Centeno (14)

Software especializado
Software especializadoSoftware especializado
Software especializado
 
Guias
GuiasGuias
Guias
 
Directorios
DirectoriosDirectorios
Directorios
 
Meta buscadores
Meta buscadoresMeta buscadores
Meta buscadores
 
Buscadores
BuscadoresBuscadores
Buscadores
 
type object
type objecttype object
type object
 
trabajo pharo
trabajo pharotrabajo pharo
trabajo pharo
 
trabajo anotaciones
trabajo anotacionestrabajo anotaciones
trabajo anotaciones
 
programacion iterativa trabajo
programacion iterativa trabajoprogramacion iterativa trabajo
programacion iterativa trabajo
 
programacion iterativa
programacion iterativaprogramacion iterativa
programacion iterativa
 
type object
type objecttype object
type object
 
Anotaciones
AnotacionesAnotaciones
Anotaciones
 
Pharo presentacion
Pharo presentacionPharo presentacion
Pharo presentacion
 
programacion orientada a objetos
programacion orientada a objetosprogramacion orientada a objetos
programacion orientada a objetos
 

Último

INSUMOS QUIMICOS Y BIENES FISCALIZADOS POR LA SUNAT
INSUMOS QUIMICOS Y BIENES FISCALIZADOS POR LA SUNATINSUMOS QUIMICOS Y BIENES FISCALIZADOS POR LA SUNAT
INSUMOS QUIMICOS Y BIENES FISCALIZADOS POR LA SUNAT
evercoyla
 
ANALISIS Y DISEÑO POR VIENTO, DE EDIFICIOS ALTOS, SEGUN ASCE-2016, LAURA RAMIREZ
ANALISIS Y DISEÑO POR VIENTO, DE EDIFICIOS ALTOS, SEGUN ASCE-2016, LAURA RAMIREZANALISIS Y DISEÑO POR VIENTO, DE EDIFICIOS ALTOS, SEGUN ASCE-2016, LAURA RAMIREZ
ANALISIS Y DISEÑO POR VIENTO, DE EDIFICIOS ALTOS, SEGUN ASCE-2016, LAURA RAMIREZ
gustavoiashalom
 
LA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdf
LA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdfLA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdf
LA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdf
bcondort
 
tesis maíz univesidad catolica santa maria
tesis maíz univesidad catolica santa mariatesis maíz univesidad catolica santa maria
tesis maíz univesidad catolica santa maria
susafy7
 

Último (20)

Controladores Lógicos Programables Usos y Ventajas
Controladores Lógicos Programables Usos y VentajasControladores Lógicos Programables Usos y Ventajas
Controladores Lógicos Programables Usos y Ventajas
 
PostgreSQL on Kubernetes Using GitOps and ArgoCD
PostgreSQL on Kubernetes Using GitOps and ArgoCDPostgreSQL on Kubernetes Using GitOps and ArgoCD
PostgreSQL on Kubernetes Using GitOps and ArgoCD
 
CONEXIONES SERIE, PERALELO EN MÓDULOS FOTOVOLTAICOS.pdf
CONEXIONES SERIE, PERALELO EN MÓDULOS FOTOVOLTAICOS.pdfCONEXIONES SERIE, PERALELO EN MÓDULOS FOTOVOLTAICOS.pdf
CONEXIONES SERIE, PERALELO EN MÓDULOS FOTOVOLTAICOS.pdf
 
Lineamientos del Plan Oferta y Demanda sesión 5
Lineamientos del Plan Oferta y Demanda sesión 5Lineamientos del Plan Oferta y Demanda sesión 5
Lineamientos del Plan Oferta y Demanda sesión 5
 
INSUMOS QUIMICOS Y BIENES FISCALIZADOS POR LA SUNAT
INSUMOS QUIMICOS Y BIENES FISCALIZADOS POR LA SUNATINSUMOS QUIMICOS Y BIENES FISCALIZADOS POR LA SUNAT
INSUMOS QUIMICOS Y BIENES FISCALIZADOS POR LA SUNAT
 
Sesion 03 Formas de absorcion de agua.pptx
Sesion 03 Formas de absorcion de agua.pptxSesion 03 Formas de absorcion de agua.pptx
Sesion 03 Formas de absorcion de agua.pptx
 
Tinciones simples en el laboratorio de microbiología
Tinciones simples en el laboratorio de microbiologíaTinciones simples en el laboratorio de microbiología
Tinciones simples en el laboratorio de microbiología
 
Ficha Tecnica de Ladrillos de Tabique de diferentes modelos
Ficha Tecnica de Ladrillos de Tabique de diferentes modelosFicha Tecnica de Ladrillos de Tabique de diferentes modelos
Ficha Tecnica de Ladrillos de Tabique de diferentes modelos
 
DIAPOSITIVAS DE SEGURIDAD Y SALUD EN EL TRABAJO
DIAPOSITIVAS DE SEGURIDAD Y SALUD EN EL TRABAJODIAPOSITIVAS DE SEGURIDAD Y SALUD EN EL TRABAJO
DIAPOSITIVAS DE SEGURIDAD Y SALUD EN EL TRABAJO
 
ANALISIS Y DISEÑO POR VIENTO, DE EDIFICIOS ALTOS, SEGUN ASCE-2016, LAURA RAMIREZ
ANALISIS Y DISEÑO POR VIENTO, DE EDIFICIOS ALTOS, SEGUN ASCE-2016, LAURA RAMIREZANALISIS Y DISEÑO POR VIENTO, DE EDIFICIOS ALTOS, SEGUN ASCE-2016, LAURA RAMIREZ
ANALISIS Y DISEÑO POR VIENTO, DE EDIFICIOS ALTOS, SEGUN ASCE-2016, LAURA RAMIREZ
 
Resistencia-a-los-antimicrobianos--laboratorio-al-cuidado-del-paciente_Marcel...
Resistencia-a-los-antimicrobianos--laboratorio-al-cuidado-del-paciente_Marcel...Resistencia-a-los-antimicrobianos--laboratorio-al-cuidado-del-paciente_Marcel...
Resistencia-a-los-antimicrobianos--laboratorio-al-cuidado-del-paciente_Marcel...
 
2. Cristaloquimica. ingenieria geologica
2. Cristaloquimica. ingenieria geologica2. Cristaloquimica. ingenieria geologica
2. Cristaloquimica. ingenieria geologica
 
nomenclatura de equipo electrico en subestaciones
nomenclatura de equipo electrico en subestacionesnomenclatura de equipo electrico en subestaciones
nomenclatura de equipo electrico en subestaciones
 
Desigualdades e inecuaciones-convertido.pdf
Desigualdades e inecuaciones-convertido.pdfDesigualdades e inecuaciones-convertido.pdf
Desigualdades e inecuaciones-convertido.pdf
 
CALCULO DE ENGRANAJES RECTOS SB-2024.pptx
CALCULO DE ENGRANAJES RECTOS SB-2024.pptxCALCULO DE ENGRANAJES RECTOS SB-2024.pptx
CALCULO DE ENGRANAJES RECTOS SB-2024.pptx
 
Estadística Anual y Multianual del Sector Eléctrico Ecuatoriano
Estadística Anual y Multianual del Sector Eléctrico EcuatorianoEstadística Anual y Multianual del Sector Eléctrico Ecuatoriano
Estadística Anual y Multianual del Sector Eléctrico Ecuatoriano
 
LA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdf
LA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdfLA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdf
LA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdf
 
Presentación Instrumentos de Medicion Electricos.pptx
Presentación Instrumentos de Medicion Electricos.pptxPresentación Instrumentos de Medicion Electricos.pptx
Presentación Instrumentos de Medicion Electricos.pptx
 
Sistemas de Ecuaciones no lineales-1.pptx
Sistemas de Ecuaciones no lineales-1.pptxSistemas de Ecuaciones no lineales-1.pptx
Sistemas de Ecuaciones no lineales-1.pptx
 
tesis maíz univesidad catolica santa maria
tesis maíz univesidad catolica santa mariatesis maíz univesidad catolica santa maria
tesis maíz univesidad catolica santa maria
 

Trabajo poo

  • 1. 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
  • 2. Índice Introducció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
  • 3. 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.
  • 4. 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).
  • 5. 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
  • 6. 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
  • 7. 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.
  • 8.  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”.
  • 9. 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
  • 10. 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.
  • 11. 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.
  • 12. 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/Profa Yusneyi_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]