Diagrama
de clases:
·
Es el diagrama principal
para el análisis y diseño.
·
Presenta las clases del sistema con sus
relaciones asociativas, de herencia, de uso y de convencimiento.
·
Representa los objetos
fundamentales del sistema, es decir, los que percibe el usuario y con los que
espera tratar para completar su tarea en ves de objetos del sistema o de un
modelo de programación.
*Clase:
Es la Unidad básica que encapsula toda la información de un objeto (un objeto
es una instancia de una clase). A través de ella podemos modelar el torno en
estudio (una casa, un auto, una cuenta corriente, etc.).
Define el ámbito de definición de un conjunto
de objetos. (cada objeto pertenece a una clase)
En UML, una clase es representada por un
rectángulo que posee tres divisiones:
<Nombre clase> contiene el nombre de la
clase;
<Atributos>
atributos o variables de instancia que caracterizan a la clase (pueden ser
private, protected o public);
<Operaciones o métodos> forma en como
la clase interactúa con su entorno; (pueden ser de tres clases private,
protected o public) Los parámetros van
separados por comas y sólo se especifica el tipo.
*clase abstracta: se denota con el nombre de la clase y de los métodos con letra “itálica”. Esto indica que la clase definida no puede ser instanciada pues posee métodos abstractos (sin implementación). La única forma de utilizarlas es definiendo subclases, que implementan los métodos abstractos definidos.
Para indicar que una clase es abstracta o final se debe colocar un comentario en la parte superior del rectángulo, debajo del nombre de la clase. Este comentario va entre llaves.
Los métodos abstractos también llevan un comentario al final.
*clase parametrizada: se denota con un subcuadro en el extremo superior de la clase, en donde se especifican lo parámetros que deben ser pasados a la clase para que esta pueda ser instanciada.
·
El diagrama de clases está
compuesto por:
1.
Elementos
de clase:
a. Atributo:
·
Es la expresión grafica que
ilustra, con recuadros y fechas, los pasos que se deben seguir para producir
algo.
·
Los recuadros los agentes
encargados de ejecutar lo que señalan las flechas.
·
Las flechas a su vez
representan las acciones o pasos.
·
Los atributos pueden ser,
según su:
-tipo: puede llegar a depender del lenguaje
de programación a utilizar
-valor inicial: valor que poseerá el atributo
al crear un objeto
-visibilidad: está relacionado con el
encapsulamiento
-ordenamiento: especifica si el atributo
determina alguna relación de orden dentro de la clase.
-capacidad de cambio: permite definir
atributos con valores constantes
-modificadores: un atributo puede ser de
clase, derivado, volátil, transitorio.
b. Métodos: Una
operación es el servicio que una
instancia de la clase puede realizar
·
Los métodos pueden ser:
-tipo devuelto: puede llegar a depender del
lenguaje de programación a utilizar.
-parámetros: además del tipo puede
especificarse si son In, out, o inOut
-visibilidad: está relacionado con el
encapsulamiento
-Modificadores: un atributo puede ser de
clase, abstracta query o constructor.
c. Visibilidad: La
visibilidad, de atributos y métodos, puede ser:
- privado
+ público
# protegido
~ de paquete
2.
Elementos
de relaciones:
*relaciones
entre clases: (clases con características y objetivos
diferentes)
cardinalidad
de relaciones: en UML, indica el grado y nivel de
dependencia; se anotan en cada extremo de la relación, pueden ser:
-ò uno ò muchos: 1…*
-ò 0 ò muchos: 0…* (0...n)
-ò número fijo: m (m denota el número)
Una
asociación es una conexión estructural simple entre clases
a.
Herencia: (especialización/generalización):
· Mecanismo que permite
derivar una clase de otra, de manera que extienda su funcionalidad
·
Indica que una subclase
hereda los métodos y atributos especificados por una Súper Clase, por ende la
subclase además de poseer sus propios métodos y atributos, poseerá las
características y atributos visibles de la Sùper Clase (protected y public)
b. .Composición:
·
En referencia al lenguaje
visual: supone la organización de los elementos que
forman el conjunto de la imagen, con el fin de obtener un efecto de unidad y
orden.
c. Agregación:
Es una asociación
especial, una relación del tipo “todo/parte”, dentro de la cual una o mas
clases son partes de un conjunto.
Para modelar objetos complejos,
no bastan los tipos de datos básicos que proveen lo lenguajes: enteros, reales
y secuencias de caracteres.
Cuando se requiere
componer objetos que son instancias de clases definidas por el desarrollo de la
aplicación, tenemos dos posibilidades:
a.
Por valor: es un tipo de
relación estática, en donde el tiempo de vida incluido está condicionado por el
tiempo de vida del que lo incluye.
Este
tipo de relación es llamada composición (el objeto base se construye a partir
del objeto incluido)
b.
Por referencia: es un tipo
de relación dinámica, en donde el tiempo de vida del objeto incluido es
independiente de lo que incluye. Es llamada agregación (el objeto base utiliza
al incluido para su funcionamiento)
d.
Asociación:
Permite asociar
objetos que colaboran entre si. No es una relación fuerte, es decir, el tiempo
de vida de un objeto no depende del otro.
La asociación expresa
una conexión bidireccional entre objetos, es una abstracción de la relación
existente en los enlaces entre los objetos.
Rol: identificado
como un nombre a los finales de la asociación, describe la semántica de la
relación en el sentido indicado; cada asociación tiene 2 roles y cada rol es
una dirección de la asociación.
Las asociaciones
pueden ser:
-asociación
calificada: Un calificador es un atributo (o tupla de atributos) de la asociación
cuyos valores sirven para particionar el conjunto de objetos enlazados a otro.
Un calificador se
representa como un pequeño rectángulo conectado al final de una asociación y a
la clase
El rectángulo del
calificador es parte de la asociación, y no parte de la clase
-asociación n-arias:
son asociaciones que se establecen entre mas de dos clases. Una clase puede
aparecer varias veces desempeñando distintos roles.
Se representan a
través de un rombo que se une con cada una de las clases; pueden ser usadas
para impedir inconsistencias en el modelo.
e.
Dependencia
o instanciación:
Es una relación de
“uso” en la que un cambio en uno de los términos puede afectar a otro.
Una clase es
instanciada (su instanciación es dependiente de otro objeto/clase). Se denota
por una flecha punteada.
El uso mas particular
de este tipo de relación es para denotar la dependencia que tiene una clase de
otra.
El objeto creado no
se no se almacena dentro del objeto que lo crea.
Posibles dependencias
entre clases:
-use: el
funcionamiento del origen depende de la presencia del destino
-instantiate: el
origen crea las instancias del destino
-derive: el origen
puede calcularse a partir del destino
-refine: el origen
está un grado de abstracción mas detallado
-bind(): derivación
genérica de un aplantilla
-friend: visibilidad
característica de C++
· ESTEREOTIPOS:
Un estereotipo representa el principal mecanismo de
extensión de UML. Ofrece una forma de extender una metaclase, creando un nuevo
elemento metamodelo.
· INTERFACES:
es una colección de operaciones que representan servicios
ofrecidos por una clase o componente. Por definición, todas estas operaciones
tendrán una visibilidad pública.
La clase realiza una
o varias interfaces; UML identifica 2 tipos de interfaces:
-interfaz
suministrada: es aquella que una clase efectivamente implementa.
-interfaz requerida:
son aquellas que necesita una clase para realizar su cometido. Se representa
con un semicírculo.
Para mostrar que una
clase implementa una interfaz, se utiliza una línea punteada desde la clase hacia
la interfaz, que termina en un triángulo vacío.
Una interfaz se puede
representar como una clase. En el primer compartimento del rectángulo debe ir
la palabra “interfaz” encerrada en símbolos de << y >>. En los
otros compartimientos, se trabaja igual que con las clases.
·
MODELO
DE DOMINIO Y MODELO DE DISEÑO: El diagrama de clases puede
utilizarse con distintos fines en distintas etapas del proceso de desarrollo.
Durante la etapa de
análisis, el modelo de dominio es el encargado de mostrar el conjunto de clases
conceptuales del problema y las relaciones presentes entre si.
Durante la etapa de
diseño, el modelo de diseño determina las futuras componentes de software
(clases) y sus relaciones entre si.
El modelo de dominio: es
una representación de las cosas, entidades, idea, clases conceptuales u objetos
del “mundo real” o dominio de interés, no de componentes de software.
Muestra clases
conceptuales significativas en un dominio del problema; se usa como base para
el diseño de los objetos de software.
Es el artefacto mas
importante del análisis; podría ser considerado como un diccionario visual de
abstracciones de clases conceptuales, vocabulario e información del dominio.
Su intención es ser
útil como herramienta de comunicación.
Otros nombres: modelo conceptual, modelo de objetos de
dominio y modelo de los objetos de análisis
Usando UML, el MD se
representa con un conjunto de diagramas de clases, se puede mostrar objetos de
domino o clases conceptuales, asociaciones entre clases conceptuales y
atributos de las clases conceptuales.
No se define ninguna
operación. La asignación de responsabilidades de los objetos no forma parte de
este modelo
El modelo de diseño: a
diferencia del de dominio, se encuentra mas cerca de la solución buscada.
Refleja decisiones en
cuanto a la asignación de responsabilidades entre los objetos (Si tiene operaciones)
Toma como base el
modelo de dominio, donde algunas entidades se promoverán a clases.
Muestran como se
relacionan componentes de software para resolver el problema planteado; es el
paso previo a la implementación.
Es posible aplicar patterns según el tipo de problema.
MODIFICADORES:
Los atributos y métodos estáticos se subrayan, así:
Que buen tema y es el primer blog que veo que tiene bien detallado uno por uno los elementos de la clase asi se comprende mejor.
ResponderEliminarque buen resumen esta bn facil de entender , este es otro gran blogg
ResponderEliminar