Está en la página 1de 38

LA PROGRAMACION

ORIENTADA A OBJETOS

AO DE LA INVERSION PARA EL DESARROLLO RURAL Y LA SEGURIDAD ALIMENTARIA

TEMA: LA PROGRAMACION ORIENTADA A OBJETOS

Curso: Ciclo:

Diseo De Aplicaciones VI

Profesor: Carmona Espinoza Jorge Luis Alumno: Cndor Zamata Lin Cooper

LA PROGRAMACION

ORIENTADA A OBJETOS

AGRADECIMIENTOS Agradecer hoy y siempre a mi familia por el esfuerzo realizado, por la paciencia, comprensin y apoyo en mis estudios. A mis padres y dems familiares ya que me brindan el apoyo, la alegra y me dan la fortaleza necesaria para seguir adelante. Al aporte de los autores involucrados en el presente trabajo, por sus ideas vertidas, siendo de enorme utilidad durante la elaboracin de esta monografa.

LA PROGRAMACION

ORIENTADA A OBJETOS

I. INTRODUCCION
En el presente trabajo de investigacin intentaremos dar una visin general de la Programacin Orientada al Objeto (POO o tambin del ingls OOP = Object Oriented Programming). Ya que la OOP no es un lenguaje de programacin, puede aplicarse a cualquier lenguaje, y de hecho hoy en da est disponible en mayor o menor medida en todos los lenguajes tradicionales (C se ha convertido en C++, Pascal en Delphi, VB incorpora parte de la OOP) y no aparece un lenguaje nuevo sin que incluya OOP (como es el caso de Java). Es por esto que intentaremos que todo lo que aqu se diga pueda ser aplicado a cualquier lenguaje OOP. El objetivo de este trabajo es, pues, el aprendizaje de los trminos tericos que todos manejamos hoy en da, en cualquier entorno de programacin cuando nos referimos a la orientacin a objetos. Es importante aclarar desde un principio la diferencia que existe entre programacin orientada a objetos y un lenguaje orientado a objetos. La programacin orientada a objetos es una filosofa, un modelo de programacin, con su teora y su metodologa, que conviene conocer y estudiar antes de nada. Un lenguaje orientado a objetos es un lenguaje de programacin que permite el diseo de aplicaciones orientadas a objetos. Dicho esto, lo normal es que toda persona que vaya a desarrollar aplicaciones orientadas a objetos aprenda primero la filosofa (o adquiera la forma de pensar) y despus el lenguaje, porque filosofa slo hay una y lenguajes muchos. En este documento veremos brevemente los conceptos bsicos de la programacin orientada a objetos desde un punto de vista global, sin particularizar para ningn lenguaje de programacin especfico.

LA PROGRAMACION

ORIENTADA A OBJETOS

INDICE

I. INTRODUCCION 1. CAPITULO N 1: LA INTELIGENCIA ARTIFICIAL Introduccin a la Ing. de procesos...... Qu es Ing. de procesos?... Qu permite la Ing. de procesos?.. La Reingeniera de procesos........ Caractersticas de los procesos.... Instrumentos y tcnicas de reingeniera.. Pag. 05 Pag. 05 Pag. 07 Pag. 08 Pag. 10 Pag. 11

2. CAPITULO N 2: IMPORTANCIA Introduccin............ Pag. 13 Qu entendemos por Pensamiento Sistmico?..... Pag. 14 La Dinmica de Sistemas............ Pag. 16

3. CAPITULO N 3: EL DISEO DE PROCESOS Definicin......... Fases o etapas del proceso de Diseo... Lenguajes para graficar procesos de negocio i. UML (Lenguaje de Modelado Unificado) ii. RUP (Proceso Unificado Racional).. iii. Diagramas de Flujo. iv. BPMN (Business Process Modeling Notation) Pag. 18 Pag. 19 Pag. 21 Pag. 21 Pag. 22 Pag. 23 Pag. 24

II. III. IV.

CONCLUSIONES BIBLIOGRAFIA GLOSARIO

LA PROGRAMACION

ORIENTADA A OBJETOS

DEFINICION La programacin orientada a objetos es un importante conjunto de tcnicas que pueden utilizarse para hacer el desarrollo de programas ms eficientes, a la par que mejora la fiabilidad de los programas de computadora. En la programacin orientada a objetos, los objetos son los elementos principales de construccin. Sin embargo, la simple comprensin de lo que es un objeto, o bien el uso de objetos en un programa, no significa que este programado en un modo orientado a objetos. Lo que cuenta es el sistema en el cual los objetos se interconectan y comunican entre s. La POO es una extensin natural de la actual tecnologa de programacin, y representa un enfoque nuevo y distinto al tradicional. Al igual que cualquier otro programa, el diseo de un programa orientado a objetos tiene lugar durante la fase de diseo del ciclo de vida de desarrollo de software. El diseo de un programa OO es nico en el sentido de que se organiza en funcin de los objetos que manipular. De hecho, probablemente la parte ms difcil de la creacin de software orientado a objetos es identificar las clases necesarias y el modo en que interactan entre s. 5

LA PROGRAMACION

ORIENTADA A OBJETOS

Desgraciadamente, no hay reglas fciles para determinar las clases de un programa dado. La identificacin de clases puede ser tanto arte como ciencia. El proceso es algo impreciso, y por esta causa han surgido numerosos mtodos que proporcionan reglas para la identificacin de clases y las relaciones que existen entre ellas.

Las tecnologas orientadas a objetos se han convertido a partir de la dcada de los noventa en uno de los motores clave de la industria del software. Sin embargo, las tecnologas de objetos no es, como algunos innovadores pregonan, una novsima tecnologa, sino que muy al contrario, es una vieja y madura tecnologa que se remonta a los aos sesenta. De hecho, Simula, uno de los lenguajes orientados a objetos ms antiguos, fue desarrollado en 1967. El desarrollo de programas orientados a objetos es un enfoque diferente del mundo informtico. Implica la creacin de modelos real y la construccin de programas informticos basados en esos modelos. El resultado final del proceso es un programa de computadora que contiene caractersticas que representan algunos de los objetos del mundo real que son parte del suceso. El principio bsico de la programacin orientada a objetos es que un sistema de software se ve como una secuencia de transformaciones en un conjunto de objetos. El termino objeto tiene el mismo significado que un nombre o una frase nominal. Es una persona, un lugar o una cosa. Ejemplos del mundo real son: persona, tabla, computadora, avin, vuelo de avin, diccionario etc. La mayora de los objetos del mundo real tienen atributos (caractersticas que los describen). Por ejemplo, los atributos de una persona incluyen el nombre, la edad, el sexo, la fecha de nacimiento, etc Los objetos tienen atributos, y ellos, a su vez, comportamiento. El comportamiento es el conjunto de cosas que puede hacer un objeto; por ejemplo una persona puede estudiar, caminar, trabajar, etc En sntesis, se puede decir que los objetos conocen cosas y hacen cosas. Las cosas que un objeto conoce son sus atributos y las cosas que puede hacer son su comportamiento.

LA PROGRAMACION

ORIENTADA A OBJETOS

BREVE HISTORIA DE LA POO

