miércoles, 8 de abril de 2015

UML Diagrama de clase

Introducción


En los diagramas de clases de UML, se describen el objeto y las estructuras de información que se utilizan en la aplicación, tanto de forma interna como en la comunicación con los usuarios. Esta información se describe sin hacer referencia a ninguna implementación concreta. Las clases y relaciones se pueden implementar de muchas maneras, por ejemplo, en tablas de bases de datos, en nodos XML o en composiciones de objetos de software.



Elementos que componen al diagrama:



la clase es el elemento princpal del diagrama compone el formato de creacion de los objetos ( los objetos son instancias de las clases). Con ellas modelamos los sistemas, estan reprecentadas de las sigueinte forma.

un rectangulo en vertical dividido en tres partes:

  1. Superior = nombre de la clase , 
  2. Media= propiedades o atributos y objetos de la clase 
  3. Inferior = metodos o procesos de la clases 

un ejemplo de un clase puede ser con el tema automotriz en el cual

  • la clase se llama carro
  • los atributos o propiedades son candidad de ruedas,motor y puertas
  • y los metodos u operaciones = encender ,andar y frenar

Las clases internamente poseen atributos y metodos internamente; Antes de continuar con atributos y metodos  debemos explicar los niveles de Protección de los elementos contenidos en la clase

  • publicas  {símbolo (+) } Indica que el atributo será visible tanto dentro como fuera de la clase, es decir, es accsesible desde todos lados.
  • privadas {símbolo (-)}  Indica que el atributo sólo será accesible desde dentro de la clase (sólo sus métodos lo pueden accesar).
  • protegidas  {símbolo (#)}Indica que el atributo no será accesible desde fuera de la clase, pero si podrá ser accesado por métodos de la clase además de las subclases que se deriven.

Atributos o propiedades 

son las características principales de la clase esta pueden, si la clase fuese mesa sus propiedades o atributos seria

  • cantidad de patas de la mesa, 
  • color de la mesa ,
  •  alto de la mesa
  •  etc.


 Estas propiedades  caracterizan a la clase de otra clases y son heredarles. Al igual tiene un tipo de dato basico ( string ,int ,decimal, float ,boolean) para poder saber distinguirla y hacer uso correctas de ellas a su vez  possen un nivel de Protección que nos indican hasta que nivel llega su uso en el sistema por instancias y clases deribadas


Metodos u Operaciones 


es el la seccion inferior del rectangulos, y nos indica que Hace la clase. en el ejemplo anteriro lo realize con la mesa en este caso volvemos al ejemplo del carro. La clase carro posee operaciones o metodos que ella relaiza al ser llamado ese metodo por una instancia y su interaccion con otras clases del diagrama, un ejemplo de metodo seria


  • andar
  • frenar
  • encender
  • apagar
Siguiendo la esquematizan de c++ los metodos no inidican que tipo de dato son pero si indican si devuelven o no dato alguno para determinar esto  se coloca el ejemplo de andar de la clase carro, si fuese un metodo que devuelve dato se coloca asi: Andar() de lo contrario si no devolviese dato alguno fuese asi andar(): void  indicando que si es método mas no devuelve dato. A su vez estos metodos possen un nivel de proteccion determinado 

Relaciones entre las clases 


Existen diversos tipos de relaciones y cardinalidad entre las clases en el diagrama de clases empezemos por explicar lo que son las Cardinalidades:


Cardinalidades

indica el grado y nivel de dependencia, se anotan en cada extremo de la relación y éstas son:


  • uno o muchos: 1..* (1..n)
  • 0 o muchos: 0..* (0..n)
  • número fijo: m   (m denota el número).

Relaciones de Herencia  


Indica que una subclase hereda los métodos y propiedades  especificados por una Super Clase, por ende la Subclase además de poseer sus propios métodos y atributos, poseerá las características y atributos visibles de la Super Clase (public y protected)


Agregación



Para modelar objetos complejos, n bastan los tipos de datos básicos que proveen los lenguajes: int, decimales y string . Cuando se requiere componer objetos que son instancias de clases definidas por el desarrollador de la aplicación, tenemos dos posibilidades:


  • Por Valor: Es un tipo de relación estática, en donde el tiempo de vida del objeto incluido esta condicionado por el tiempo de vida del que lo incluye. Este tipo de relación es comunmente llamada Composición (el Objeto base se contruye a partir del objeto incluido, es decir, es "parte/todo").



  • Por Referencia (ref): Es un tipo de relación dinámica, en donde el tiempo de vida del objeto incluido es independiente del que lo incluye. Este tipo de relación es comunmente llamada Agregación (el objeto base utiliza al incluido para su funcionamiento).
La flecha en este tipo de relación indica la navegabilidad del objeto refereniado. Cuando no existe este tipo de particularidad la flecha se elimina.

En este ejemplo una ciudad tiene un areopuerto pero se puede dar el caso de que una ciudad tenga mas de un areopuerto



Asociación

La relación entre las clases conocidas como Asociación permite asociar objetos que colaboran juntos. Significativamente , no es una relación fuerte , es decir , el tiempo de vida de un objeto depende de la otra .





Una mesa puede tener asociada  muchas sillas en cambio una silla tendra una unica mesa

Instanciación (uso)


Representa un tipo de relación muy particular, en la que una clase es instanciada (su instanciación es dependiente de otro objeto/clase). Se denota por una flecha punteada.

El uso más particular de este tipo de relación es para denotar la dependencia que tiene una clase de otra, como por ejemplo una aplicación grafica que instancia una ventana (la creación del Objeto Ventana esta condicionado a la instanciación proveniente desde el objeto Aplicacion):




Cabe destacar que el objeto creado (en este caso la Ventana gráfica) no se almacena dentro del objeto que lo crea (en este caso la Aplicación, de lo contrario se crea un nuevo objeto en el sistema ).



Clase Abstracta


Una 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 (aún no han sido definidos, es decir, sin implementación). La única forma de utilizarla es definiendo subclases, que implementan los métodos abstractos definidos.




Parametro de las Clases


Una clase parametrizada se denota con un subcuadro en el extremo superior de la clase, en donde se especifican los parámetros que deben ser pasados a la clase para que esta pueda ser instanciada. El ejemplo más típico es el caso de un Diccionario en donde una llave o palabra tiene asociado un significado, pero en este caso las llaves y elementos pueden ser genéricos. La genericidad puede venir dada de un Template (como en el caso de C++) o bien de alguna estructura predefinida (especialización a través de clases).






En este diagrama se puede apreciar lo siguiente
La clase persona es una clase abstracta que generara en herencia cliente y empleados ambos son personas heredadondo todo desde la superclase y possen elementos propios como +mostrar()


  • Empleado tiene elementos privados como sueldo__bruto y metodos publicos como calcular salario neto()



  • directivo es una clase que hereda de empleado sin embargo tiene una relacion con empleado de tipo subordinado indicando un nivel de rango empresarial superior dada por la logica de negocios del sistema



  • cliente esta relacionado con empresa donde es una relacion agregacion donde el tipo de dato es la clase en si



  • empresa tiene una relacion a su vez tambien de agregacion con empleados



El diagrama nos describe entonces lo siguiente. una empresa tiene empleados y clientes que son personas, a su vez existen empleados con mayor rango que son superiores directivo. la relacion de empleado y empresa es uno a muchos aunque no se muestra es la logica sin embargo se maneja el tipo de empleado de esa empresa a su vez igual con clientes.


Apoyado sobre el material 
http://users.dcc.uchile.cl/~psalinas/uml/modelo.html

No hay comentarios:

Publicar un comentario

NestJs Error on SecretKey for JWToken

  Imagine this you are coding happy, configuring your module has   auth.module.ts   using on your register the classic call to get env value...