You are on page 1of 18

UNIVERSIDAD NACIONAL DE INGENIERIA

FACULTAD DE ELECTROTECNIA Y COMPUTACION


INGENIERIA EN COMPUTACION

“Paradigma Orientado a Objeto”

Integrantes:

 Maura Esther Hernández López No carnet:


2006-22095

 Ingrid Johanna Mayorga Martínez No carnet:


2006-22062

 Ana Gabriela Ortiz Pérez No carnet:


2006-22296

 Jennifer de los Ángeles Vega Rojas No carnet:


2006-22067

Docente:

 Ing. Verónica Nororì

Grupo:
 4N1-CO
Paradigma Orientado Objeto

Fecha:

Miércoles 4 de Noviembre del 2009

INDICE

1. Introducción
……………………………………………………..2
2. Antecedentes……………………………………………………..
3
3. Paradigma orientado a objeto………………………………4
Definiciones
Características
Ventajas
Lenguajes de POO
5. Conclusiones………………………………………………………
16

Página
2
Paradigma Orientado Objeto

INTRODUCCIÒN

Tal como los paradigmas afectan la vida de las personas en muchos


sentidos, los paradigmas de programación afectan en buena medida
la forma de programar, y por tanto de desarrollar software, de
muchos ingenieros y programadores. Entre los diferentes paradigmas
que existen encontramos el Paradigma de la Programación Orientada
a Objetos (POO); la cual actualmente es una de las áreas más
candentes en la industria y en el ámbito académico.

La orientación a objetos promete mejoras de amplio alcance en la


forma de diseño, desarrollo y mantenimiento del software ofreciendo
una solución a largo plazo a los problemas y preocupaciones que han
existido desde el comienzo en el desarrollo de software: la falta de
portabilidad del código y reusabilidad, código que es difícil de
modificar, ciclos de desarrollo largos y técnicas de codificación no
intuitivas.

Un lenguaje orientado a objetos ataca estos problemas. Tiene tres


características básicas: debe estar basado en objetos, basado en
clases y capaz de tener herencia de clases. Muchos lenguajes
cumplen uno o dos de estos puntos; muchos menos cumplen los tres.
La barrera más difícil de sortear es usualmente la herencia.

Por lo cual a continuación se tratará de forma breve en qué consiste


dicho paradigma y sus ventajas frente al estructurado (usado en
forma común).

Página
3
Paradigma Orientado Objeto

ANTECEDENTES

A partir de la década de los 70 se originó la llamada Crisis del


Software debido a una serie de problemas encontrados en el
desarrollo de sistemas para computadoras. La crisis también se
derivó de la contradicción entre el reciente desarrollo del hardware y
su aprovechamiento a través del software, esto es, que se dedicó
poco esfuerzo al desarrollo de metodologías para la creación del
software, creando un atraso de entre una y dos generaciones entre
los microprocesadores y el software que los manipula.

Las respuestas a estos problemas fueron entre otras:


� Programación estructuradas en los lenguajes de programación.
� Modularidad y organización de bibliotecas.

Estas mejoras no fueron suficientes para resolver el problema ya que


no se consideró:

� Recursos humanos para el mantenimiento consistente en adaptar


el software a nuevos requerimientos imposibles de haber sido
planificados inicialmente.
� Errores del software, esto es, resultados erróneos.
� Altos costos y tiempo de desarrollo muy largos.

Página
4
Paradigma Orientado Objeto

• El análisis era deficiente, lo cual derivaba cambios y


adaptaciones.
• Problemas de comunicación entre los diferentes módulos al
momento de la unión.
� Sistemas poco flexibles y confiables.
• Esto ocurre cuando el sistema no cubre las necesidades del
usuario final.
• No proporciona la información que el usuario requiere.
• Información no confiable.
• Sistema difícil de manipular.

Ante tantos problemas, los especialistas en software llegaron a la


conclusión de que en cualquier técnica que trate de resolver los
problemas anteriores, el desarrollo de sistemas deberá contemplar
las siguientes características:

� Entender el problema y dominarlo.


� Comunicación entre personas.
� Prever cambios continuos.
� Reutilizar el código.

Al mismo tiempo la Orientación a Objetos (OO) se empezó a discutir a