Los conceptos de clase y herencia fueron implementados por vez primera en el lenguaje Simula 67 (el cual no es sino una extensin de otro ms antiguo, llamado Algol 60), este fue diseado en 1967 por Ole-Johan Dhal y Krysten Nygaard en la Universidad de Oslo y el Centro de Computacin Noruego (Norsk Regnesentral). La historia de Simula, que es como se le llama coloquialmente, es tan frecuente como desafortunada. Fue diseado como un lenguaje de propsito general y pas por el mundo de la informtica sin pena ni gloria durante aos. Fue mucho despus, con la aparicin de otros lenguajes que se basaban en estos innovadores conceptos (Smalltalk y sobretodo C++), cuando se le reconoci a los creadores de Simula su gran mrito. Sin embargo, Simula sigue sin usarse porque estos conceptos han sido ampliados y han aparecido otros nuevos que le dan mayor potencia y flexibilidad a los conceptos originales de clase y herencia, conformando lo que hoy entendemos por Programacin Orientada al Objeto. Aunque Simula fue el padre de todo este revuelo, ha sido Smalltalk quin dio el paso definitivo y es ste el que debemos considerar como el primer lenguaje de programacin orientado a objetos. Smalltalk fue diseado en el Palo Alto Research Center (PARC) de Xerox Corporation's, en California. Este ha sido uno de los centros de investigacin que ms avances ha dado al la informtica en toda su historia; fue aqu donde se desarroll el entorno de ventanas que hoy usan Windows en MS-DOS y XWindows en UNIX, los famosos ratones como dispositivos de entrada de datos o interfaces de usuario como el DataGlobe. Segn ltimas noticias, ahora andan desarrollando unos nuevos conceptos de sistemas operativos con imgenes tridimensionales en movimiento que sern los que probablemente utilizaremos dentro de algunos aos. En este centro de investigacin de Palo Alto, a comienzos de los 70, el proyecto iniciado por Alan Kay vio la luz con el nombre de Smalltalk. Lo que haba empezado como un proyecto de desarrollo de un lenguaje de propsito general acab siendo mucho ms que eso, convirtindose en el origen de la, hasta ahora, ltima y ms importante revolucin en el desarrollo de software. Smalltalk incluye no solo un lenguaje para el desarrollo de aplicaciones, sino que adems incorpora herramientas de ayuda al desarrollo (p.ej. manejadores de rboles de clases, examinadores de objetos, etc.) y un completo interfaz grfico de usuario. El ltimo gran paso, a nuestro juicio, lo dio Bjarne Stroustrup con la creacin del C++, quizs el lenguaje de programacin orientado a objetos ms usado 7

LA PROGRAMACION

ORIENTADA A OBJETOS

actualmente. Este, fue definido en 1986 por su autor en un libro llamado The C++ Programming Language, de cita y referencia obligadas cuando se habla de OOP. Tan importante es esta publicacin, que cuando se habla de C++, a este libro se le llama "El Libro". Cuando algn experto se encuentra con alguna duda sobre cmo debera ser un lenguaje orientado al objeto recurre a l, y si no encuentra solucin, se dirige directamente a Stroustrup. La importancia del C++ radica, en que, abandonando ciertos requerimientos de los lenguajes de cuarta generacin con tecnologa OOP como son Smalltalk o Actor, ha conseguido darle una gran potencia y flexibilidad al ms famoso lenguaje, el C. Llegados a este punto se hace necesario aclarar que los lenguajes de OOP, podemos clasificarlos en: Puros: Diremos que un lenguaje es OOP puro, cuando se ajusta completamente a los principios que esta tcnica propone y contempla la posibilidad de trabajar exclusivamente con clases. Hbridos: Diremos que un lenguaje es hbrido de OOP y algn otro, cuando ese lenguaje, que normalmente exista antes de la aparicin de la OOP, incorpora en mayor o menor medida facilidades para trabajar con clases.

De este modo, C++ es un lenguaje OOP hbrido. De hecho, C++ no incorpora todas las caractersticas de un lenguaje OOP, y no lo hace principalmente, porque es un lenguaje compilado y ello impide que se resuelvan ciertas referencias en tiempo de compilacin necesarias para dotar a las clases de algunas de sus cualidades puramente. Hoy en da, casi todos los lenguajes ms usados en los 80 se han reconvertido en mayor o menor medida a la OOP, y han aparecido otros nuevos. Vemoslos rpidamente: C ha pasado a llamarse C++. Es la mejor implementacin OOP sobre un lenguaje compilado existente en este momento. Su punto ms conflictivo no obstante no su total implementacin OOP, sino el hecho de permitir herencia mltiple, lo que, segn los tericos, no es muy aconsejable. Pascal ha sido reciclado por Borland, pasando a llamarse Delphi. Tiene una implementacin OOP bastante buena, pero al no permitir sobrecarga de funciones pierde una de las caractersticas de OOP: Polimorfismo. Basic ha pasado a llamarse Visual Basic en manos de Microsoft. Este, aun siendo uno de los lenguajes ms famosos del momento, no es un lenguaje OOP completo, ya que no incluye la caracterstica ms importante de la OOP: la Herencia. Java es la estrella de los ltimos aos: es pura OOP, impecablemente concebido e implementado por Sun, y al que slo se le puede achacar que no dispone de sobrecarga de operadores, cualidad que de los citados aqu slo dispone C++. 8

LA PROGRAMACION

ORIENTADA A OBJETOS

QU ES LA POO? Grady Booch, autor del mtodo de diseo orientado a objetos, define la programacin orientada a objetos como: Un mtodo de implementacin en el que los programas se organizan como colecciones cooperativas de objetos, cada uno de los cuales representan una instancia de alguna clase, y cuyas clases son todas miembros de una jerarqua de clases unidas mediante relaciones de herencia.

Existen tres importantes partes en la definicin. La programacin orientada a objetos: 1) Utiliza objetos, no algortmicos, como bloques de construccin lgicos (jerarqua de objetos). 2) Cada objeto es una instancia de una clase. 3) Las clases se relacionan unas con otras por medio de relaciones de herencia. Un programa puede parecer orientado a objetos, pero si cualquiera de estos elementos no existe, no es un programa orientado a objetos. Especficamente, la programacin sin herencia es distinta de la programacin orientada a objetos; se denomina programacin con tipos abstractos de datos o programacin basada en objetos. El concepto de objeto, al igual que los tipos abstractos de datos o tipos definidos por el usuario, es una coleccin de elementos de datos, junto con las funciones asociadas utilizadas para operar sobre estos datos. Sin embargo, la potencia real de los objetos reside en el modo en que los objetos pueden definir otros objetos. Este proceso, se denomina Herencia y es el mecanismo que ayuda a construir programas que se modifican fcilmente y se adaptan a aplicaciones diferentes. Los conceptos fundamentales de programacin son: objetos, clases, herencia, mensajes y polimorfismo. Los programas orientados a objetos constan de objetos. Los objetos de un programa se comunican con cada uno de los restantes pasando mensajes.

LA PROGRAMACION

ORIENTADA A OBJETOS

UN MUNDO DE OBJETOS Una de las ventajas ineludibles de la orientacin a objetos es la posibilidad de reflejar sucesos del mundo real mediante tipos abstractos de datos extensibles a objetos. As pues, supongamos el fenmeno corriente de la conduccin de una bicicleta, un automvil, una motocicleta o un avin: usted conoce que esos vehculos comparten muchas caractersticas, mientras que difieren en otros. Por ejemplo, cualquier vehculo puede ser conducido: aunque los mecanismos de conduccin difieren de unos a otros, se puede generalizar el fenmeno de la conduccin. En esta consideracin, enfrentados con un nuevo tipo de vehculo (por ejemplo una nave espacial), se puede suponer que existe algn medio para conducirla. Se puede decir que vehculo es un tipo base y nave espacial es un tipo derivado de ella. En consecuencia, se puede crear un tipo base que representa el comportamiento y caractersticas comunes a los tipos derivados de este tipo base. Un objeto es en realidad una clase especial de variable de un nuevo tipo que algn programador ha creado. Los tipos objetos definidos por el usuario se comportan como tipos incorporados que tienen datos internos y operaciones externas. Por ejemplo, un nmero en coma flotante tiene un exponente, mantisa y bit de signo y conoce cmo sumarse a s mismo con otro nmero de coma flotante. Los tipos objeto definidos por el usuario contienen datos definidos por el usuario (caractersticas) y operaciones (comportamiento). Las operaciones definidas por el usuario se denominan mtodos. Para llamar a uno de estos mtodos se hace una peticin al objeto: esta accin se conoce cmo enviar un mensaje al objeto. Por ejemplo, para detener un objeto automvil se enva un mensaje de parada (STOP). Obsrvese que esta operacin se basa en la nocin de encapsulacin (encapsulamiento): se indica al objeto lo que ha de hacer, pero los detalles de cmo funciona se han encapsulado (ocultado).

RAZONES FUNDAMENTALES IMPORTANCIA DE LA POO

QUE

ESTAN

INFLUYENDO

EN

LA

