jueves, 25 de febrero de 2016


1.2 LENGUAJE DE MODELADO UNIFICADO:
DIAGRAMA DE CLASES.

LENGUAJE DE MODELADO UNIFICADO

Es el lenguaje de modelado de sistemas de software más conocido y utilizado en la actualidad. Es un lenguaje gráfico para visualizar, especificar, construir y documentar un sistema. UML ofrece un estándar para describir un "plano" del sistema (modelo), incluyendo aspectos conceptuales tales como procesos de negocio y funciones del sistema, y aspectos concretos como expresiones de lenguajes de programación, esquemas de bases de datos y componentes reutilizables.

Modelado  Visual

Tal como indica su nombre, UML es un lenguaje de modelado. Un modelo es una simplificación de la realidad. El objetivo del modelado de un sistema es capturar las partes esenciales del sistema. Para facilitar este modelado, se realiza una abstracción y se plasma en una notación gráfica. Esto se conoce como modelado visual.

Muchas de las metodologías de análisis y diseño de aplicaciones orientadas a objetos utilizan el lenguaje UML como lenguaje de modelado.

El Lenguaje de Modelado Unificado (UML - Unified Modeling Language) es un lenguaje que permite modelar, construir y documentar los elementos que forman un producto de software que responde a un enfoque orientado a objetos. Este lenguaje fue creado por un grupo de estudiosos de la Ingeniería de Software formado por: Ivar Jacobson, Grady Booch y James Rumbaugh en el año 1995. Desde entonces, se ha convertido en el estándar internacional para definir organizar y visualizar los elementos que configuran la arquitectura de una aplicación orientada a objetos. Con este lenguaje, se pretende unificar las experiencias acumuladas sobre técnicas de modelado e incorporar las mejores prácticas actuales en un acercamiento estándar.

UML no es un lenguaje de programación sino un lenguaje de propósito general para el modelado orientado a objetos y también puede considerarse como un lenguaje de modelado visual que permite una abstracción del sistema y sus componentes.

Entre sus objetivos fundamentales se encuentran:

1. Ser tan simple como sea posible, pero manteniendo la capacidad de modelar toda la gama de sistemas que se necesita construir.
2. Necesita ser lo suficientemente expresivo para manejar todos los conceptos que se originan en un sistema moderno, tales como la concurrencia y distribución, así como también los mecanismos de la ingeniería de software, como son el encapsulamiento y los componentes.
3. Debe ser un lenguaje universal, como cualquier lenguaje de propósito general.
4. Imponer un estándar mundial. 


Un modelo UML está compuesto por tres clases de bloques de construcción:

• Elementos: Los elementos son abstracciones de cosas reales o ficticias (objetos, acciones, etc.)
• Relaciones: relacionan los elementos entre sí.
• Diagramas: Son colecciones de elementos con sus relaciones.



DIAGRAMAS UML


Un diagrama es la representación gráfica de un conjunto de elementos con sus relaciones. En concreto, un diagrama ofrece una vista del sistema a modelar. Para poder representar correctamente un sistema, UML ofrece una amplia variedad de diagramas para visualizar el sistema desde varias perspectivas. UML incluye los siguientes diagramas:


1.    Diagrama de casos de uso
2.    Diagrama de clases.
3.    Diagrama de objetos.
4.    Diagrama de secuencia.
5.    Diagrama de colaboración.
6.    Diagrama de estados.
7.    Diagrama de actividades.
8.    Diagrama de componentes.
9.    Diagrama de despliegue.


Los diagramas más interesantes y los más usados son los de casos de uso, clases y secuencia, por lo que nos centraremos en éstos. Pare ello, se utilizará ejemplos de un sistema de venta de entradas de cine por Internet.



El diagrama de casos de usos representa gráficamente los casos de uso que tiene un sistema. Se define un caso de uso como cada interacción supuesta con el sistema a desarrollar, donde se representan los requisitos funcionales. Es decir, se está diciendo lo que tiene que hacer un sistema y cómo. En la figura 3 se muestra un ejemplo de casos de uso, donde se muestran tres actores (los clientes, los taquilleros y los jefes de taquilla) y las operaciones que pueden realizar (sus roles).




 El diagrama de clases muestra un conjunto de clases, interfaces y sus relaciones. Éste es el diagrama más común a la hora de describir el diseño de los sistemas orientados a objetos. En la figura 4 se muestran las clases globales, sus atributos y las relaciones de una posible solución al problema de la venta de entradas.

 


FUENTES BIBLIOGRÁFICAS






1.1 ELEMENTOS DEL MODELO DE OBJETOS CLASES, OBJETOS, ABSTRACCIÓN, MODULADOR, ENCAPSULAMIENTO, HERENCIA Y POLIMORFISMO.

CLASES
Clase a la declaración o abstracción de un objeto cuando se programa según el paradigma de orientación a objetos.  Son los datos y operaciones comunes a un conjunto de objetos que comparten características.
Por ejemplo, nuestro teléfono celular es sólo uno de los miles que hay en el mundo. Si hablamos en términos de la programación orientada a objetos, podemos decir que nuestro objeto celular es una instancia de una clase conocida como "celular".
Los celulares tienen características (marca, modelo, sistema operativo, pantalla, teclado, etc.) y COMPORTAMIENTOS (hacer y recibir llamadas, enviar mensajes multimedia, transmisión de datos, etc.).

