Sie sind auf Seite 1von 9

PROGRAMACION ORIENTADO A OBJETOS

INGENIERIA DE SISTEMAS

INTRODUCCION A LA PROGRAMACION ORIENTADA OBJETOS(P00)

INTRODUCCION

La Programación Orientada a Objetos (POO) es un paradigma(Un paradigma es el conjunto de teorías,


estándares y métodos que representan una forma de organizar el conocimiento. Es, por lo tanto, una forma
de ver el mundo) de programación que define los programas en términos de "clases de objetos", objetos que
son entidades que combinan estado (es decir, datos), comportamiento (esto es, procedimientos o métodos) e
identidad (propiedad del objeto que lo diferencia del resto). La programación orientada a objetos expresa un
programa como un conjunto de estos objetos, que colaboran entre ellos para realizar tareas. Esto permite
hacer los programas y módulos más fáciles de escribir, mantener y reutilizar.

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.

•Generalmente se manejan muchos procesos lo cual hace largos códigos.

•El mantenimiento de los desarrollos deben efectuarse minuciosamente.

•Los procedimientos empleados en una aplicación pueden reutilizarse teniendo cuidado en el manejo de los
datos.

•Las operaciones se ajustan a las características propias de los lenguajes procedimentales.


PROGRAMACION ORIENTADO A OBJETOS
INGENIERIA DE SISTEMAS

•Los procesos que se modelan en el desarrollo de un problema plasman las operaciones necesarias para
resolverlo

PARADIGMA ORIENTADO A OBJETOS :

• 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.

La programación orientada a objetos tomó posición como la metodología 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
los cuales la programación orientada a objetos está particularmente bien adaptada. En este caso, se habla
también de programación orientada a eventos.

COMO PROGRAMAR CON POO

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.

• 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.
• 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 reimplementar su comportamiento. Esto
suele hacerse habitualmente agrupando los objetos en clases y estas en árboles o enrejados que
reflejan un comportamiento común. La herencia es un mecanismo para expresar similaridad entre
clases, simplificando definiciones de las clases similares previamente definidas. La herencia permite
crear nuevas clases llamadas subclases agregando solamente las diferencias con la clase. En otras
palabras la herencia es una partición en subclases más especializadas. El principio en que se basa
este concepto es de que las clases que se derivan de otras clase, comparten las características
comunes de la clase de la que descienden.

PERSONA

ALUMNO DOCENTE
PROGRAMACION ORIENTADO A OBJETOS
INGENIERIA DE SISTEMAS

VEHICULO

COCHE / SEDAN CAMION COCHE/ COUPE

• 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.

DESCRIPCIÓN DEL TÉRMINO COMUNICACIÓN CON MENSAJES.

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.

3. Se borran los objetos cuando ya no son necesarios y se recupera memoria.


PROGRAMACION ORIENTADO A OBJETOS
INGENIERIA DE SISTEMAS

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.

Identificar los objetos.


• El nombre de la aplicación a veces nos da la del nombre del objeto principal
• Los objetos software pueden imitar el mundo real, modelizando las propiedades de los objetos a través de
variables Cualquier propiedad de un objeto puede ser identificada dentro del objeto correspondiente a través
de variables.
• Los objetos no se han de corresponder siempre con objetos físicos, sino que también pueden ser
entidades que se utilizan dentro de la construcción del programa.
• Piense en el objeto en <<primera persona>>. Este truco nos puede identificar claramente los atributos y
sus operaciones asociadas: <<Soy un cuadrado y me muevo, giro, agrando y reduzco. Las partes que me
componen son los puntos de mis vértices>>.
• Una clase es un tipo de dato que puede ser usado para declarar objetos, de la misma forma que una
estructura es un tipo definido por el usuario que puede utilizarse para declarar variables.

2. Definir las operaciones

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.

3. Definir los atributos de los objetos

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

• En la Superior se especifica el nombre del objeto


• En la intermedia se incluyen las propiedades del objeto

• En la inferior se indican las operaciones que realiza el objeto

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