Alguna de las causas que estn influyendo considerablemente en el notable desarrollo de las tcnicas orientadas a objetos son: La OO (Orientacin a Objetos) es especialmente adecuada para realizar determinadas aplicaciones, sobre todo realizacin de prototipos y simulacin de programas. Los mecanismos de encapsulacin de POO soportan un alto grado de reutilizacin de cdigo, que se incrementa por sus mecanismos de herencia. 10

LA PROGRAMACION

ORIENTADA A OBJETOS

En el entorno de las bases de datos, la OO se adjunta bien a los modelos semnticos de datos para solucionar las limitaciones de los modelos tradicionales, incluido el modelo relacional. Aumento espectacular de LPOO (Lenguajes de Programacin Orientados a Objetos). Interfaces de usuarios grficos (por iconos) y visuales. Los interfaces de usuario de una aplicacin manipulan la entrada y salida del usuario. Por consiguiente, su funcin principal es la comunicacin con el usuario final. La entrada al sistema se puede controlar a travs de lneas de ordenes (enfoque utilizado por DOS y UNIX), o alternativamente el usuario puede interactuar con el sistema, con construcciones de programacin visuales, tales como iconos de mens, Windows, Macintosh, etc

Estas razones hacen fundamentalmente que dentro de las tendencias actuales de la ingeniera de software, el marco de POO se revela como el ms adecuado para la elaboracin del diseo y desarrollo de aplicaciones. Este marco se caracteriza por la utilizacin del diseo modular OO y la reutilizacin del software. Los TAD (Tipo Abstracto de Dato) han aumentado la capacidad para definir nuevos tipos (clases) de objetos, cuyo significado se definir abstractamente, sin necesidad de especificar los detalles de implementacin, tales como la estructura de datos a utilizar para la representacin de los objetos definidos. Los objetos pasan a ser los elementos fundamentales en este nuevo marco, en detrimento de los subprogramas que lo han sido en los marcos tradicionales.

LA PROGRAMACION ESTRUCTURADA Es muy importante destacar que cuando hacemos referencia a la programacin orientada a objetos no estamos hablando de unas cuantas caractersticas nuevas aadidas a un lenguaje de programacin. Estamos hablando de una nueva forma de pensar acerca del proceso de descomposicin de problemas y de desarrollo de soluciones de programacin. La programacin orientada a objetos surge en la historia como un intento para dominar la complejidad que, de forma innata, posee el software. Tradicionalmente, la forma de enfrentarse a esta complejidad ha sido empleando lo que llamamos programacin estructurada, que consiste en descomponer el problema objeto de resolucin en sub-problemas y ms subproblemas hasta llegar a acciones muy simples y fciles de codificar. Se trata de descomponer el problema en acciones, en verbos. En el ejemplo de un programa que resuelva ecuaciones de segundo grado, descomponamos el problema en las siguientes acciones: primero, pedir el valor de los coeficientes a, b y c; despus, calcular el valor del discriminante; y 11

LA PROGRAMACION

ORIENTADA A OBJETOS

por ltimo, en funcin del signo del discriminante, calcular ninguna, una o dos races. Como podemos ver, descomponamos el problema en acciones, en verbos; por ejemplo el verbo pedir, el verbo hallar, el verbo comprobar, el verbo calcular La programacin orientada a objetos es otra forma de descomponer problemas. Este nuevo mtodo de descomposicin es la descomposicin en objetos; vamos a fijarnos no en lo que hay que hacer en el problema, sino en cul es el escenario real del mismo, y vamos a intentar simular ese escenario en nuestro programa. La programacin orientada a objetos es una nueva forma de pensar, una manera distinta de enfocar los problemas.

Flexibilidad. Si partimos del hecho que mediante la definicin de clases establecemos mdulos independientes, a partir de los cuales podemos definir nuevas clases, entonces podemos pensar en estos mdulos como bloques con los cuales podemos construir diferentes programas. Reusabilidad. Una vez que hemos definido a la entidad persona para utilizarla en una aplicacin de negocios, por mencionar un ejemplo, y deseamos construir a continuacin una aplicacin, digamos de deportes, en donde requerimos definir a la misma entidad persona, no es deseable volver a escribir la definicin 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 reutilizacin. Mantenibilidad. Las clases que conforman una aplicacin, vistas como mdulos independientes entre s, son fciles de mantener sin afectar a los dems componentes de la aplicacin. Extensibilidad. Gracias a la modularidad y a la herencia una aplicacin diseada bajo el paradigma de la orientacin a objetos puede ser fcilmente extensible para cubrir necesidades de crecimiento de la aplicacin.

12

LA PROGRAMACION

ORIENTADA A OBJETOS

A pesar de que las ventajas de la programacin orientada a objetos superan a las limitaciones de la misma, podemos encontrar algunas caractersticas no deseables en sta. Limitaciones para el programador. No obstante que la tecnologa orientada a objetos no es nueva, un gran porcentaje de programadores no estn familiarizados con los conceptos de dicha tecnologa. En otras palabras, la lgica de la programacin estructurada sigue siendo predominante en la mayora de los desarrolladores de software, despus de haber revisado de forma breve los principios de la programacin orientada a objetos, nos es claro que en sta se requiere una lgica de pensamiento totalmente diferente a la lgica comnmente utilizada para la programacin estructurada. Tamao excesivo en las aplicaciones resultantes. La gran mayora de los equipos de cmputo cuentan con capacidades tanto de almacenamiento como de memoria lo suficientemente buena como para ejecutar la mayora de las aplicaciones que puedan desarrollarse con la tecnologa orientada a objetos, sin embargo existen casos en los que lo anterior no se cumple. Una de las desventajas de la programacin orientada a objetos es que cuando se heredan clases a partir de clases existentes se heredan de forma implcita 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 ejecucin. Esto tiene que ver, en cierto modo, con el punto anterior, una aplicacin innecesariamente pesada en muchas ocasiones es ms lenta de ejecutar que una aplicacin conformada nicamente por los mdulos necesarios.

13

LA PROGRAMACION

ORIENTADA A OBJETOS

COMPONENTES La programacin orientada a objetos incorpora estos seis componentes importantes: Objetos Clases Mtodos Mensajes Herencia Polimorfismo

La idea fundamental en los lenguajes orientados a objetos es combinar en una sola unidad datos y funciones que operen sobre estos datos. Tal unidad se denomina objeto. Por consiguiente, dentro de los objetos residen los datos de los lenguajes de programacin tradicionales, tales como nmeros, arrays, cadenas y registros, as como funciones o subrutinas que operan sobre ellos.

14

LA PROGRAMACION

ORIENTADA A OBJETOS

Las funciones dentro del objeto son el nico medio de acceder a los datos privados de un objeto. Si se desea leer un elemento datos de un objeto se llama a la funcin miembro del objeto. Se lee el elemento y se devuelve el valor. No se puede acceder a los datos directamente. Los datos estn ocultos, y eso asegura que no se pueden modificar accidentalmente por funciones externas al objeto.

Los datos y las funciones asociados se dicen que estn encapsulados en una nica entidad o modulo. La encapsulacin de datos y ocultacin de datos son trminos importantes en la descripcin de lenguajes orientados a objetos. Si se desea modificar los datos de un objeto, se conoce exactamente cules son las funciones que interactan con el mismo. Ninguna otra funcin puede acceder a los datos. Esta caracterstica simplifica la escritura, depuracin y mantenimiento del programa. Ejemplos de objetos Qu clase de cosas pueden ser objetos en un programa orientado a objetos? La respuesta est solo limitada a su imaginacin. Algunos ejemplos tpicos pueden ser: INTERFACES GRAFICAS Aviones Ventanas Automviles Mens Casas Cuadros de dialogo Puertas Teclado FISICOS ANIMALES Vertebrados Invertebrados Pescados Aves ALIMENTOS Carnes Frutas Verduras Pasteles

Un objeto es una entidad que contiene los atributos que descubren el estado de un objeto del mundo real y las acciones que se asocian con el objeto del mundo real. Se designa por un nombre o identificador del objeto.

15

LA PROGRAMACION

ORIENTADA A OBJETOS

