UNIVERSIDAD TECNOLÓGICA DE PANAMÁ FACULTAD DE

Anuncio
UNIVERSIDAD TECNOLÓGICA DE PANAMÁ
FACULTAD DE INGENIERÍA DE SISTEMAS COMPUTACIONALES
Departamento de Computación y Simulación de Sistemas
Licenciatura en Ingeniería en Sistemas y Computación
Investigación #2
“La Programación Orientada a Objetos”
CURSO
Desarrollo de Software
ESTUDIANTES
Alba Muñoz
8-865-518
Amelia González
8-855-1945
Katherine Benitez
8-848-2113
Oscar Gómez
8-848-911
Héctor Pérez
8-839-2020
Anthony Vargas
8-826-1082
Giancarlo Remón
8-849-367
FACILITADORA:
Dra. Addys C. de Lam
PANAMÁ, 2010
CONTENIDO
Introducción
Objetivos
Contenido
1. ¿Qué es la programación orientada objeto?
2. Antecedentes de la programación orientada a objeto
3. Conceptos fundamentales
4. Características
5. Ventajas
6. Los objetos
6.1. Definición
6.2. Características.
7. Ejemplo de Lenguajes orientados a objetos
8. Mapa conceptual del contenido de la investigación.
Conclusiones
Glosario
Bibliográfica
INTRODUCCIÓN
Por lo general, en todos los aspectos de la vida existen diferentes métodos y/o caminos
para llegar hacia un mismo fin, y la informática, no iba a ser la excepción. Así como existe
la programación estructurada, podemos encontrar la programación orientada a objetos, que
sigue otras rubricás.
Podemos definir a la programación orientada a objeto (POO) como un estilo de
programación que utiliza objetos como bloque esencial de construcción. Y sus elementos
básicos son: objetos, mensajes, métodos y clases.
El objetivo de la programación orientada a objetos son el mejoramiento de la
productividad del programador por medio del manejo de la complejidad del software a
través del uso de clases y sus objetos asociados.
La programación orientada a objetos aunque no es la solución definitiva, construye
programas complejos a partir de entidades de programas más simples llamados objetos, que
son instancias reales o muestras de clases, permitiendo heredar datos y códigos de
aplicaciones existentes. Esto mejora la productividad del programador y facilita la
extensión y la re-utilización de clases en otras aplicaciones con mínima modificación al
código original.
OBJETIVOS
1. Objetivos Generales
• Comparar la programación orientada a objetos con otras metodologías de programación, y
de tal forma comprender las ventajas que tiene, respecto a la programación estructurada.
• Comprender que la POO, es una extensión natural de la actual tecnología de
programación y representa un enfoque nuevo y distinto al tradicional.
2. Objetivos Específicos
• Entender qué es un objeto, y como funciona dentro de la programación orientada a objetos.
• Identificar y comprender los antecedentes de la programación orientada a objetos.
• Definir los conceptos que involucran la programación orientada a objetos.
CONTENIDO
“LA PROGRAMACIÓN
ORIENTADA A OBJETOS”
1. ¿Qué es la programación orientada objeto?
Se puede definir POO como una técnica o estilo de programación que utiliza objetos como
bloque esencial de construcción. Al igual que los tipos de datos definidos por el usuario, un
objeto es una colección de datos, junto con las funciones asociadas, utilizadas para operar sobre
esos datos. Sin embargo la potencia real de los objetos reside en las propiedades que soportan:
herencia, encapsulación y polimorfismo, junto con los conceptos básicos de objetos, clases,
métodos y mensajes.
2. Antecedentes de la programación orientada a objeto
Los conceptos de la programación orientada a objetos tienen origen en Simula 67, un
lenguaje diseñado para hacer simulaciones. Fueron refinados más tarde en Smalltalk, que fue
desarrollado en Simula en Xerox PARC (cuya primera versión fue escrita sobre Basic) pero
diseñado para ser un sistema completamente dinámico en el cual los objetos se podrían crear y
modificar "en marcha" (en tiempo de ejecución) en lugar de tener un sistema basado en
programas estáticos.
La programación orientada a objetos tomó posición como el estilo de programación
dominante a mediados de los años ochenta, en gran parte debido a la influencia de C++, una
extensión del lenguaje de programación C. Su dominación fue consolidada gracias al auge de
las Interfaces gráficas de usuario, para las cuales la programación orientada a objetos está
particularmente bien adaptada. En este caso, se habla también de programación dirigida por
eventos.
Las características de orientación a objetos fueron agregadas a muchos lenguajes
existentes durante ese tiempo, incluyendo Ada, BASIC, Lisp, Pascal, entre otros. La adición de
estas características a los lenguajes que no fueron diseñados inicialmente para ellas condujo a
menudo a problemas de compatibilidad y en la capacidad de mantenimiento del código. Los
lenguajes orientados a objetos "puros", por su parte, carecían de las características de las
cuales muchos programadores habían venido a depender. Para saltar este obstáculo, se
hicieron muchas tentativas para crear nuevos lenguajes basados en métodos orientados a
objetos, pero permitiendo algunas características imperativas de maneras "seguras". El Eiffel
de Bertrand Meyer fue un temprano y moderadamente acertado lenguaje con esos objetivos
pero ahora ha sido esencialmente reemplazado por Java, en gran parte debido a la aparición
de Internet, y a la implementación de la máquina virtual de Java en la mayoría de
navegadores. PHP en su versión 5 se ha modificado, soporta una orientación completa a
objetos, cumpliendo todas las características propias de la orientación a objetos.
3. Conceptos fundamentales
La programación orientada a objetos es una forma de programar que trata de encontrar una
solución a estos problemas. Introduce nuevos conceptos, que superan y amplían conceptos
antiguos ya conocidos. Entre ellos destacan los siguientes:
• 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: 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 publicas declaradas en C.
• 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.
• 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.
• 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.
• 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).
• Componentes de un objeto: atributos, identidad, relaciones y métodos.
• Identificación de un objeto: un objeto se representa por medio de una tabla o entidad que
esté compuesta por sus atributos y funciones correspondientes.
4. Características
• Abstracción: Es la capacidad de separar las características esenciales de un objeto, donde
se capturan sus comportamientos. Cada objeto sirve como modelo de un "algo" 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 se
necesitan 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.
• Ocultamiento: Cada objeto está aislado del exterior, y cada tipo de objeto expone una puerta
de acceso o interfaz a otros objetos que especifica 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.
• Herencia: las clases no están aisladas, sino que se relacionan entre sí, formando una
jerarquía de clasificación. La herencia nos permite, entre otras cosas, evitar tener que escribir
el mismo código una y otra vez, puesto que al definir que una categoría (que en programación
llamaremos clase) pertenece a otra, automáticamente estamos atribuyéndoles las
características generales de la primera, sin tener que definirlas de nuevo. 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.
5. Ventajas
La POO tiene las siguientes ventajas respecto a otros paradigmas de la programación:
• Fomenta la reutilización y extensión del código.
• Facilita el mantenimiento del software.
• Permite crear sistemas más complejos.
• Agiliza el desarrollo de software.
• Facilita la creación de programas visuales.
• Facilita el trabajo en equipo.
• Relacionar el sistema al mundo real.
UNIFORMIDAD: Ya que es la representación de los objetos lleva implica tanto el análisis
como el diseño y la codificación de los mismos.
COMPRENSION: Tanto los datos que componen los objetos, como los procedimientos que
los manipulan, están agrupados en clases, que se corresponden con las estructuras de
información que el programa trata.
FLEXIBILIDAD: Al tener relacionados los procedimientos que manipulan los datos con los
datos a tratar, cualquier cambio que se realice sobre ellos quedará reflejado automáticamente
en cualquier lugar donde estos datos aparezcan.
ESTABILIDAD: Dado que permite un tratamiento diferenciado de aquellos objetos que
permanecen constantes en el tiempo sobre aquellos que cambian con frecuencia permite aislar
las partes del programa que permanecen inalterables en el tiempo
RAPIDEZ: En este aspecto, los lenguajes orientados a objetos muestran una clara desventaja
frente a otros lenguajes que se acercan más a las especificaciones de la máquina. Si la rapidez
es crítica, puede elegir un lenguaje de programación como C++, que aporta toda la
funcionalidad de los lenguajes orientados a objetos con la rapidez y la compatibilidad de C.
GESTION DE RECURSOS: Las aplicaciones orientadas a objetos demandan normalmente
más recursos del sistema que las aplicaciones procedurales. La creación dinámica de objetos,
que ocupa un lugar en la memoria del ordenador, puede acarrear graves problemas. Una de
las soluciones, que incluye alguno delos lenguajes OOP, es liberar a menudo el espacio que los
objetos dejan de utilizar. Este procedimiento de optimización como garbage collection
(recolección de basura, implementado en java), minimiza los efecto de la creación dinámica de
objetos.
6. Los objetos
6.1. Definición
Un objeto en POO representa alguna entidad de la vida real, es decir, alguno de los objetos
que pertenecen al negocio con que estamos trabajando o al problema con el que nos estamos
enfrentando, y con los que podemos interactuar. A través del estudio de ellos se adquiere el
conocimiento necesario para, mediante la abstracción y la generalización, agruparlos según
sus características en conjuntos, estos conjuntos determinan las clases de objetos con las que
estamos trabajando.
6.2. Características
Los objetos tienen características fundamentales que nos permiten conocerlos mediante la
observación, identificación y el estudio posterior de su comportamiento; estas características
son:
• Identidad: propiedad que permite a un objeto diferenciarse de otros. La identidad
de los objetos sirve para comparar si dos objetos son iguales o no. No es raro encontrar que en
muchos lenguajes de programación la identidad de un objeto esté determinada por la dirección
de memoria de la computadora en la que se encuentra el objeto, pero este comportamiento
puede ser variado re-definiendo la identidad del objeto a otra propiedad.
• Comportamiento: El comportamiento de un objeto está directamente relacionado
con su funcionalidad y determina las operaciones que este puede realizar o a las que puede
responder ante mensajes enviados por otros objetos. La funcionalidad de un objeto está
determinada, primariamente, por su responsabilidad.
• Estado: El estado de un objeto se refiere al conjunto de los valores de sus atributos
en un instante de tiempo dado. El comportamiento de un objeto puede modificar el estado de
este. Cuando una operación de un objeto modifica su estado se dice que esta tiene "efecto
colateral".
7. Ejemplo de Lenguajes orientados a objetos
LENGUAJE DE PROGRAMACIÓN
PROGRAMA
• C++
• JAVA
• Ruby
• Visual Basic . NET
Microsoft Visual Studio 2008 - Professional
• Python
8. Mapa Conceptual: “La Programación Orientada a Objetos”
BIBLIOGRAFÍA
BARRAZA, KROL, MELÉNDEZ, VELÁZQUEZ. “Introducción a la Programación Orientada a
Objetos”. Segunda Edición. Imprenta Universidad Tecnológica de Panamá.
WEB-BIBLIOGRAFÍA
• Programación orientada objeto
http://www.desarrolloweb.com/articulos/1330.php
• Antecedentes de la programación orientada a objeto
http://programarenc.webcindario.com/Cplus/capitulo1.htm
• Conceptos fundamentales
http://www.sc.ehu.es/sbweb/fisica/cursoJava/fundamentos/clases1/clases.htm
• Características
http://thefricky.wordpress.com/2007/12/28/programacion-orientada-a-objetos-caracteristicas-de-la-poo/
http://es.wikipedia.org/wiki/Programaci%C3%B3n_orientada_a_objetos#Caracter.C3.ADsticas_de_la_POO
• Ventajas
http://facilisweb.es/blog/?p=70
http://ar.answers.yahoo.com/question/index?qid=20090907143057AAEWt7n
• Objetos
http://es.wikipedia.org/wiki/Objeto_(programacion)
• Lenguajes orientados a objetos
http://es.wikipedia.org/wiki/Lenguaje_orientado_a_objetos
http://www.lenguajes-de-programacion.com/programacion-orientada-a-objetos.shtml
Descargar