fines de los años 60 con el desarrollo del lenguaje SIMULA67 por
Nygaard y Ole-Johan Dahl en el Centro de Cálculo Noruego, en él,
introdujeron los conceptos de clase, subclases y rutinas, muy
parecidos los conceptos a los lenguajes orientados a objetos de hoy
en día. A mitad de la década de los
70 los científicos del Centro de Investigaciones Palo Alto de XEROX
(PARC) (XEROX Palo Alto Research Center) crearon el lenguaje
SMALLTALK, el primer lenguaje orientado a objetos consistente y
completo. En él cada elemento del lenguaje fue realizado un objeto.
Este último lenguaje evolucionó a través de varios lanzamientos
realizados por PARC.

A pesar de este movimiento temprano hacia los lenguajes orientados


a objetos, sólo se lograron pequeñas incursiones en la comunidad de
la programación general. El progreso reciente se ha acelerado debido
principalmente a la disponibilidad de las extensiones orientadas a
objetos para dos lenguajes populares: C y PASCAL, y a las extensiones
prometidas para otros lenguajes comerciales populares como BASIC y
COBOL.

Página
5
Paradigma Orientado Objeto

PARADIGMA ORIENTADO A OBJETO

La orientación a objetos es un paradigma de programación que


facilita la creación de software de calidad por sus factores que
potencian el mantenimiento, la extensión y la reutilización del
software generado bajo este paradigma.

La programación orientada a objetos trata de amoldarse al modo de


pensar del hombre y no al de la máquina. Esto es posible gracias a la
forma racional con la que se manejan las abstracciones que
representan las entidades del dominio del problema, y a propiedades
como la jerarquía o el encapsulamiento.

Página
6
Paradigma Orientado Objeto

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.

Para el desarrollo de sistemas, la orientación a objetos es un nivel de


abstracción de computadora más allá de los procedimientos y los
datos. La orientación a objetos anima al desarrollador de sistemas a
concentrarse en los temas importantes e ignorar el resto a la hora de
la modelación.
El hecho de que el tema central sean los objetos, aunque
intuitivamente, marca una desviación significativa de los anteriores
paradigmas de la programación. Una ecuación para reconocer una
aproximación a la Orientación a Objetos es:

ORIENTACIÓN_OBJETOS = CLASES Y OBJETOS + HERENCIA +


COMUNICACIÓN CON MENSAJES

Analicemos ahora los términos de la ecuación:

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

Nota:Un objeto es un modelo o instancia de una clase.

Ejemplos de estos conceptos (utilizaremos un lenguaje más fácil


de entender para definirlos): 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.

Ejemplo 1:

Página
7
Paradigma Orientado Objeto

Consideremos cómo un programador podría designar una aplicación


de procesamiento de una posición en el espacio en forma orientada a
objetos.

Ejemplo 2:

Veamos ahora cómo sería la aplicación con el sistema de los números


complejos en forma orientada a objetos.

Algunos objetos son p y q que por ser números complejos son de la


forma (real, imaginaria).

• Descripción del término herencia

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 que las clases que se


derivan de otras clases, comparten las características comunes de la
clase de la que descienden.

Ejemplo 1:

Página
8
Paradigma Orientado Objeto

Ejemplo 2:

Para este ejemplo usaremos la clase publicación.

• 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, solamente conoce que se está
sucediendo.

Página
9
Paradigma Orientado Objeto

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

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
de los usuarios.
3) Se borran los objetos cuando ya no son necesarios y se recupera
memoria.

Características de la Programación Orientada a Objetos

Las características deseadas pueden variar y es difícil ponerse de


acuerdo.

1. Principio de Abstracción
• Datos
• Procedimientos

2. Encapsulamiento
3. Herencia

• Simple

Página
10
Paradigma Orientado Objeto

• Múltiple

4. Comunicación con mensajes


5. Polimorfismo
6. Manejo automático de memoria

• Constructores
• Destructores