Dentro del contexto de un lenguaje orientado a objetos (LOO), un objeto encapsula datos y los procedimientos/ funciones (mtodos) que manejan esos datos. La notacin grafica de un objeto vara de unas metodologas a otras El objeto retiene cierta informacin y conoce como realizar ciertas operaciones. La encapsulacin de operaciones e informacin es muy importante. Los mtodos de un objeto solo pueden manipular directamente datos asociados con ese objeto. Dicha encapsulacin es la propiedad que permite incluir en una sola entidad (el mdulo u objeto) la informacin (los datos o atributos) y las operaciones (los mtodos y funciones) que operan sobre esa informacin.

IDENTIFICACION DE OBJETOS El primer problema que se nos plantea al analizar un problema que se desea implementar mediante un programa orientado a objetos es identificar los objetos; es decir Qu cosas son objetos? Cmo deducimos los objetos dentro del dominio de la definicin del problema?. La identificacin de objetos se obtiene examinando la descripcin del problema (anlisis gramatical somero del enunciado o descripcin) y localizando los nombres o clusulas nominales. Normalmente, estos nombres y sus sinnimos se suelen escribir en una tabla de la que luego deduciremos los objetos reales. Los objetos, segn Shlaer, Mellor y Coad/Yourdon, pueden caer dentro de las siguientes categoras: Cosas tangibles (avin, reactor, nuclear, fuente de alimentacin, televisor, libro, automvil). Roles o papeles jugados o representados por personas (gerente, cliente, empleado, mdico, paciente, ingeniero). Organizaciones (empresa, divisin, equipo). Incidentes(representa un suceso - evento u ocurrencia, tales como vuelo, accidente, suceso, llamada a un servicio de asistencia tcnica..). Interacciones (implican generalmente una transaccin o contrato y relacionan dos o ms objetos del modelo: compras comprador, vendedor, artculo - matrimonio esposo, esposa, fecha de boda).

16

LA PROGRAMACION

ORIENTADA A OBJETOS

Una vez identificados los objetos, ser preciso identificar los atributos y las operaciones que actan sobre ellos. Los atributos describen la abstraccin de caractersticas individuales que poseen todos los objetos.

Las operaciones - su comportamiento de alguna forma, es decir, cambian valores de uno o ms atributos contenidos en el objeto. Aunque existen gran nmero de operaciones que se pueden realizar sobre un objeto, generalmente se dividen en tres grandes grupos: a. Operaciones que manipulan los datos de alguna forma especfica (aadir, borra, cambiar formato..). b. Realizar operaciones que realizan un clculo o proceso. c. Operaciones que comprueban (monitorizan) un objeto frente a la ocurrencia de algn suceso de control. La identificacin de las operaciones se realiza haciendo un nuevo anlisis gramatical de la descripcin del problema y buscando y aislando los verbos del texto.

Una clase es una descripcin de un conjunto de objetos; consta de mtodos y datos que resumen caractersticas comunes de un conjunto de objetos. Se pueden definir muchos objetos de la misma clase. Dicho de otro modo, una clase es la declaracin de un tipo objeto. Las clases son similares a los tipos de datos y equivalen a modelos o plantillas que describen cmo se construyen ciertos tipos de objetos. Cada vez que se construye un objeto a partir de una clase, estamos creando lo que se llama una instancia de esa clase. Por consiguiente, los objetos no son ms que instancias de una clase. Una instancia es una variable de tipo objeto. En general, instancia de una clase y objeto son trminos intercambiables. Cada vez que se construye un objeto de una clase, se crea una instancia de esa clase. Los objetos se crean cuando un mensaje de peticin de creacin se recibe por la clase base.

17

LA PROGRAMACION

ORIENTADA A OBJETOS

La clase es la construccin del lenguaje utilizada ms frecuentemente para definir los tipos abstractos de datos en Lenguajes de Programacin orientados a objetos. Una de las primeras veces que se utiliz el concepto de clase fue en Simula (Dahi y Nygaard, 1966; Dahl, Myhrhang y Nigaard, 1970) como entidad que declara conjuntos de objetos similares. En Simula, las clases se utilizaron principalmente como plantillas para crear objetos de la misma estructura. Los atributos de un objeto pueden ser tipos base, tales como enteros, reales y booleans; o bien pueden ser arrays, procedimientos o instancias de otras clases. Generalmente, una clase se puede definir como una descripcin abstracta de un grupo de objetos, cada uno de los cules se diferencia por un estado especifico y es capaz de realizar una serie de operaciones. Por ejemplo, una pluma estilogrfica, es un objeto que tiene un estado (llena de tinta o vaca) que puede realizar algunas operaciones (por ejemplo escribir, poner/quitar el capuchn, rellenar si est vaca). En programacin, una clase es una estructura que contiene datos y procedimientos (o funciones) que son capaces de operar sobre esos datos. Una clase pluma estilogrfica puede tener, por ejemplo, una variable que indica si est llena o vaca; otra variable puede contener la cantidad de tinta cargada realmente. La clase contendr algunas funciones que operan o utilizan esas variables. Dentro de un programa, las clases tienen dos propsitos principales: definir abstracciones y favorecer la modularidad. METODOS Y MENSAJES Un programa orientado a objetos consiste en un nmero de objetos que se comunican unos con otros llamando a funciones miembro. Las funciones miembro se denominan mtodos en otros lenguajes orientados a objetos (Tales como Smalltalk y Turbo Pascal). Los procedimientos o funciones, denominados mtodos o funciones miembro, residen en el objeto y determinan como actan los objetos cuando reciben un mensaje. Un mensaje es la accin que hace un objeto. Un mtodo es el procedimiento o funcin que se invoca para actuar sobre un objeto. Un mtodo especifica cmo se ejecuta un mensaje. El conjunto de mensajes a los cuales puede responder un objeto se denomina protocolo del objeto. Por ejemplo, el protocolo de un icono puede constar de mensajes invocados por el clic de un botn del ratn cuando el usuario localiza un puntero sobre un icono. 18

LA PROGRAMACION

ORIENTADA A OBJETOS

Al igual que en las cajas negras, la estructura interna de un objeto esta oculta a los usuarios y programadores. Los mensajes que recibe el objeto son los nicos conductos que conectan el objeto con el mundo externo. Los datos de un objeto estn disponibles para ser manipulados solo por los mtodos del propio objeto. Cuando se ejecuta un programa orientado a objetos ocurren tres sucesos: Primero, los objetos se crean a medida que se necesitan. Segundo, los mensajes se mueven de un objeto a otro (o desde el usuario a un objeto) a medida que el programa procesa informacin internamente o responde a la entrada del usuario. Tercero, cuando los objetos ya no son necesarios, se borran y se libera la memoria.

19

LA PROGRAMACION

ORIENTADA A OBJETOS

Un mensaje es una peticin de un objeto a otro objeto al que le solicita ejecutar uno de sus mtodos. Por convenio, el objeto que enva la peticin se denomina emisor y el objeto que recibe la peticin se denomina receptor.

Cuando un objeto est inactivo y recibe un mensaje, se hace activo. El mensaje enviado por otros objetos o fuentes tiene asociado un mtodo que se activara cuando el receptor recibe dicho mensaje. La peticin no especifica cmo se realiza la operacin. Tal informacin se oculta siempre al emisor. El conjunto de mensajes a los que responde un objeto se denomina comportamiento del objeto. No todos los mensajes de un objeto responden; es preciso que pertenezcan al interfaz accesible.

Los mtodos (operaciones o servicios) describen el comportamiento asociado a un objeto. Representan las acciones que pueden realizarse por un objeto o sobre un objeto. La ejecucin de un mtodo puede conducir a cambiar el estado del objeto o dato local del objeto. Cada mtodo tiene un nombre y un cuerpo que realiza la accin o comportamiento asociado con el nombre del mtodo. En un LOO, el cuerpo de un mtodo consta de un bloque de cdigo procedimental que ejecuta la accin requerida. Todos los mtodos que alteran o acceden a los datos de un objeto se definen dentro del objeto. Un objeto puede modificar directamente o acceder a los datos de otros objetos. Un mtodo dentro de un objeto se activa por un mensaje que se enva por otro objeto al objeto que contiene el mtodo. De modo alternativo, se puede llamar por otro mtodo en el mismo objeto por un mensaje local enviado de un mtodo a otro dentro del objeto. 20

