Está en la página 1de 11

IV.- Programacin orientada a objetos y modelado 4.1 Caractersticas del modelo orientado a objetos.

Para entender este modelo vamos a revisar 4 conceptos bsicos:

Objetos Clases Herencia Envo de mensajes

1. Objetos Entender que es un objeto es la clave para entender cualquier lenguaje orientado a objetos. Existen muchas definiciones que se le ha dado al Objeto. Primero empecemos entendiendo que es un objeto del mundo real. Un objeto del mundo real es cualquier cosa que vemos a nuestro alrededor. Digamos que para leer este artculo lo hacemos a travs del monitor y una computadora, ambos son objetos, al igual que nuestro telfono celular, un rbol o un automvil. Analicemos un poco ms a un objeto del mundo real, como la computadora. No necesitamos ser expertos en hardware para saber que una computadora est compuesta internamente por varios componentes: la tarjeta madre, el chip del procesador, un disco duro, una tarjeta de video, y otras partes ms. El trabajo en conjunto de todos estos componentes hace operar a una computadora. Internamente, cada uno de estos componentes puede ser sumamente complicado y puede ser fabricado por diversas compaas con diversos mtodos de diseo. Pero nosotros no necesitamos saber cmo trabajan cada uno de estos componentes, como saber que hace cada uno de los chips de la tarjeta madre, o cmo funciona internamente el procesador. Cada componente es una unidad autnoma, y todo lo que necesitamos saber de adentro es cmo interactan entre s los componentes, saber por ejemplo si el procesador y las memorias son compatibles con la tarjeta madre, o conocer donde se coloca la tarjeta de video. Cuando conocemos como interaccionan los componentes entre s, podremos armar fcilmente una computadora. Que tiene que ver esto con la programacin? La programacin orientada a objetos trabaja de esta manera. Todo el programa est construido en base a diferentes componentes (Objetos), cada uno tiene un rol especfico en el programa y todos los componentes pueden comunicarse entre ellos de formas predefinidas. Todo objeto del mundo real tiene 2 componentes: caractersticas y comportamiento. Por ejemplo, los automviles tienen caractersticas (marca, modelo, color, velocidad mxima, etc.) y comportamiento (frenar, acelerar, retroceder, llenar combustible, cambiar llantas, etc.). Los Objetos de Software, al igual que los objetos del mundo real, tambin tienen caractersticas y comportamientos. Un objeto de software mantiene sus caractersticas en una o ms "variables", e implementa su comportamiento con "mtodos". Un mtodo es una funcin o subrutina asociada a un objeto.

Para redondear estas ideas, imaginemos que tenemos estacionado en nuestra cochera un Ford Focus color azul que corre hasta 260 km/h. Si pasamos ese objeto del mundo real al mundo del software, tendremos un objeto Automvil con sus caractersticas predeterminadas: Marca = Ford Modelo = Focus Color = Azul Velocidad Mxima = 260 km/h Cuando a las caractersticas del objeto le ponemos valores decimos que el objeto tiene estados. Las variables almacenan los estados de un objeto en un determinado momento. Definicin terica: Un objeto es una unidad de cdigo compuesto de variables y mtodos relacionados. 2. Las Clases En el mundo real, normalmente tenemos muchos objetos del mismo tipo. Por ejemplo, nuestro telfono celular es slo uno de los miles que hay en el mundo. Si hablamos en trminos de la programacin orientada a objetos, podemos decir que nuestro objeto celular es una instancia de una clase conocida como "celular". Los celulares tienen caractersticas (marca, modelo, sistema operativo, pantalla, teclado, etc.) y comportamientos (hacer y recibir llamadas, enviar mensajes multimedia, transmisin de datos, etc.).

Cuando se fabrican los celulares, los fabricantes aprovechan el hecho de que los celulares comparten esas caractersticas comunes y construyen modelos o plantillas comunes, para que a partir de esas se puedan crear muchos equipos celulares del mismo modelo. A ese modelo o plantilla le llamamos CLASE, y a los equipos que sacamos a partir de ella la llamamos OBJETOS.