OBJETOS
Entidad compuesta de datos y operaciones que realizan sobre esos datos. Mantienen unas características en una o más variables e implementan su comportamiento con métodos. Es un programa de computadora que consta de un estado y de un comportamiento, que a su vez constan respectivamente de datos almacenados y de tareas realizables durante el tiempo de ejecución. Un objeto puede ser creado instanciando una clase, como ocurre en la programación orientada a objetos, o mediante escritura directa de código y la replicación otros objetos, como ocurre en la programación basada en prototipos.
Todo el programa está construido en base a diferentes componentes (Objetos), cada uno tiene un rol específico en el programa y todos los componentes pueden comunicarse entre ellos de formas predefinidas.
Todo objeto del mundo real tiene 2 componentes: características y comportamiento.
Por ejemplo, los automóviles tienen características (marca, modelo, color, velocidad máxima, etc.) y comportamiento (frenar, acelerar, retroceder, llenar combustible, cambiar llantas, etc.).


ABSTRACCIÓN
Consiste en captar las características esenciales de un objeto, así como sus comportamientos, es decir, es un método por el cual obtenemos una determinada entidad de la realidad; sus características y funciones que desempeñan, estos son representados en clases por medios de atributos y métodos de dicha clase.
La abstracción consiste en aislar un elemento de su contexto o del resto de los elementos que lo acompañan. En programación, el término se refiere al énfasis en el "¿qué hace?" más que en el "¿cómo lo hace?" (Característica de caja negra).
Por ejemplo, volvamos al ejemplo de los automóviles, ¿Qué características podemos abstraer de los automóviles? O lo que es lo mismo ¿Qué características semejantes tienen todos los automóviles? Todos tendrán una marca, un modelo, número de chasis, peso, llantas, puertas, ventanas, etc. Y en cuanto a su comportamiento todos los automóviles podrán acelerar, frenar, retroceder, etc.
En los lenguajes de programación orientada a objetos, el concepto de Clase es la representación y el mecanismo por el cual se gestionan las abstracciones.
Por ejemplo:
public class Automovil {
// variables
// Métodos
}

MODULARIDAD
Es la propiedad que tiene un sistema que ha sido descompuesto en un conjunto de módulos cohesivos y vagamente convexos, cada módulo se puede compilar separadamente aunque tenga conexiones con otros módulos.
En un diseño estructural, modularizacion comprende el agrupamiento significado de subprogramas en diseño orientado a objetos, la modularidad debe ceñirse a la estructura lógica elegida en el proceso de diseño.
Dividir un programa en componentes individualizados reduce en alguna manera su complejidad; C++ separa los módulos interface de los módulos con implementación.
Mediante la modularidad, se propone al programador dividir su aplicación en varios módulos diferentes (ya sea en forma de clases, paquetes o bibliotecas), cada uno de ellos con un sentido propio. Esta fragmentación disminuye el grado de dificultad del problema al que da respuesta el programa, pues se afronta el problema como un conjunto de problemas de menor dificultad, además de facilitar la comprensión del programa.

ENCAPSULAMIENTO
Es el ocultamiento de información que no es necesario saber un determinado usuario, la utilidad del encapsulamiento va por la facilidad para manejar la complejidad, donde solo se conoce el comportamiento pero no los detalles internos, aquí lo que interesa es ¿Qué hace la clase? Pero no el ¿Cómo lo hace?
Se denomina encapsulamiento al ocultamiento del estado, es decir, de los datos miembros de un objeto de manera que sólo se pueda cambiar mediante las operaciones definidas para ese objeto.
El encapsulamiento consiste en unir en la Clase las características y comportamientos, esto es, las variables y métodos. Es tener todo esto es una sola entidad. En los lenguajes estructurados esto era imposible. Es evidente que el encapsulamiento se logra gracias a la abstracción y el ocultamiento que veremos a continuación.
La utilidad del encapsulamiento va por la facilidad para manejar la complejidad, ya que tendremos a las Clases como cajas negras donde sólo se conoce el comportamiento pero no los detalles internos, y esto es conveniente porque nos interesará será conocer qué hace la Clase pero no será necesario saber cómo lo hace.





HERENCIA
Una herencia puede heredar sus variables y métodos a varias subclases (la clase que hereda es llamada es llamada súper clase o clase padre).
Esto significa que una subclase, aparte de los atributos y métodos propios, tiene incorporados los atributos y métodos heredados de la superclase. De esta manera se crea una jerarquía de herencia. Por ejemplo, imaginemos que estamos haciendo el análisis de un Sistema para una tienda que vende y repara equipos celulares.

POLIMORFISMO
Se basa en utilizar varios métodos con el mismo nombre y con diferente funcionalidad, un objeto polimorfismo es una entidad que puede contener valores de diferentes tipos durante la ejecución de un programa.
El polimorfismo se refiere a la posibilidad de enviar un mensaje a un grupo de objetos cuya naturaleza puede ser heterogénea. El único requisito que deben cumplir los objetos que se utilizan de manera polimórfica es saber responder al mensaje que se les envía
El polimorfismo se refiere a la propiedad por la que es posible enviar mensajes sintácticamente iguales a objetos de tipos distintos. El único requisito que deben cumplir los objetos que se utilizan de manera polimórfica es saber responder al mensaje que se les envía.
La apariencia del código puede ser muy diferente dependiendo del lenguaje que se utilice, más allá de las obvias diferencias sintácticas.
Por ejemplo, en un lenguaje de programación que cuenta con un sistema de tipos dinámico (en los que las variables pueden contener datos de cualquier tipo u objetos de cualquier clase) como Smalltalk no se requiere que los objetos que se utilizan de modo polimórfico sean parte de una jerarquía de clases.



FUENTES BIBLIOGRÁFICAS