LA PROGRAMACION

ORIENTADA A OBJETOS

COMUNICACIONES ENTRE OBJETOS Y LOS MENSAJES Ya se ha mencionado que los objetos realizan acciones cuando ellos reciben mensajes. El mensaje es esencialmente una orden que se enva a un objeto para indicarle que realice alguna accin. Esta tcnica de enviar mensajes a objetos se denomina pasar mensajes. Los objetos se comunican entre si enviando mensajes, al igual que sucede con las personas. Los mensajes tiene una contrapartida denominada mtodos. Mensajes y mtodos son dos caras de la misma moneda. Los mtodos son los procedimientos que se invocan cuando un objeto recibe un mensaje. En terminologa de programacin tradicional, un mensaje es una llamada a una funcin. Los mensajes juegan un papel crtico en POO. Sin ellos los objetos que se definen no se podrn comunicar entre s. Como ejemplo, consideramos enviar un mensaje tal como subir lneas el objeto definido anteriormente. El aspecto importante no es cmo se implementa un mensaje, sino cmo se utiliza.

21

LA PROGRAMACION

ORIENTADA A OBJETOS

Una aplicacin Windows es un buen ejemplo de cmo se emplean los mensajes para comunicarse entre objetos. El usuario pulsa un botn para enviar (remitir, despachar) mensajes a otros objetos que realizan una funcin especfica. Si se pulsa el botn Exit, se enva un mensaje al objeto responsable de cerrar la aplicacin. Si el mensaje es vlido, se invoca el mtodo interno. Entonces se cierra la aplicacin.

La encapsulacin es una caracterstica muy potente, y junto con la ocultacin de la informacin, representan el concepto avanzado de objeto, que adquiere su mayor relevancia cuando encapsula e integra datos, ms las operaciones que manipulan los datos en dicha entidad. Sin embargo, la orientacin a objetos se caracteriza, adems de por las propiedades anteriores, por incorporar la caracterstica de herencia, propiedad que permite a los objetos ser construidos a partir de otros objetos. Dicho de otro modo, la capacidad de un objeto para utilizar las estructuras de datos y los mtodos previstos en antepasados o ascendientes. El objetivo final es la reutilizabilidad o reutilizacin, es decir reutilizar cdigo anteriormente ya desarrollado. La herencia se apoya en el significado de ese concepto en la vida diaria. As, las clases bsicas o fundamentales se dividen en subclases. Los animales se dividen en mamferos, anfibios, insectos, pjaros, peces, etc La clase vehculo se divide en subclase automvil, motocicleta, camin, autobs, etc El principio en que se basa la divisin de clases es la jerarqua compartiendo caractersticas comunes. As, todos los vehculos citados tienen una caja para transportar mercancas, mientras que las motocicletas tienen un manillar en lugar de un volante.

22

LA PROGRAMACION

ORIENTADA A OBJETOS

La herencia supone una clase base y una jerarqua de clases que contienen las clases derivadas de la clase base. Las clases derivadas pueden heredar el cdigo y los datos de su clase base, aadiendo su propio cdigo especial y datos a ellas, incluso cambiar aquellos elementos de la clase base que necesita sean diferentes. No se debe confundir las relaciones de los objetos con las clases, con las relaciones de una clase base con sus clases derivadas. Los objetos existentes en la memoria de la computadora expresan las caractersticas exactas de su clase y sirven como un mdulo o plantilla. Las clases derivadas heredan caractersticas de su clase base, pero aaden otras caractersticas propias nuevas. As, se puede decir que una clase de objetos es un conjunto de objetos que comparten caractersticas y comportamientos comunes. Estas caractersticas y comportamientos se definen en una clase base. Las clases derivadas se crean en un proceso de definicin de nuevos tipo y reutilizacin del cdigo anteriormente desarrollado en la definicin de sus clases base. Este proceso se denomina programacin por herencia. Las clases que heredan propiedades de una clase base pueden a su vez servir como definiciones base de otras clases. Las jerarquas de clases se organizan en forma de rbol.

La capacidad de utilizar funciones virtuales y ejecutar sobrecarga conduce a una caracterstica importante de los sistemas OO, conocida como polimorfismo, que esencialmente permite desarrollar sistemas en los que los objetos diferentes puedan responder de modo diferente al mismo mensaje. Esta propiedad, en su concepcin bsica, se encuentra en casi todos los lenguajes de programacin. El polimorfismo, en su expresin ms simple, es el uso de un nombre o un smbolo por ejemplo un operador para representar o significar ms de una accin. As, en C, Pascal y FORTRAN entre otros lenguajes los operadores aritmticos representan un ejemplo de esta caracterstica. El smbolo +, cuando se utiliza con enteros, representa un conjunto de instrucciones mquina distinto de cuando los operadores son valores reales de doble precisin. De igual modo, en algunos lenguajes el smbolo + sirve para realizar sumas aritmticas o bien para concatenar (unir) cadenas. La utilizacin de operadores o funciones de formas diversas, dependiendo de cmo se estn operando, se denomina polimorfismo (mltiples formas). Cuando un operador existente en el lenguaje tal como +, = o * se le asigna la posibilidad de operar sobre un nuevo tipo de dato, se dice que esta sobrecargado. La sobrecarga es una clase de polimorfismo, que tambin es una caracterstica importante de POO. Un uso tpico de los operadores aritmticos es la sobrecarga de los mismos para actuar sobre tipos de datos predefinidos. Supongamos que se tienen tipos de datos que representan las 23

LA PROGRAMACION

ORIENTADA A OBJETOS

posiciones de puntos en la pantalla de un computador (coordenadas x e y). En un lenguaje orientado a objetos se puede realizar la operacin aritmtica. Posicion1 = origen + posicion2 Donde las variables posicion1, posicion2 y origen representan cada una posiciones de puntos, sobrecargando el operador ms (+) para realizar la suma de posiciones de puntos (x, y). Adems de esta operacin de suma se podran realizar otras operaciones, tales como resta, multiplicacin, etc, sobrecargando convenientemente los operadores -, *, etc. En un sentido ms general, el polimorfismo supone que un mismo mensaje puede producir acciones (resultados) totalmente diferentes cuando se reciben por objetos diferentes. Con polimorfismo un usuario puede enviar un mensaje genrico y dejar los detalles de la implementacin exacta para el objeto que recibe el mensaje. El polimorfismo se fortalece con el mecanismo de herencia.

PROPIEDADES DE LA POO Los elementos ms importantes que deben tener los objetos de software, para cumplir con el paradigma de orientacin a objetos son: o o o o Abstraccin. Modularidad. Encapsulamiento. Jerarqua.

La abstraccin es el proceso en el cual separamos las propiedades ms importantes de un objeto, de las que no lo son. Es decir, por medio de la abstraccin definimos las caractersticas esenciales de un objeto del mundo real, los atributos y comportamientos que lo definen como tal, para despus modelarlo en un objeto de software. En el proceso de abstraccin no debemos preocuparnos por la implementacin de cada mtodo o atributo, solamente debemos definirlo de forma general. Por ejemplo, supongamos que deseamos escribir un programa para representar el sistema solar, por medio de la abstraccin, podemos ver a ste sistema como un conjunto de objetos, algunos de estos objetos son los planetas, que tienen un estado, dado por sus caractersticas fsicas, digamos, tamao, masa, entre otras, estos objetos tendrn tambin comportamientos: la translacin y la rotacin, pueden mencionarse como los ms evidentes. Visualizar las entidades que deseamos trasladar a nuestros programas, en trminos abstractos, resulta de gran utilidad para un diseo ptimo de nuestro 24

LA PROGRAMACION

ORIENTADA A OBJETOS