7. Métodos virtuales
8. Sobreposición de operadores
9. Modularidad: Con este término se conoce la propiedad de
todo sistema de ser dividido en varias partes de estudio a fin de
comprenderlo mejor, trabajarlo eficazmente y no abrumarse
con tanta información. De esta manera se puede extraer,
mediante abstracción, una parte de este, comprenderla y, al
codificar y correr el programa, se puede hacer por módulos.
10. Jerarquización: Proceso que consiste en agrupar
jerárquicamente las clases que se obtuvieron de las
abstracciones realizadas. Esta agrupación consiste en
identificar clases que contengan a otras; así se llega al
concepto de Súper-Clase y Sub-Clase, de donde una súper-clase
es una clase que contiene a una o mas clases (por ejemplo: La
clase Medios de trasporte es una súper-clase que contiene
otras, como Medios terrestres, Medios Acuáticos. Así mismo la
clase Medios terrestres contiene otras como: Automóviles,
Trenes, etc.…) y las sub-clases son aquellas contenidas en
clases mayores (como en el caso de la clase Automóvil en el
ejemplo).Cuando se da aplica en concepto de Jerarquía en las
clases, aparecen otros como Herencia simple (cuando una sub-
clase hereda los métodos, estructura y comportamiento de una
súper-clase), Herencia múltiple (cuando una sub-clase hereda
los métodos, estructura y comportamiento de varias súper-
clases) y Agregación (el concepto de herencia pero visto en
sentido inverso; es decir que una sub-clase es parte de [está
agregada a] una súper-clase), conceptos que tienen mucho que
ver con los tipos de relaciones que hay entre las clases. En los
objetos también puede observarse la relación de agregación
que en este caso es como un objeto puede estar formado por
otros (otra relación de los objetos es la de enlace con la que se
percibe envío de mensajes entre los objetos que es algo
parecido a las relaciones de uso entre las clases).Para
establecer cuanto puede heredar una sub-clase de una superior
se ha determinado que la creación de clases valla acompañada
de una especificación de permisos de acceso. Esto puede
notarse el construir clases de tipo privado (solo tiene acceso la
clase), público (puede tener acceso cualquiera) y protegido
(también tienen acceso las sub-clases).

Página
11
Paradigma Orientado Objeto

11. Tipificado: A grosso modo esta expresión hace referencia a la


coacción de una clase referente determinado objeto. Todo
objeto pertenece a una clase, por lo que: en todo objeto se
encontrarán características que lo identifican y lo asocian a un
grupo de semejantes. Lo antedicho puede hacerse gracias a
una de las propiedades de los objetos: la identidad. Esta
propiedad nos indica que todo objeto actúa en un escenario
determinado (con fronteras), es decir: si hablamos de un objeto
de la clase autos (mi_auto), este tendrá cosas en particular que
lo diferenciarán de otros como mi_barco (de la clase barcos).
12. Concurrencia y Persistencia: Con estos términos se desea
trasmitir la idea de cómo en la POO se puede hacer uso de hilos
de control para realizar operaciones simultáneas sin que el
sistema se concentre sobre determinado objeto, así diferentes
objetos actuarán al mismo tiempo. Además los objetos tienen la
propiedad de ser persistentes con el paro del tiempo, con eso
consiguen existir aunque su creador ya no. Cómo puede
observarse la POO no es en sí una forma de programar, no es
un lenguaje de programación, más bien es todo un Paradigma
que se orienta a la localización de entidades, su clasificación y
su funcionamiento dentro del sistema analizado.

• Principio de abstracción

• Es el principio de ignorar los aspectos de un sujeto que no son


relevantes en un propósito de orden de concentración más exacto.
• El proceso de representar entidades reales como elementos
internos a un programa recibe el nombre de abstracción.
• De esta forma, un tipo de dato abstracto se puede escribir
concentrándose en las operaciones que manipulan a los objetos de
este tipo, sin caer en detalles de representación y manipulación de
datos.

� Datos. Es un atributo del objeto que representa cuantitativamente


o cualitativamente a ese objeto.
� Procedimiento. Es una operación que lleva a cabo un servicio a
los atributos del objeto.
Ejemplo 1:
En el ejemplo de la posición en el espacio se quiere representar en
objetos, queremos abstraer esta parte del mundo real a un programa
que pueda representarlos. Una posición en el plano la determinan las
coordenadas (x, y), que serían nuestros datos y los procedimientos
que las manipulen pueden ser:

iniciar posición
leer x
leer y
saluda

Página
12
Paradigma Orientado Objeto

Ejemplo 2:
En el ejemplo de los números complejos se tiene que éstos son de la
forma (real, imaginaria), donde real e imaginaria son números reales,
de lo que podemos intuir que los datos sean: real e imaginaria

