jueves, 25 de febrero de 2016
jueves, 18 de febrero de 2016
1.2
Lenguaje unificado
de modelado: Diagrama de clases.
DEFINICIÓN Y CONCEPTO DE UML
UML son las siglas de “Unified Modeling Language” o “Lenguaje Unificado de Modelado”. Se trata de un estándar que se ha adoptado a nivel internacional por numerosos organismos y empresas para crear esquemas, diagramas y documentación relativa a los desarrollos de software (programas informáticos).
¿QUÉ ES Y PARA QUÉ SIRVE UML?
El término “lenguaje” ha generado bastante confusión respecto a lo que es UML. En realidad el término lenguaje quizás no es el más apropiado, ya que no es un lenguaje propiamente dicho, sino una serie de normas y estándares gráficos respecto a cómo se deben representar los esquemas relativos al software. Mucha gente piensa por confusión que UML es un lenguaje de programación y esta idea es errónea: UML no es un lenguaje de programación. Como decimos, UML son una serie de normas y estándares que dicen cómo se debe representar algo.
UML es una herramienta propia de personas que tienen conocimientos relativamente avanzados de programación y es frecuentemente usada por analistas funcionales (aquellos que definen qué debe hacer un programa sin entrar a escribir el código) y analistas-programadores (aquellos que dado un problema, lo estudian y escriben el código informático para resolverlo en un lenguaje como Java, C#, Python o cualquier otro). Por tanto si estás dando tus primeros pasos en programación, te recomendaríamos que te olvides de UML hasta que tengas unos conocimientos mínimos como uso de condicionales, bucles, y conocimiento de la programación orientada a objetos. Esto es solo una recomendación, en realidad prácticamente cualquier persona puede usar UML, incluso podría usarse para realizar esquemas o documentación de procesos que no tengan que ver con la informática.
Hemos dicho que UML es un estándar. Vamos a aclarar primero qué es un estándar. Supongamos que vamos a definir un estándar llamado “LMAPR” o lenguaje de modelado de aprenderaprogramar.com. Ahora definimos dentro de nuestro estándar estas normas:
Un animal debe representarse con su nombre escrito enteramente en minúsculas enmarcado dentro de un rectángulo doble. Encima del nombre debe etiquetarse el tipo de animal así: <<Tipo de Animal>>. Por ejemplo, <<Gato>>.
Si un animal envía un mensaje a otro animal deben conectarse los dos animales con una línea punteada terminada en flecha encima de la cual debe figurar el texto msg(“Contenido del mensaje”).
TIPOS DE DIAGRAMAS EN UML
Usando UML se pueden construir numerosos tipos de diagramas. Vamos a citar algunos:
Diagramas de casos de uso: representan a los actores y casos de uso (procesos principales) que intervienen en un desarrollo de software.
Diagramas de clases:para UML una clase es una entidad, no una clase software. Un diagrama de clases UML puede ser un diagrama del dominio o representación de conceptos que intervienen en un problema, o también un diagrama de clases software. El sentido de un diagrama UML se lo da la persona que lo construye.
Diagramas de secuencia:suelen usarse para representar objetos software y el intercambio de mensajes entre ellos, representando la aparición de nuevos objetos de izquierda a derecha.
Diagramas de colaboración:suelen usarse para representar objetos o clases y la forma en que se transmiten mensajes y colaboran entre ellos para cumplir un objetivo.
Diagramas de estados:suelen usarse para representar cómo evoluciona un sistema (cómo va cambiando de estado) a medida que se producen determinados eventos.
Otros diagramas:diagramas de actividad, diagramas de paquetes, diagramas de arquitectura software, etc.
1.1 Elementos del modelo de objetos: clases, objetos, abstracción, modularidad, encapsulamiento, herencia y polimorfismo.
Clase
En la programación orientada a
objetos, una clase es una construcción que se utiliza como un modelo (o
plantilla) para crear objetos de ese tipo. El modelo describe el estado y el
comportamiento que todos los objetos de la clase comparten. Un objeto de una
determinada clase se denomina una instancia de la clase. La clase que contiene
(y se utilizó para crear) esa instancia se puede considerar como del tipo de
ese objeto, por ejemplo, una instancia del objeto de la clase
"Personas" sería del tipo "Personas".
Una clase por lo general representa
un sustantivo, como una persona, lugar o (posiblemente bastante abstracta) cosa
- es el modelo de un concepto dentro de un programa de computadora.
Fundamentalmente, encapsula el estado y el comportamiento del concepto que
representa. Encapsula el estado a través de marcadores de datos llamados
atributos (o variables miembro o variables de instancia), encapsula el
comportamiento a través de secciones de código reutilizables llamados métodos.
Objeto
En el paradigma de programación
orientada a objetos (POO, o bien OOP en inglés), un objeto se define como la
unidad que en tiempo de ejecución realiza las tareas de un programa. También a
un nivel más básico se define como la instancia de una clase.
Estos objetos interactúan unos con
otros, en contraposición a la visión tradicional en la cual un programa es una
colección de subrutinas (funciones o procedimientos), o simplemente una lista
de instrucciones para el computador. Cada objeto es capaz de recibir mensajes,
procesar datos y enviar mensajes a otros objetos de manera similar a un
servicio.
Abstracción
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). El común
denominador en la evolución de los lenguajes de programación, desde los
clásicos o imperativos hasta los orientados a objetos, ha sido el nivel de
abstracción del que cada uno de ellos hace uso.
Los lenguajes de programación son
las herramientas mediante las cuales los diseñadores de lenguajes pueden
implementar los modelos abstractos. La abstracción ofrecida por los lenguajes
de programación se puede dividir en dos categorías: abstracción de datos
(pertenecientes a los datos) y abstracción de control (perteneciente a las
estructuras de control).
Los diferentes paradigmas de
programación han aumentado su nivel de abstracción, comenzando desde los
lenguajes de máquina, lo más próximo al ordenador y más lejano a la comprensión
humana; pasando por los lenguajes de comandos, los imperativos, la orientación
a objetos (OO), la Programación Orientada a Aspectos (POA); u otros paradigmas
como la programación declarativa, etc.
Modularidad
En programación modular, y más
específicamente en programación orientada a objetos, se denomina Modularidad a
la propiedad que permite subdividir una aplicación en partes más pequeñas
(llamadas módulos), cada una de las cuales debe ser tan independiente como sea
posible de la aplicación en sí y de las restantes partes.
Estos módulos que se puedan
compilar por separado, pero que tienen conexiones con otros módulos. Al igual
que la encapsulación, los lenguajes soportan la Modularidad de diversas formas.
Según Bertrand Meyer "El acto
de particionar un programa en componentes individuales para reducir su
complejidad en algún grado. . . . A pesar de particionar un programa es útil
por esta razón, una justificación más poderosa para particionar un programa es
que crea una serie de límites bien definidos y documentados en el programa.
Estos límites, o interfaces, son muy valiosos en la comprensión del programa.
Encapsulamiento
En programación modular, y más
específicamente en programación orientada a objetos, se denomina
encapsulamiento al ocultamiento del estado, es decir, de los datos miembro, de
un objeto de manera que sólo se puede cambiar mediante las operaciones
definidas para ese objeto.
Cada objeto está aislado del
exterior, es un módulo natural, y la aplicación entera se reduce a un agregado o
rompecabezas de objetos. El aislamiento protege a los datos asociados a un
objeto contra su modificación por quien no tenga derecho a acceder a ellos,
eliminando efectos secundarios e interacciones.
Herencia
En orientación a objetos la
herencia es el mecanismo fundamental para implementar la reutilización y
extensibilidad del software. A través de ella los diseñadores pueden construir
nuevas clases partiendo de una jerarquía de clases ya existente (comprobadas y
verificadas) evitando con ello el rediseño, la modificación y verificación de
la parte ya implementada. La herencia facilita la creación de objetos a partir
de otros ya existentes, obteniendo características (métodos y atributos)
similares a los ya existentes.
Es la relación entre una clase general
y otra clase más especifica. Por ejemplo: Si declaramos una clase párrafo
derivada de una clase texto, todos los métodos y variables asociadas con la
clase texto, son automáticamente heredados por la subclase párrafo.
Polimorfismo
En programación orientada a objetos
el polimorfismo se refiere a la capacidad para que varias clases derivadas de
una antecesora utilicen un mismo método de forma diferente.
Por ejemplo, podemos crear dos
clases distintas: Pez y Ave que heredan de la superclase Animal. La clase
Animal tiene el método abstracto mover que se implementa de forma distinta en
cada una de las subclases (peces y aves se mueven de forma distinta).
Como se mencionó anteriormente, el
concepto de polimorfismo se puede aplicar tanto a funciones como a tipos de
datos. Así nacen los conceptos de funciones polimórficas y tipos polimórficos.
Las primeras son aquellas funciones que pueden evaluarse o ser aplicadas a
diferentes tipos de datos de forma indistinta; los tipos polimórficos, por su
parte, son aquellos tipos de datos que contienen al menos un elemento cuyo tipo
no está especificado.
Suscribirse a:
Entradas (Atom)