software, ya que nos permite comprender ms fcilmente la programacin requerida. En la tecnologa orientada a objetos la herramienta principal para soportar la abstraccin es la clase. Podemos definir a una clase como una descripcin genrica de un grupo de objetos que comparten caractersticas comunes, dichas caractersticas se especificadas en sus atributos y comportamientos. En otras palabras, una clase es un molde o modelo en donde se especifican las caractersticas que definen a un objeto de manera general, a partir de una clase podemos definir objetos particulares. En programacin orientada a objetos se dice que un objeto es una instancia de la clase, es decir un objeto, es un caso particular del conjunto de objetos que comparten caractersticas similares, definidas en la clase. Un ejemplo servir para clarificar estos conceptos. Definamos a la clase persona, esta clase tendr ciertos atributos, por ejemplo edad, sexo y nombre entre otros. Las acciones o comportamientos que podemos definir para esta clase son, por ejemplo, respirar, caminar, comer, etctera. Estas son, para nuestro caso, las caractersticas que definen a nuestra clase persona. Un objeto instanciado de esta clase podra ser Juan Prez, de sexo masculino y de 35 aos de edad, quin se encuentra caminando. Estos atributos son conocidos formalmente en programacin orientada a objetos como variables de instancia por que contienen el estado de un objeto particular en un momento dado, en este caso Juan Prez. As mismo, los comportamientos son llamados mtodos de instancia porque nos muestran el comportamiento de un objeto particular de la clase. Hay que tener cuidado de no confundir un objeto con una clase, una gelatina de fresa y una gelatina de limn son objetos de la misma clase (o del mismo molde), pero con atributos (o sabores) diferentes.

Dentro de la programacin orientada a objetos, la modularidad juega un papel muy importante. Una vez que hemos representado una situacin del mundo real en un programa, tenemos regularmente como resultado, un conjunto de objetos de software que constituyen la aplicacin. La modularidad, nos permite poder modificar las caractersticas de la clase que definen a un objeto, de forma independiente de las dems clases en la aplicacin. En otras palabras, si nuestra aplicacin puede dividirse en mdulos separados, normalmente clases, y estos mdulos pueden compilarse y modificarse sin afectar a los dems, entonces dicha aplicacin ha sido implementada en un lenguaje de programacin que soporta la modularidad. La tecnologa orientada a objetos nos brinda esta propiedad para hacer uso de ella en el software que desarrollemos. 25

LA PROGRAMACION

ORIENTADA A OBJETOS

Tambin referido como ocultamiento de la informacin, el encapsulamiento es la propiedad de la orientacin a objetos que nos permite asegurar que la informacin de un objeto le es desconocida a los dems objetos en la aplicacin. Es muy frecuente referirse a los objetos de software como cajas negras, esto se debe principalmente a que no necesitamos, dentro de la programacin orientada a objetos, saber cmo esta instrumentado un objeto para que este interacte con los dems objetos. Generalmente una clase se define en dos partes, una interfaz por medio de la cual los objetos que son instanciados de la misma interactan con los dems objetos en la aplicacin, y la implementacin de los miembros de dicha clase (mtodos y atributos). Supongamos que deseamos realizar una aplicacin en donde deben interactuar el objeto Mercedes Benz, instancia de la clase automvil y el objeto Juan Prez, instancia de la clase Persona. Ambos objetos pueden ser vistos como cajas negras las cuales se comunican por medio de una interfaz. El objeto Mercedes no sabe cmo esta implementado el objeto Juan Prez y viceversa. Concretamente, el encapsulamiento permite a un objeto ocultar informacin al mundo exterior, o bien restringir el acceso a la misma. Una aplicacin orientada a objetos est constituida, como mencionamos anteriormente, por mdulos. Estos mdulos se implementan mediante clases, las cuales representan, generalmente, abstracciones de objetos del mundo real. Es por medio del encapsulamiento que podemos definir los atributos y los mtodos de una clase para que los objetos que se instancian de sta trabajen como unidades independientes de los dems objetos con los que interactan. En otras palabras, con el encapsulamiento ganamos modularidad, y adems protegemos a los objetos de ser manipulados de forma inadecuada por objetos externos.

26

LA PROGRAMACION

ORIENTADA A OBJETOS

Una vez que hemos definido una clase, por ejemplo la clase bicicleta, con sus atributos y mtodos, tal vez necesitemos definir una nueva clase especfica para las bicicletas de carreras. Es obvio que sta nueva clases compartir elementos en comn con la clase bicicleta, es decir, la clase bicicleta de carreras ser un subconjunto de la clase bicicleta. La tecnologa orientada a objetos nos permite definir jerarquas entre clases y jerarquas entre objetos. Las dos jerarquas ms importantes que existen son la jerarqua es un que precisa la generalizacin y especificacin entre clases y la jerarqua es parte de en la cual se delimita la agregacin de objetos. Comnmente, a la jerarqua es un se le conoce como herencia. La herencia simple es la propiedad que nos permite definir una clase nueva en trminos de una clase ya existente. Regresando al ejemplo, si podemos decir que una bicicleta de ca rreras es una bicicleta, entonces podemos definir a la clase bicicleta de carreras a partir de la clase bicicleta. Existirn casos en los cuales se necesite definir una clase a partir de dos o ms clases preexistentes, en este caso estaremos hablando de herencia mltiple. En cuanto a la jerarqua de agregacin, tambin conocida como inclusin, podemos decir que se trata del agrupamiento lgico de objetos relacionados entre s dentro de una clase. Supongamos que tenemos que definir a la clase automvil, pero adems hemos definido ya a la clase volante. Si podemos expresar la oracin, un volante es parte de un automvil, entonces podemos instanciar un objeto de la clase volante, para definir a la clase automvil. En este caso, se dice que automvil es una agregacin y volante es un agregado de automvil.

27

LA PROGRAMACION

ORIENTADA A OBJETOS

EJEMPLO DE CLASE Una clase, es simplemente una abstraccin que hacemos de nuestra experiencia sensible. El ser humano tiende a agrupar seres o cosas (objetos) con caractersticas similares en grupos (clases). As, aun cuando existen por ejemplo multitud de vasos diferentes, podemos reconocer un vaso en cuanto lo vemos, incluso aun cuando ese modelo concreto de vaso no lo hayamos visto nunca. El concepto de vaso es una abstraccin de nuestra experiencia sensible. Quizs el ejemplo ms claro para exponer esto lo tengamos en las taxonomas; los bilogos han dividido a todo ser (vivo o inerte) sobre la tierra en distintas clases. Tomemos como ejemplo una pequea porcin del inmenso rbol taxonmico:

28

LA PROGRAMACION

ORIENTADA A OBJETOS

Ellos, llaman a cada una de estas parcelas reino, tipo, clase, especie, orden, familia, gnero, etc.; sin embargo, nosotros a todas las llamaremos del mismo modo: clase. As, hablaremos de la clase animal, clase vegetal y clase mineral, o de la clase flidos y de las clases leo (len) y tigris (tigre). Cada clase posee unas cualidades que la diferencian de las otras. As, por ejemplo, los vegetales se diferencian de los minerales (entre otras muchas cosas) en que los primeros son seres vivos y los minerales no. De los animales se diferencian en que las plantas son capaces de sintetizar clorofila a partir de la luz solar y los animales no. Como vemos, el ser humano tiende, de un modo natural a clasificar los objetos del mundo que le rodean en clases; son definiciones estructuralistas de la naturaleza al estilo de la escuela francesa de Saussure. Prosigamos con nuestro ejemplo taxonmico y bajemos un poco en este rbol de clases. Situmonos en la clase felinos (felis), aqu tenemos varias subclases (gneros en palabras de los bilogos): len, tigre, pantera, gato, etc. cada una de estas subclases, tienen caractersticas comunes (por ello los identificamos a todos ellos como felinos) y caractersticas diferenciadoras (por ello distinguimos a un len de una pantera), sin embargo, ni el len ni la pantera en abstracto existen, existen leones y panteras particulares, pero hemos realizado una abstraccin de esos rasgos comunes a todos los elementos de una clase, para llegar al concepto de len, o de pantera, o de felino.

29

LA PROGRAMACION

ORIENTADA A OBJETOS