Esto mismo se aplica a los objetos de software, se puede tener muchos objetos del mismo tipo y mismas caractersticas. Definicin terica: La clase es un modelo o prototipo que define las variables y mtodos comunes a todos los objetos de cierta clase. Tambin se puede decir que una clase es una plantilla genrica para un conjunto de objetos de similares caractersticas.

Por otro lado, una instancia de una clase es otra forma de llamar a un objeto. En realidad no existe diferencia entre un objeto y una instancia. Slo que el objeto es un trmino ms general, pero los objetos y las instancias son ambas representacin de una clase. Definicin Terica: Una instancia es un objeto de una clase en particular. Herencia Es una propiedad que permite que los objetos sean creados a partir de otros ya existentes, obteniendo caractersticas (mtodos y atributos) similares a los ya existentes Ejemplo: una familia de aves son descendientes de los pericos del guila y otros mas.

4.2 Elementos primordiales en el modelo de objetos La programacin Orientada a Objetos trata de cumplir las necesidades de los usuarios finales, ests tareas se realizan mediante la modelizacin del mundo real, el soporte fundamental es el modelo objeto. Los elementos ms importantes de este modelo son:

Abstraccin Encapsulamiento Polimorfismo Modularidad Jerarqua y Herencia

Abstraccin Definicin: consiste en aislar un elemento en su contexto de sus elementos que lo acompaan, en programacin, el trmino se refiere al nfasis en el qu hace ms que l como lo hace? Ejemplo: un coche para tratar de modelizarlo POO. Diramos que el coche es el elemento principal que tiene una serie de caractersticas, como podran ser el color el modelo ola marca.

Encapsulamiento: poder separar la interfaz de una clase de su implementacin o dicho en otras palabras no es necesario conocer los detalles de cmo estn implementados las propiedades para poder utilizarlas. Ejemplo: un telfono celular se encapsulan todos los datos privados que solo el usuario encargado debe saber por ejemplo el cdigo pin , los mensajes ,,entre otras cosas.

Polimorfismo Es un objeto que puede invocar una funcin y se la traslada a otro que est funcionando . Ejemplo: una oficina que tiene empleados y se subdividen empleados salario, empleado por comisin, empleado por horas y empleado base mas comisin a esto se le llama la aplicacin polimrfica de nomina de empleados.

Modularidad La modularidad es una opcin importante para la escalabilidad y comprensin de programas, adems de ahorrar trabajo y tiempo en el desarrollo. Ejemplo: un objeto que esta subdividido en varias partes.

4.2 Representacin grfica del diseo Un modelo o paradigma consiste en una representacin de un objeto en la que se toman en consideracin aspectos de inters respecto a la apariencia y al comportamiento del objeto. El resultado de modelar un objeto es un modelo del objeto, al cual se le denomina, en la jerga de los lenguajes de programacin orientados a objetos: objeto. Esto puede crear confusiones si no se establece claramente cundo se habla de uno u otro objeto: el del mundo real o el que resulta de aplicar el modelo de objetos. Modelo de objetos es el nombre global que reciben los elementos con que la ingeniera apoya a la tecnologa orientada a objetos. Este modelo incluye los elementos de abstraccin, encapsulamiento, modularidad, jerarqua, tipos , concurrencia y persistencia. De estos, los cuatro siguientes son fundamentales (esto es, indispensables) para considerar a un modelo como orientado a objetos: Abstraccin Encapsulamiento Modularidad Jerarqua La abstraccin es una de las principales herramientas con que combatimos la complejidad. Una abstraccin denota las caractersticas esenciales de un objeto y proporciona lmites conceptuales definidos respecto a la perspectiva del observador.

En el modelo de objetos se persigue construir abstracciones que imiten directamente el vocabulario de un determinado dominio de problema, por lo que el problema central del diseo orientado a objetos es tomar la decisin acerca del conjunto adecuado de abstracciones para ese dominio. Ejemplo: Para el Taller de Mantenimiento, el objeto mesabanco consiste en un mueble compuesto por un armazn, un asiento, un respaldo y una paleta. De estos elementos es importante conocer sus dimensiones, el material de que estn hechos y su color. As, los atributos de la clase MesaBanco seran: materialArmazn materialAsiento materialRespaldo longitudArmazn largoAsiento anchoAsiento largoRespaldo anchoRespaldo colorArmazn colorAsiento colorRespaldo

