Escolar Documentos
Profissional Documentos
Cultura Documentos
INGENIERIA DE SISTEMAS
INTRODUCCION
De esta forma, un objeto contiene toda la información, (los denominados atributos) que permite definirlo e
identificarlo frente a otros objetos pertenecientes a otras clases (e incluso entre objetos de una misma clase,
al poder tener valores bien diferenciados en sus atributos). A su vez, dispone de mecanismos de interacción
(los llamados métodos) que favorecen la comunicación entre objetos (de una misma clase o de distintas), y
en consecuencia, el cambio de estado en los propios objetos. Esta característica lleva a tratarlos como
unidades indivisibles, en las que no se separan (ni deben separarse) información (datos) y procesamiento
(métodos).
Esto difiere de los lenguajes imperativos tradicionales, en los que los datos y los procedimientos están
separados y sin relación, ya que lo único que se busca es el procesamiento de unos datos de entrada para
obtener otros de salida. La programación estructurada anima al programador a pensar sobre todo en
términos de procedimientos o funciones, y en segundo lugar en las estructuras de datos que esos
procedimientos manejan. Los programadores de lenguajes imperativos escriben funciones y después les
pasan datos. Los programadores que emplean lenguajes orientados a objetos definen objetos con datos y
métodos y después envían mensajes a los objetos diciendo qué realicen esos métodos en sí mismos.
La Programación estructurada fija su atención en el conjunto de acciones que manipulan el flujo de datos,
mientras que la OOP se fija en la interrelación que existe entre los datos y las acciones a realizar con ellos.
•Descomposición funcional: el sistema es considerado una unidad funcional que se disgrega en procesos.
•El resultado del proceso de abstracción para la solución de un problema macro lo constituyen pequeños
subprogramas.
•Un problema macro se subdivide en unidades más pequeñas llamadas procesos, estos se pueden distribuir
entre diferentes personas que se vean involucradas en la solución de un problema y así efectuar los
desarrollos de software de una manera más rápida y eficiente.
•Los procesos son la parte central de este modelo pues a partir de estos se manejan las variantes (datos)
que solucionarán el problema.
•Los procedimientos empleados en una aplicación pueden reutilizarse teniendo cuidado en el manejo de los
datos.
•Los procesos que se modelan en el desarrollo de un problema plasman las operaciones necesarias para
resolverlo
• Descomposición en objetos. El sistema es considerado un objeto o conjunto de objetos. Los cuales son
el resultado del proceso de abstracción para la solución del problema macro.
• Dado que un problema macro puede ser dividido en objetos, estos pueden ser tratados por diferentes
personas que luego lo integraran para dar la solución final.
• Los datos (estados) son la parte central del modelo y los métodos que los modifican muestran el
comportamiento del objeto.
• El mantenimiento de programas y aplicaciones generalmente son fáciles de realizar.
• Los objetos que se modelan en el desarrollo de un sistema se ajustan a la realidad que representa el
problema, este puede representare como un objeto o conjunto de objetos abstractos.
• El modelo orientado a objetos no es una técnica de programación sino un medio de plasmar el mundo
real.
PROGRAMACION ORIENTADO A OBJETOS
INGENIERIA DE SISTEMAS
ORIGEN
Los conceptos de la programación orientada a objetos tienen origen en Simula 67, un lenguaje diseñado para
hacer simulaciones, creado por Ole-Johan Dahl y Kristen Nygaard del Centro de Cómputo Noruego en Oslo.
Según se informa, la historia es que trabajaban en simulaciones de naves, y fueron confundidos por la
explosión combinatoria de cómo las diversas cualidades de diversas naves podían afectar unas a las otras. La
idea ocurrió para agrupar los diversos tipos de naves en diversas clases de objetos, siendo responsable cada
clase de objetos de definir sus propios datos y comportamiento. Fueron refinados más tarde en Smalltalk,
que fue desarrollado en Simula en Xerox PARC (y 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 lugar de tener un sistema basado en programas estáticos.
El aspecto central en la computación no son las funciones sino los objetos. Pensemos cómo se organiza la
actividad cotidiana en el mundo real. Cuando necesitamos resolver algún problema buscamos el agente
adecuado y le solicitamos el servicio requerido. Es responsabilidad del agente resolver nuestra solicitud y no
necesitamos saber cómo se hará. Un ejemplo lo encontramos en el hecho de comprar el periódico: buscamos
un kiosco y le indicamos al encargado el nombre del periódico que deseamos y el nos lo da, acabando la
compra con la entrega del dinero. Normalmente no comprobamos que el periódico es del día actual y no el
del día anterior, ya que es responsabilidad de la persona que nos atendió que esto sea así.
En la programación orientada a objetos la acción se produce por el paso de un mensaje a un objeto (agente).
El objeto receptor, en caso de aceptar el mensaje, llevará a cabo la acción indicada. Aunque se pueda ver el
paso de mensajes como una llamada a una función, existen diferencias importantes: el mensaje posee un
PROGRAMACION ORIENTADO A OBJETOS
INGENIERIA DE SISTEMAS
receptor y la interpretación de este depende del receptor. El efecto de un mensaje puede variar en función
del receptor.
Cada objeto es un ejemplar o instancia de una clase. Es la clase de un objeto la que establece las
características de este y a qué mensajes puede responder y de qué forma. Todos los objetos de una clase
usan el mismo método en respuesta a mensajes similares. Así, el comportamiento de un objeto queda
determinado por la clase a la que pertenece. Volviendo al ejemplo anterior, si otro día nos dirigimos a otro
kiosco y nos atiende una persona distinta, sabemos que todo va a funcionar de manera muy parecida.
Sabemos que todas las personas que tienen un kiosco nos atenderán de forma similar, y sabemos que
información tenemos que darles para obtener el periódico, revista, etc. que deseamos.
Así la computación puede verse como simulación. Se crea una especie de universo con una serie de
elementos (objetos) que tienen definidas las posibilidades de interacción estableciéndose el comportamiento
de cada uno de esos elementos. La computación se lleva a cabo por interacción entre estos elementos.
Básicamente se crean una serie de objetos y se les van aplicando una serie de mensajes, y no existe un
programa principal como se conoce normalmente. Además la parte más importante son los datos, los objetos
y no las funciones como en otras metodologías de programación.
Para aquel que no es un programador, Orientación a Objetos significa algo bastante familiar: considerar al
mundo como un conjunto de entidades u objetos que están relacionados y se comunican entre ellos. Esta es
la forma en que la gente normal ve el mundo, así es que este pensamiento tiene intrínsecamente sentido. La
Orientación a Objetos se basa en estas ideas: un programa es un mundo que representa un subconjunto del
mundo real. La estructura del programa se simplifica en gran medida si cada una de las entidades u objetos
del problema que se está modelando corresponde directamente con un objeto que se puede manipular
internamente en un programa.
• OBJETOS (Sinónimo de instancia). Es la abstracción de alguna cosa en el dominio del problema que
refleja la capacidad de un sistema de alcanzar información alrededor de él. Los objetos, por lo tanto,
son entidades que tienen atributos (datos) y formas de comportamiento (procedimientos) particulares.
Las aplicaciones pueden constar de diferentes clases de objetos. Un objeto pasivo es el que actúa
solamente bajo petición. Los objetos activos efectúan el seguimiento de los sucesos que ocurren en
una aplicación y actúan de forma autónoma. Corresponden a los objetos reales del mundo que nos
rodea, o a objetos internos del sistema (del programa).
• CLASE. Una clase es una descripción de un conjunto de objetos casi idénticos. Una clase consta de
métodos y datos que resumen las características comunes de los objetos, incluyendo una descripción
de cómo crear un nuevo objeto de la clase. En otras palabras, las clases contienen los anteproyectos
para crear objetos. Si se han identificado ciertas características comunes a un grupo de objetos, las
cuales los generalizan en su apariencia y comportamiento encontramos una definición de tipo o clase de
objetos. Las clases son una descripción abstracta de un grupo de objetos que comparten características
(atributos) y operaciones (métodos).
PROGRAMACION ORIENTADO A OBJETOS
INGENIERIA DE SISTEMAS
Redefiniendo un objeto. Un objeto es un modelo o instancia de una clase. Ejemplos de estos conceptos:
Una clase es un molde que define los datos y procedimientos que actúan sobre esos datos y los objetos serán
los elementos producidos por ese molde.
• 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, y/o la generación
de un "evento" con un nuevo mensaje para otro objeto del sistema.
• Evento: 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 cuyo valor puede ser alterado por la
ejecución de algún método.
• Estado interno: es una propiedad invisible de los objetos, 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).
CARACTERÍSTICAS DE LA POO
• Abstracción: 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
PROGRAMACION ORIENTADO A OBJETOS
INGENIERIA DE SISTEMAS
también ser abstraídos y cuando lo están, una variedad de técnicas son requeridas para ampliar una
abstracción. El concepto de abstracción es un buen punto de partida para hablar de orientación a
objetos. La abstracción se puede definir como "el proceso de formulación de conceptos generalizados al
extraer cualidades comunes de ejemplos específicos". La idea es poder manejar la complejidad.
Inicialmente se utiliza la abstracción para entender aspectos complejos y posteriormente, para
solucionar los problemas complejos. Rumbaugh define la abstracción como el "proceso de centrarse en
los aspectos esenciales inherentes de una entidad, e ignorar sus propiedades accidentales". Dicho de
otro modo, hay que centrarse en lo que un objeto es y lo que hace antes de pensar en su implantación.
La abstracción debe enfocarse más en qué es un objeto y qué hace antes de pensar en su
implementación. Por ejemplo, un vehículo puede abstraerse como un objeto que sirve para desplazarse
a mayor velocidad sin importar cómo lo haga. Es posible utilizar el objeto vehículo sin conocer nada de
su motor y de la forma como éste trabaja, sin saber que existe un carburador y unas bujías y muchas
otras partes más que hacen que el vehículo se desplace y brinde el servicio esperado. La abstracción
hace sencillo operar con los objetos. Una característica de la abstracción es que un objeto puede
abstraerse de diversas formas, dependiendo del observador. Así el mismo vehículo puede ser visto
como un objeto de colección por un coleccionista, una herramienta de trabajo por un corredor
profesional, una mercancía por un vendedor, etc.
• Encapsulamiento: Se refiere al hecho de que ningún programador ni de ninguna otra parte de un
programa se pueda tener acceso a los datos de un objeto en forma directa, sino a través de los
procedimientos del objeto. . Cada objeto está aislado del exterior, es un módulo natural, y cada tipo de
objeto expone una 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. 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.
PERSONA
ALUMNO DOCENTE
PROGRAMACION ORIENTADO A OBJETOS
INGENIERIA DE SISTEMAS
VEHICULO
• Poliformismo: El polimorfismo es una nueva característica aportada por la OOP. Esta propiedad indica
la posibilidad de definir varias operaciones con el mismo nombre, diferenciándolas únicamente en los
parámetros de entrada. Dependiendo del objeto que se introduzca como parámetro de entrada, se
elegirá automáticamente cual de las operaciones se va a realizar. Es cuando una clase tiene varios
procedimientos con el mismo nombre, pero con distinto tipo y/o número de argumentos.
Los objetos tienen la posibilidad de actuar, la acción sucede cuando un objeto recibe un mensaje, que es, una
solicitud que pide al objeto que se comporte de alguna forma. Cuando se ejecutan los programas orientados
a objetos, los objetos reciben, interpretan y responden a mensajes procedentes de otros objetos. Los
mensajes pueden contener información para clasificar una solicitud. El objeto emisor del mensaje no necesita
conocer la forma en que el objeto receptor está llevando a cabo la solicitud, sola-mente
conoce que se está sucediendo.
Los procedimientos residen en el objeto y determinan cómo actúa el objeto cuando recibe un mensaje. De
hecho, los métodos proporcionan el único mecanismo para cambiar los valores de las variables del objeto. (A
este hecho se le conoce como Encapsulamiento). Los mensajes que reciben el objeto son los únicos
conductos que conectan al objeto con el mundo exte-rior.
Estas características de los objetos confieren a la orientación a objetos su ventaja: la orientación a objetos
fomenta la modularidad haciendo muy claras las fronteras entre objetos, explícita la comunicación entre los
mismo y oculta los detalles de la realización.
En un programa con orientación a objetos ocurren tres sucesos:
1. Se crean los objetos cuando se necesitan.
2. Los mensajes se mueven de un objeto a otro a medida que el programa procesa internamente
información o responde a la entrada del usuarios.
CONSTRUCCIÓN DE CLASES
Tal como hemos definido con anterioridad, una clase de objeto describe a un grupo de objetos con similares:
1. Propiedades (atributos)
2. Comportamientos (operaciones)
3. Relaciones con otros objetos
La abreviatura clase es utilizada en lugar de clase de objetos. Los objetos difieren en los valores asociados a
sus atributos definidos dentro de la clase. Cada objeto <<conoce>> cuál es su clase. La mayoría de los
lenguajes orientados a objetos pueden determinar a que clase pertenece un objeto durante la ejecución del
programa.
Defina las operaciones a partir de los objetos, examinando las distintas operaciones asociadas a un conjunto
de datos. Los atributos del objeto se deben definir de tal manera que éstos satisfagan todos los
requerimientos de cada una de las operaciones.
A estas operaciones añada dos más: Crear y Destruir. Estas operaciones nos servirán para inicializar y
borrar el objeto dentro de la aplicación. A partir de la definición de las propiedades, un objeto siempre debe
ser capaz de responder a estas tres preguntas: ¿Qué soy ?, ¿Qué hago? ¿Qué dejo ver al resto del mundo?
Algunas de las operaciones sólo se aplicarán a determinados objetos pertenecientes a las clases. Hemos
visto que a través de la herencia podemos <<especializar>> un sub conjunto de objetos creando una sub-
clase.
Únicamente aquellas operaciones que sean comunes a todos los objetos de la clase deben incluirse dentro de
las operaciones de la clase. El resto, que corresponden a las operaciones de sub-Grupos de objetos, se
deben definir dentro de la especializaciones de la clase.
Una vez identificados los objetos, defina los atributos de la clase. Un atributo es un valor almacenado en los
objetos de la clase.
REPRESENTACION DE CLASES
Las clases se pueden representar de forma grafica los objetos que conforman nuestra aplicación, cada clase
se representa por una caja en la que se realizan tres divisiones.
PROGRAMACION ORIENTADO A OBJETOS
INGENIERIA DE SISTEMAS
EJEMPLO:
Representación de un objeto vehículo, se puede observar que esta es muy general y que podría aplicarse a
cualquier clase de vehículo, pero aun así brinda la información necesaria acerca del objeto que se modela.
Podría realizarse un diseño mas especifico para un vehículo de carreras el cual incluiría los atributos y
métodos que diferencian este tipo de vehículo de los demás.
TOMADO DE:
• es.wikipedia.org/wiki/Programación_orientada_a_objetos
• www.esimez.ipn.mx/acadcompu/apuntes_notas%20breves/ programacion_orientada_objetos.pdf
• http://panoramix.univ-paris1.fr/CRINFO/dmrg/MEE97/misop007/
• http://ww.cs.uwa.edu.au/teaching/cs220.oop/readings1997/whyoop.html