La clase len se diferencia de la clase pantera en el color de la piel, y comparte ciertos atributos con el resto de los felinos (uas retrctiles por ejemplo) que lo diferencian del resto de los animales. Pero la clase len, tambin hereda de las clases superiores ciertas cualidades: columna vertebral (de la clase vertebrados) y es alimentado en su infancia por leche materna (de la clase mamferos). Vemos cmo las clases superiores son ms generales que las inferiores y cmo, al ir bajando por este rbol, vamos definiendo cada vez ms (dotando de ms cualidades) a las nuevas clases. Hay cualidades que ciertas clases comparten con otras, pero no son exactamente iguales en las dos clases. Por ejemplo, la clase hombre, tambin deriva de la clase vertebrado, por lo que ambos poseen columna vertebral, sin embrago, mientras que en la clase hombre se halla en posicin vertical, en la clase len la columna vertebral est en posicin horizontal. En OOP existe otro concepto muy importante asociado al de clase, el de " clase abstracta". Una clase abstracta es aquella que construimos para derivar de ella otras clases, pero de la que no se puede instanciar. Por ejemplo, la clase mamfero, no existe como tal en la naturaleza, no existe ningn ser que sea tan solo mamfero (no hay ninguna instanciacin directa de esa clase), existen humanos, gatos, conejos, etc. Todos ellos son mamferos, pero no existe un animal que sea solo mamfero. Del mismo modo, la clase que se halla al inicio de la jerarqua de clases, normalmente es creada slo para que contenga aquellos datos y mtodos comunes a todas las clases que de ella derivan: Son clases abstractas. En rboles complejos de jerarquas de clases, suele haber ms de una clase abstracta. Este es un concepto muy importante: el de " clase abstracta". Como hemos dicho, una clase abstracta es aquella que construimos para derivar de ella otras clases, pero de la que no se puede instanciar. Por ejemplo, la clase mamfero, no existe como tal en la naturaleza, no existe ningn ser que sea tan solo mamfero (no hay ninguna instanciacin directa de esa clase), existen humanos, gatos, conejos, etc. Todos ellos son mamferos, pero no existe un animal que sea solo mamfero. Por ltimo, adelantemos algo sobre el concepto de objeto. El len, como hemos apuntado antes, no existe, igual que no existe el hombre; existen leones en los circos, en los zoolgicos y, segn tenemos entendido, an queda alguno en la sabana africana. Tambin existen hombres, como usted, que est leyendo esta monografa (hombre en un sentido neutro, ya sea de la subclase mujer o varn), o cada uno de los que nos encontramos a diario en todas partes. 30

LA PROGRAMACION

ORIENTADA A OBJETOS

Todos estos hombres comparten las caractersticas de la clase hombre, pero son diferentes entre s, en estatura, pigmentacin de la piel, color de ojos, complexin, etc. A cada uno de los hombres particulares los llamamos "objetos de la clase hombre". Decimos que son objetos de tipo hombre o que pertenecen a la clase hombre. Ms tcnicamente, Jos Luis Aranguren o Leonardo da Vinci son instanciaciones de la clase hombre; instanciar un objeto de una clase es crear un nuevo elemento de esa clase, cada nio que nace es una nueva instanciacin a la clase hombre. EJEMPLO DE OBJETO

En OOP, un objeto es un conjunto de datos y mtodos. Los datos son lo que antes hemos llamado caractersticas o atributos, los mtodos son los comportamientos que pueden realizar. Lo importante de un sistema OOP es que ambos, datos y mtodos estn tan intrnsecamente ligados, que forman una misma unidad conceptual y operacional. En OOP, no se pueden desligar los datos de los mtodos de un objeto. As es como ocurre en el mundo real. Ejemplo N 01 Tomemos la clase len de la que hablamos antes y veamos cuales seran algunos de sus datos y de sus mtodos.

DATOS Color Tamao Peso Uas retractiles Colmillos Cuadrpedo

METODOS Desplazarse Masticar Rugir Respirar Secretar hormonas Parpadear

Ejemplo N 02 Nuestros objetos (los informticos), como hemos comentado antes, se parecen mucho a los del mundo real, al igual que estos, poseen propiedades (datos) y comportamientos (mtodos). Cojamos para nuestro ejemplo un cassette. Veamos cmo lo definiramos al estilo de OOP.

31

LA PROGRAMACION

ORIENTADA A OBJETOS

DATOS Peso Dimensiones Color Potencia

METODOS Rebobinar la cinta Avanzar la cinta Grabar Reproducir

EJEMPLO DE HERENCIA Esta es la cualidad ms importante de un sistema OOP, la que nos dar mayor potencia y productividad, permitindonos ahorrar horas y horas de codificacin y de depuracin de errores. Como todos entendemos lo que es la herencia biolgica, continuaremos con nuestro ejemplo taxonmico del que hablbamos en el epgrafe anterior. La clase len, como comentbamos antes, hereda cualidades (mtodos, en lenguaje OOP) de todas las clases predecesoras (padres, en OOP) y posee mtodos propios, diferentes a los del resto de las clases. Es decir, las clases van especializndose segn se avanza en el rbol taxonmico. Cada vez que creamos una clase heredada de otra (la padre) aadimos mtodos a la clase padre o modificamos alguno de los mtodos de la clase padre. Veamos qu hereda la clase len de sus clases padre: CLASE Vertebrados Mamferos Carnvoros QUE HEREDA Espina dorsal. Se alimenta con leche materna. Al ser adultos se alimentan de carne.

La clase len hereda todos los mtodos de las clases padre y aade mtodos nuevos que forman su clase distinguindola del resto de las clases: por ejemplo el color de su piel. Observemos ahora algo crucial que ya apuntbamos antes: dos subclases distintas, que derivan de una misma clase padre comn, pueden heredar los mtodos de la clase padre tal y como estos han sido definidos en ella, o pueden modificar todos o algunos de estos mtodos para adaptarlos a sus necesidades. En el ejemplo que exponamos antes, en la clase len la alimentacin es carnvora, mientras que en la clase hombre, se ha modificado ste dato, siendo su alimentacin omnvora.

32

LA PROGRAMACION

ORIENTADA A OBJETOS

Las cualidades comunes que comparten distintas clases, pueden y deben agruparse para formar una clase padre (tambin llamada superclase). Por ejemplo, usted podra derivar las clases presupuesto, albarn y factura de la superclase pedidos, ya que estas clases comparten caractersticas comunes. De este modo, la clase padre poseera los mtodos comunes a todas ellas y slo tendramos que aadir aquellos mtodos propios de cada una de las subclases, pudiendo reutilizar el cdigo escrito en la superclase desde cada una de las clases derivadas. As, si enseamos a la clase padre a imprimirse, cada uno de los objetos de las clases inferiores sabrn automticamente y sin escribir ni una sola lnea ms de cdigo imprimirse.

EJEMPLO DE ENCAPSULACION

Al enviar un mensaje al objeto, se ejecuta un mtodo, el cual puede llamar a su vez a otros mtodos de su clase o de cualquier otra clase o bien cambiar los valores de los datos de ese objeto. Si el programador tiene que alterar los valores de los datos de un objeto deber mandar un mensaje a ese objeto; lo mismo sucede cuando un objeto tiene que cambiar los valores de los datos de otro objeto. Como podemos apreciar, un objeto es como una caja negra, a la que se le enva un mensaje y ste responde ejecutando el mtodo apropiado, el cual producir las acciones deseadas. un objeto, una vez programado es solo manipulable a travs de mensajes. A este intrnseco vnculo entre datos y mtodos y al modo de acceder y modificar sus datos es a lo que llamamos Encapsulacin. Gracias a la encapsulacin, una clase, cuando ha sido programada y probada hasta comprobar que no tiene fallos, podemos usarla sin miedo a que al programar otros objetos estos puedan interferir con los primeros produciendo efectos colaterales indeseables que arruinen nuestro trabajo; esto tambin nos permite depurar (eliminar errores de programacin) con suma facilidad, ya que si un objeto falla, el error solo puede estar en esa clase, y no en ninguna otra.

EJEMPLO DE POLIMORFISMO
Por polimorfismo entendemos aquella cualidad que poseen los objetos para responder de distinto modo ante el mismo mensaje. Pongamos por ejemplo las clases hombre, vaca y perro, si a todos les damos la orden (enviamos el mensaje) Come, cada uno de ellos sabe cmo hacerlo y realizar este comportamiento a su modo.