Los atributos que manipulan estos datos pueden ser todos los
operadores aritméticos (+, -, *, /) y los operadores de relación ( =, <
> ).

• Encapsulamiento (ocultamiento de datos).

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.

Ejemplo 1:
En este ejemplo para leer cualquiera de las coordenadas no se puede
directamente sólo leyendo por separado las coordenadas con los
procedimientos de lectura.

Ejemplo 2:
En el ejemplo de los números complejos cada número complejo no se
puede modificar a menos que sea con los operadores.

• Herencia.

La herencia es un mecanismo que para expresar similaridad entre


clases, simplificando definiciones de clases similares previamente
detenidas.

• La herencia simple es cuando el lenguaje sólo permite que una


clase derive de una clase.
• La herencia múltiple es cuando una clase puede ser derivada de
más de una clase.

Ejemplo 1. Herencia simple:

Ejemplo 2. Herencia múltiple (multimedia):

Página
13
Paradigma Orientado Objeto

• Comunicación con mensajes.

Las variables de un objeto sólo pueden ser manipuladas por sus


propios métodos. Es decir, los mensajes mandan una petición de
acción a un objeto, mientras que los métodos del objeto deciden
cómo llevar a cabo la acción.

Ejemplo:
En la definición de posición consta de los datos, coordenadas X e Y y
los métodos que inician y devuelven los valores X y Y.

Procedimiento leer X
Regresa valor de X

• Polimorfismo

Es cuando una clase tiene varios procedimientos con el mismo


nombre, pero con distinto tipo y/o número de argumentos.

Ejemplo 1:
Se puede tener más de un procedimiento saluda en la clase posición.
a) Se puede tener un procedimiento

procedimiento Saluda
escribe "Hola soy posición";

b) Se puede tener un procedimiento

procedimiento Saluda (mensaje)


escribe mensaje;

• Manejo Automático de Memoria.

En el apartado de comunicación con mensajes se menciona que en


un programa con orientación a objetos ocurren tres sucesos, dos de
ellos nos interesan. El primer suceso dice: "Se crean los objetos

Página
14
Paradigma Orientado Objeto

cuando se necesitan." y el tercer suceso indica: "Se borran los objetos


cuando ya no son necesarios y se recupera la memoria.". Estos
sucesos se desarrollan con los constructores y destructores.

Constructores

Los constructores son procedimientos de la clase que permiten crear


objetos. Un constructor es llamado para asignar memoria a un objeto,
para asignar valores a los datos del objeto y realizar tareas iniciales
para un nuevo objeto. Esto implique que si no podemos trabajar con
un objeto que no haya sido creado a través de un constructor y si sólo
se pueden modificar mediante los procedimientos de la clase NO
TENEMOS FORMA DE CORROMPER EL OBJETO, lo cual aumenta la
confiabilidad y facilita la rehusabilidad.

Destructores
Un destructor es un procedimiento de la clase que realiza la tarea
opuesta a su constructor, libera la memoria que fue asignada al
objeto que fue creado por el constructor. Es deseable que el
destructor se invoque implícitamente cuando el objeto abandone el
bloque donde fue declarado. El destructor le permite al programador
despreocuparse de tener que liberar la memoria que deja de utilizar y
correr el riesgo de que ésta se sature.

Ejemplos:

Normalmente en los lenguajes con orientación a objetos el destructor


como el constructor tienen el mismo nombre de la clase a la que
pertenece.

Ejemplo 1:

Constructor iniciar (real 1, real 2)


x = real 1
y = real 2

Destructor iniciar
borra x
borra y

• Métodos Virtuales.

Una jerarquía de clases unidas por la herencia, con nombres de


métodos comunes para operaciones que son similares
conceptualmente, pero que realizan tareas diferentes. Como
consecuencia, cuando diferentes objetos de las diferentes clases de la
jerarquía reciben el mismo mensaje, éste provoca acciones
totalmente distintas.

Página
15
Paradigma Orientado Objeto

Ejemplo:
En el ejemplo 1, Posición, Punto y Círculo pueden recibir cada uno el
mensaje saluda y responder de distinta forma, los procedimientos
serían:

a) posición saluda

"Hola, soy posición";


b) punto saluda

"Hola, soy punto";


c) círculo saluda

"Hola, soy círculo"