Para la Oficina de Control de Inventario, el mismo objeto mesabanco se modela tomando en consideracin: clave del mueble, descripcin del mueble, departamento al que est asignado, nombre de la persona que lo tiene a su resguardo, y costo del mueble. En este caso, la clase MesaBanco tendra los siguientes atributos : clave descripcin costo departamento nombreResguardo Comportamientos Los objetos no solamente poseen atributos, sino que tambin exhiben comportamientos que manifiestan al interactuar con otros objetos en un esquema cliente/servidor, donde un cliente es cualquier objeto que utiliza los recursos de otro objeto denominado servidor. Modelo contractual de programacin La vista exterior de cada objeto define un contrato del que pueden depender otros objetos. Tal contrato establece todas las suposiciones que puede hacer un objeto cliente acerca del comportamiento que debe ser llevado a cabo por la vista interior de un objeto servidor. Cada operacin que contribuye al contrato tiene una sola firma compuesta por todos sus argumentos formales y tipo de retorno. Al conjunto completo de operaciones que puede realizar un cliente sobre un objeto se le denomina su protocolo. El protocolo denota las formas en las que un objeto puede actuar y reaccionar, constituyendo la visin externa completa, esttica y dinmica de la abstraccin. Siguiendo con el ejemplo del objeto servidor mesabanco podemos tomar la decisin de diseo de asignarle las responsabilidades de saber cundo est ocupado y responder al cliente si lo est o no. Las operaciones del cliente sobre el mesabanco son: ocuparlo o desocuparlo y preguntar si est ocupado o no. Encapsulamiento El modelo de objetos maneja en un slo paquete los atributos y comportamientos de los objetos, por medio de un principio denominado encapsulamiento. La abstraccin y el encapsulamiento son conceptos complementarios: la abstraccin se centra en el comportamiento observable de un objeto, mientras que el encapsulamiento se centra en la implementacin que da lugar a ese comportamiento. El encapsulamiento es el proceso de almacenar en un mismo compartimento los elementos de una abstraccin que constituyen su estructura y su comportamiento; sirve para separar la interfaz contractual de una abstraccin y su implementacin.

El encapsulamiento se consigue, a menudo, mediante la ocultacin de informacin. Generalmente, la estructura de un objeto est oculta, as como la implementacin de sus mtodos. Modularidad La modularidad es la descomposicin de un sistema en un conjunto de mdulos cohesivos y dbilmente acoplados.

La descomposicin de un sistema en componentes individuales ayuda a manejar la complejidad. Sin embargo, una descomposicin desordenada puede producir un efecto contrario que se puede contrarrestar reagrupando los componentes en mdulos o paquetes. Cada mdulo debe contener componentes con caractersticas afines, de tal manera que faciliten la produccin de la arquitectura fsica de un sistema. En el diseo orientado a objetos, la modularizacin consiste en decidir dnde colocar fsicamente las clases y objetos a partir de la estructura lgica del diseo. Debe propiciarse que los mdulos se diseen y revisen independientemente. La estructura de cada mdulo debe ser lo bastante simple como para ser comprendida en su totalidad, haciendo posible cambiar su implementacin sin saber nada de la implementacin de los dems mdulos y sin afectar el comportamiento de stos. Modularidad sta caracterstica hace referencia a que un sistema puede ser dividido en mdulos que estn relacionados lgicamente permitiendo de esta manera un software: * Rpido para ejecutar * Fcil para detectar errores * Fcil para mantenimiento Ejemplo: Rompecabezas, pues cada elemento est relacionado con otros de tal manera que forman un objeto

ms complejo. Jerarqua y herencia La jerarqua es una clasificacin u ordenacin de abstracciones. La estructura de clases se representa por medio de una jerarqua que muestra la relacin de herencia es un. Clase En las etapas de anlisis y diseo, una clase es un conjunto de objetos que comparten caractersticas y comportamientos comunes entre s.