33

LA PROGRAMACION

ORIENTADA A OBJETOS

Veamos otro ejemplo algo ms ilustrativo. Tomemos las clases barco, avin y coche, todas ellas derivadas de la clase padre vehculo; si les enviamos el mensaje Desplzate, cada una de ellas sabe cmo hacerlo. Realmente, y para ser exactos, los mensaje no se envan a las clases, sino a todos o algunos de los objetos instanciados de las clases. As, por ejemplo, podemos decirle a los objetos Juan Sebastin el Cano y Kontiqui, de la clase barco que se desplacen, con los que el resto de los objetos de esa clase permanecern inmviles. Del mismo modo, si tenemos en pantalla cinco recuadros (marcos) y tres textos, podemos decirle a tres de los recuadros y a dos de los textos que cambien de color y no decrselo a los dems objetos. Todos estos sabrn cmo hacerlo porque hemos redefinido para cada uno de ellos su mtodo Pintarse que bien podra estar en la clase padre Visual (conjunto de objetos que pueden visualizarse en pantalla). En programacin tradicional, debemos crear un nombre distinto para la accin de pintarse, si se trata de un texto o de un marco; en OOP el mismo nombre nos sirve para todas las clases creadas si as lo queremos, lo que suele ser habitual. El mismo nombre suele usarse para realizar acciones similares en clases diferentes. Si enviamos el mensaje Imprmete a objetos de distintas clases, cada uno se imprimir como le corresponda, ya que todos saben cmo hacerlo. El polimorfismo nos facilita el trabajo, ya que gracias a l, el nmero de nombres de mtodos que tenemos que recordar disminuye ostensiblemente. La mayor ventaja la obtendremos en mtodos con igual nombre aplicados a las clases que se encuentran prximas a la raz del rbol de clases, ya que estos mtodos afectarn a todas las clases que de ellas se deriven.

34

LA PROGRAMACION

ORIENTADA A OBJETOS

II.

CONCLUSIONES

A manera de conclusin podemos decir que la tecnologa orientada a objetos nos permite disear e implementar sistemas bajo un paradigma de programacin en el cual, por medio de la abstraccin definimos a las clases o entidades de software a partir de entidades del mundo real. De dichas entidades instanciaremos objetos de software que se correspondern con los objetos reales que representan. Esto nos permite enfocarnos ms en la solucin del problema que en la implantacin de dicha solucin. La programacin orientada a objetos, ha tomado las mejores ideas de la programacin estructurada y los ha combinado con varios conceptos nuevos y potentes que incitan a contemplar las tareas de programacin desde un nuevo punto de vista. La programacin orientada a objetos, permite descomponer ms fcilmente un problema en subgrupos de partes relacionadas del problema. Entonces, utilizando el lenguaje se pueden traducir estos subgrupos a unidades auto contenidas llamadas objetos. El trmino Programacin Orientada a Objetos (POO), hoy en da ampliamente utilizado, es difcil de definir, ya que no es un concepto nuevo, sino que ha sido el desarrollo de tcnicas de programacin desde principios de la dcada de los setenta, aunque sea en la dcada de los noventa cuando ha aumentado su difusin, uso y popularidad. No obstante, se puede definir POO como una tcnica o estilo de programacin que utiliza objetos como bloque esencial de construccin. La programacin orientada a objetos incorpora estos seis componentes importantes: Objetos Clases Mtodos Mensajes Herencia Polimorfismo

Un objeto se compone de datos y funciones que operan sobre estos objetos. La tcnica de situar datos dentro de objetos de modo que no se puede acceder directamente a los datos se llama ocultacin de la informacin. Una clase es una descripcin de un conjunto de objetos. Una instancia es una variable de tipo objeto y un objeto es una instancia de una clase. La herencia es la propiedad que permite a un objeto pasar sus propiedades a otro objeto. 35

LA PROGRAMACION

ORIENTADA A OBJETOS

Los objetos se comunican entre si pasando mensajes. La clase padre o ascendiente se denomina clase base y las clases descendientes clases derivadas. La reutilizacin del software es una de las propiedades ms importantes que presenta la programacin orientada a objetos. El polimorfismo es la propiedad por la cual un mismo mensaje puede actuar de diferente modo cuando acta sobre objetos diferentes ligados por la propiedad de herencia. El tipo abstracto de datos se implementa a travs de clases. Una clase es un conjunto de objetos que constituyen instancias de la clase, cada una de la cuales tienen la misma estructura y comportamiento. Una clase tiene un nombre, una coleccin de operaciones para manipular sus instancias y una representacin. Las operaciones que manipulan las instancias de una clase se llaman mtodos. El estado o representacin de una instancias se almacena en variables de instancia. Estos mtodos se invocan mediante el envo de mensajes a instancias. El envio de mensajes a objetos (instancias) es similar a la llamada a procedimientos en lenguajes de programacin tradicionales. El mismo nombre de un mtodo se puede sobrecargar con diferentes implementaciones; el mtodo imprimir se puede aplicar a enteros, arrays y cadenas de caracteres. El polimorfismo permite desarrollar sistemas en los que objetos diferentes pueden responder de modo diferente al mismo mensaje. La ligadura dinmica, sobrecarga y la herencia permite soportar el polimorfismo en lenguajes de programacin orientados a objetos.

36

LA PROGRAMACION

ORIENTADA A OBJETOS

III.

BIBLIOGRAFIA

Fuentes Bibliogrficas y acadmicas


Introduccin a la OOP. Versin 1.0.0 Mxico. Autor: Francisco Morero, 1999-2000 Grupo EIDOS LENGUAJE DE PROGRAMACION JAVA Autor: Eric Coronel Castillo, 2010 Grupo MACRO EIRL. PROGRAMACION ORIENTADA A OBJETOS. Luis Joyanes Aguilar, Grupo Interamericana de Espaa. PROGRAMACION ORIENTADA A OBJETOS Jos Arturo de los ngeles. Licenciado en Ciencias Computacionales de la Benemrita Universidad Autnoma de Puebla (Mxico).

Fuentes Electrnicas
Introduccin a la POO http://www.eidos.es/ebooks Caractersticas asociadas a la POO http://www.ciberaula.com/articulo/tecnologia_orientada_objetos/ Bases sobre las que se asienta la POO http://www.desarrolloweb.com/articulos/499.php Tecnologa orientada a objetos http://www.inei.gob.pe/biblioineipub/bancopub/inf/lib5040/TECN01.htm

37

LA PROGRAMACION

ORIENTADA A OBJETOS

IV.

GLOSARIO

Abstraccin: Es una representacin concisa de una idea o de un objeto complicado. Localiza y oculta los detalles de un modelo o diseo para generar y manipular objetos. Objeto: Una estructura de datos y conjunto de procedimientos que operan sobre dicha estructura. Entidad de programa que consiste en datos y todos aquellos procedimientos que pueden manipular aquellos datos. Para poder describir todos los objetos de un programa, conviene agrupar stos en clases. Clase: Coleccin de objetos que poseen caractersticas y operaciones comunes. Una clase contiene toda la informacin necesaria para crear nuevos objetos. Encapsulacin: Tcnica que permite localizar y ocultar los detalles de un objeto. La encapsulacin previene que un objeto sea manipulado por operaciones distintas de las definidas. La encapsulacin es como una caja negra que esconde los datos y solamente permite acceder a ellos de forma controlada. Cuando se define un objeto, se est creando implcitamente un nuevo tipo de datos. Polimorfismo: Significa que un nombre se puede utilizar para especificar una clase genrica de acciones. Herencia: Proceso mediante el cual un objeto puede adquirir las propiedades de otro objeto. Proceso: Conjunto de actividades que recibe uno o ms insumos y crea un producto de valor para el cliente. Dentro de cada proceso confluyen una o varias tareas. Tambin puede definirse como una ordenacin especfica de actividades, a lo largo del tiempo y el espacio, con un principio y un fin y con unas entradas y salidas. Tecnologa: Conjunto de tcnicas, conocimientos y procesos, que sirven para el diseo y construccin de objetos para satisfacer necesidades humanas.

38

También podría gustarte