Se puede hacer algo más complejo como hacer procedimientos que
mostrará el punto o mostrará el círculo.

• Sobreposición de Operadores.

Es una característica de un lenguaje de programación que permite


que el mismo operador sea utilizado con tipos diferentes. Dicho de
otra forma, si se tiene una aritmética definida con ciertos operadores,
sería deseable que permita utilizar la misma notación para los nuevos
tipos de operadores que se definan.

Ejemplo:
En el ejemplo 2 de números complejos se tienen los operadores
aritméticos un ejemplo de sobrecarga de operadores sería:

complejos operador +(complejo,complejo)


complejos operador *(complejo,complejo)

VENTAJAS

• Modelos
La POO permite realizar un modelo de sistema casi
independientemente de los requisitos del Proyecto. La razón es que
en la POO la jerarquía la establecen los datos, en cambio en la
Programación estructurada la jerarquía viene definida por los
programas. Este cambio hace que los modelos se establezcan de
forma similar al razonamiento humano y, por lo Tanto, resulte mas
natural.

Página
16
Paradigma Orientado Objeto

• Modularidad
Un programa es modular si se compone de módulos independientes y
robustos. Esto permite la Reutilización y facilita la verificación y
depuración de los mismos. En poo, los módulos están Directamente
relacionados con los objetos. Los objetos son módulos naturales ya
que corresponden A una imagen lógica de la realidad.

• Extensibilidad
Durante el desarrollo de sistemas, ocurre la aparición de nuevos
requisitos, por eso es deseable que las herramientas de desarrollo
permitan añadirlos sin modificar la estructura básica del Diseño. En
poo es posible lograr esto siempre y cuando se hayan definido de
forma adecuada la Jerarquía de clases, los atributos y métodos.

• Eliminación de redundancia
En el desarrollo de sistemas se desea evitar la definición múltiple de
datos y funciones comunes. En poo esto se logra mediante la
herencia (evita la definición múltiple de propiedades comunes a
Muchos objetos) y el polimorfismo (permite la modificación de
métodos heredados). Solo hay que Definir los atributos y los métodos
en el antepasado más lejano que los comparte.

• Reutilización
La poo proporciona un marco perfecto para la reutilización de las
clases. El encapsulamiento y la Modularidad nos permiten utilizar una
y otra vez las mismas clases en aplicaciones distintas. En Efecto, el
aislamiento entre distintas clases significa que es posible añadir una
nueva clase o Un modulo nuevo (extensibilidad) sin afectar al resto de
la aplicación.

LENGUAJE EN POO

• Puros
Son los que solo permiten realizar programación orientada a objetos.
Ej: smalltalk, java.

• Hibridos

Son los que permiten la poo con la programación estructurada. Ej: c+


+, pascal.

CONCLUSIONES

Página
17
Paradigma Orientado Objeto

Día a día los costos del Hardware decrecen. Así surgen nuevas áreas
de aplicación cotidianamente: procesamiento de imágenes y sonido,
bases de datos multimediales, automatización de oficinas, ambientes
de ingeniería de software, etc. Aún en las aplicaciones tradicionales
encontramos que definir interfases hombre-máquina "a-la-Windows"
suele ser bastante conveniente.

Lamentablemente, los costos de producción de software siguen


aumentando; el mantenimiento y la modificación de sistemas
complejos suele ser una tarea trabajosa; cada aplicación, (aunque
tenga aspectos similares a otra) suele encararse como un proyecto
nuevo, etc.

Todos estos problemas aún no han sido solucionados en forma


completa. Pero como los objetos son portables (teóricamente)
mientras que la herencia permite la reusabilidad del código orientado
a objetos, es más sencillo modificar código existente porque los
objetos no interaccionan excepto a través de mensajes; en
consecuencia un cambio en la codificación de un objeto no afectará la
operación con otro objeto siempre que los métodos respectivos
permanezcan intactos. La introducción de tecnología de objetos como
una herramienta conceptual para analizar, diseñar e implementar
aplicaciones permite obtener aplicaciones más modificables,
fácilmente extendibles y a partir de componentes reusables. Esta
reusabilidad del código disminuye el tiempo que se utiliza en el
desarrollo y hace que el desarrollo del software sea más intuitivo
porque la gente piensa naturalmente en términos de objetos más que
en términos de algoritmos de software.

Página
18

You might also like