Herencia La herencia define la relacin entre clases es un, donde una subclase hereda de una o ms superclases.

La herencia implica una jerarqua de generalizacin/especializacin, en la que una subclase especializa el comportamiento y/o la estructura, mas general, de sus superclases. Herencia simple La herencia simple se da cuando, en una jerarqua de clases, las subclases solamente pueden heredar de una superclase. Herencia mltiple A diferencia de la herencia simple, en la herencia mltiple las subclases pueden heredar de ms de una superclase. Polimorfismo La palabra polimorfismo tiene como origen las palabras griegas poli (muchos) y morfos (formas) y se utiliza para indicar que un nombre puede denotar instancias (objetos) de clases diferentes que estn relacionadas por alguna superclase comn.

10

El polimorfismo puede considerarse como la caracterstica ms potente de los lenguajes orientados a objetos, despus de su capacidad para soportar la abstraccin. Existe polimorfismo cuando interactan las caractersticas de herencia y enlace dinmico. Enlace esttico y enlace dinmico El enlace esttico (denominado tambin enlace temprano) consiste en la asignacin esttica de tipos a todas las variables y expresiones, en tiempo de compilacin. El enlace dinmico (denominado tambin enlace tardo) consiste en asignar, en tiempo de ejecucin, los tipos a las variables y expresiones. 4.4 Relacin entre la programacin orientada a objetos y la estructurada. Aunque la programacin estructurada (a veces llamada procedural o procedimental) condujo a mejoras de la tcnica de programacin secuencial, los mtodos modernos de diseo de software orientado a objetos incluyen mejoras entre las que estn el uso de los patrones de diseo, diseo por contrato, y lenguajes de modelado (ej: UML). Las principales diferencias entre la programacin estructurada y la orientada a objetos son:

La programacin orientada a objetos es ms moderna, es una evolucin de la programacin estructurada que plasma en el diseo de una familia de lenguajes conceptos que existan previamente con algunos nuevos. La programacin orientada a objetos se basa en lenguajes que soportan sintctica y semnticamente la unin entre los tipos abstractos de datos y sus operaciones (a esta unin se la suele llamar clase). La programacin orientada a objetos incorpora en su entorno de ejecucin mecanismos tales como el polimorfismo y el envo de mensajes entre objetos.

Errneamente se le adjudica a la programacin estructurada clsica ciertos problemas como si fueran inherentes a la misma. Esos problemas fueron hacindose cada vez ms graves y antes de la programacin orientada a objetos diversos autores (de los que podemos destacar a Yourdon) encontraron soluciones basadas en aplicar estrictas metodologas de trabajo. De esa poca son los conceptos de cohesin y acoplamiento. De esos problemas se destacan los siguientes:

Modelo mental anmalo. Nuestra imagen del mundo se apoya en los seres, a los que asignamos nombres sustantivos, mientras la programacin clsica se basa en el comportamiento, representado usualmente por verbos. Es difcil modificar y extender los programas, pues suele haber datos compartidos por varios subprogramas, que introducen interacciones ocultas entre ellos. Es difcil mantener los programas. Casi todos los sistemas informticos grandes tienen errores ocultos, que no surgen a la luz hasta despus de muchas horas de funcionamiento. Es difcil reutilizar los programas. Es prcticamente imposible aprovechar en una aplicacin nueva las subrutinas que se disearon para otra. Es compleja la coordinacin y organizacin entre programadores para la creacin de aplicaciones de media y gran envergadura.

En la programacin orientada a objetos pura no deben utilizarse llamadas de subrutinas, nicamente mensajes. Por ello, a veces recibe el nombre de programacin sin CALL, igual que la programacin estructurada se llama tambin programacin sin GOTO. Sin embargo, no todos los lenguajes orientados a objetos prohben la instruccin CALL (o su equivalente), permitiendo realizar programacin hbrida, imperativa y orientada a objetos a la vez.

11

También podría gustarte