ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

Casos De Uso


Enviado por   •  2 de Junio de 2014  •  1.818 Palabras (8 Páginas)  •  153 Visitas

Página 1 de 8

Cómo se relacionan las clases

En el capítulo 5, se introdujeron los diagramas de clases como vistas estáticas de su sistema. Por vista estática, quiero decir que las clases sólo están ahí, pero sus clases definen las cosas que se usan para examinar comportamientos dinámicos descritos en diagramas de interacción y esquemas de estado.

Debido a que las clases y los diagramas de clases contienen elementos centrales para el sistema del lector, ampliaré el uso básico de los símbolos y las relaciones básicas del capítulo 5. En este capítulo, se examinarán relaciones más avanzadas e información más detallada de las clases, estudiando

• Diagramas con un mayor número de elementos

• Relaciones anotadas, incluyendo la multiplicidad

• Modelado de clases abstractas e interfaces

• La manera de agregar detalles a los diagramas de clases

• La comparación de la clasificación con la generalización

Modelado de la herencia

Existen beneficios al heredar, así como retos. Una clase hijo hereda todas las características de su clase padre. Cuando se define un atributo en una clase particular, es incorrecto repetir el atributo en las clases hijos. Si repite un método en la clase hijo, entonces está describiendo la anulación del método. En el Unified Modeling Language (UML), además de anular, puede redefinir los métodos; esto se soporta en algunos lenguajes, pero puede conducir a confusión. La anulación de los métodos es central para el polimorfismo; use la redefinición de métodos con moderación.

Cuando hereda clases, sus clases hijos heredan las restricciones definidas por todos los antepasados. Cada elemento tiene la unión de las restricciones que define y las restricciones definidas por sus antepasados.

El lector tiene varias opciones de herencia que explicaré en esta sección. En esta sección, se considerarán la herencia simple y la múltiple, y se comparará la generalización con la clasificación. Para evitar árboles profundos de herencia, también explicaré la herencia de interface y composición en las dos secciones que siguen.

Uso de le herencia simple

La herencia simple es la forma más fácil de herencia. Una clase hijo que hereda de una clase padre hereda todas las características de esta última, pero sólo tiene acceso directo para los miembros públicos y protegidos. La herencia, llamada generalización en el UML, se indica por una sola línea que se extiende de la clase hijo a la clase padre, con un triángulo hueco fijado a esta última. Si múltiples clases heredan de la misma clase padre, entonces puede usar una sola línea unida que se conecte a esta última.

Generalización contra clasificación

En el capítulo 5, introduje una prueba fácil para determinar si existe una relación de herencia. Ésta se llama es una prueba. Esta prueba sola puede ser engañosa y conducir a resultados incorrectos. Es una prueba implica transitividad estricta. Por ejemplo, si la clase B es una hija de la clase A, y la clase C es una hija de la B, entonces la clase C es una hija de la clase A. (Decimos que la clase C es una nieta de la clase A o que la A es una antepasada de la C.) No obstante, la transitividad implicada por la prueba es una no es estrictamente correcta.

Supongamos que tenemos las proposiciones verdaderas que siguen:

Pablo es un programador de C#.

Programador C# es una descripción de trabajo.

Pablo es una persona.

Programador de C# es una persona.

“Pablo es un programador de C#” funciona. “Un programador de C# es una persona” funciona y “Programador de C# es una descripción de trabajo” funciona, pero “Pablo es una descripción de trabajo” no funciona. El problema es que Pablo es un ejemplo de programador de C#. Esta relación se describe como una clasificación de Pablo el programador de C#, pero la generalización (es decir, la herencia) se usa para describir relaciones entre subtipos. Por lo tanto, tenga cuidado al usar es una como un solo determinante de la herencia. Una prueba más precisa es determinar si algo describe un ejemplo (clasificación) o un subtipo (generalización).

Si la clase B es un subtipo de la A, entonces tiene usted una herencia. Si la relación describe una clasificación —es decir, describe un contexto o papel en el cual algo es cierto—entonces tiene una relación de clasificación. Las clasificaciones se pueden manejar mejor con las asociaciones.

Clasificación dinámica

La exposición anterior sugiere que la herencia a veces se aplica mal. Regresando a nuestro ejemplo, Pablo es un programador describe un papel, o clasificación, más precisamente que una generalización, porque Pablo también es un esposo, un padre y un pagador de impuestos. Si hubiéramos tratado de generalizar a Pablo como todas esas cosas a través de la herencia, hubiéramos tenido que usar herencia múltiple, y las relaciones hubieran sido bastante complejas.

La forma de modelar y captar la clasificación es a través de la asociación. De hecho, podemos usar un patrón de comportamiento de estado para captar la dinámica y los papeles cambiantes que describen a una persona o la manera como se comporta el ejemplo Pablo en un contexto dado. Usando una asociación y, de modo específico, el patrón de comportamiento de estado, podemos implementar la clasificación dinámica; es decir, podemos cambiar el comportamiento de Pablo con base en el contexto o el papel que está representando en un momento dado.

El patrón de comportamiento de estado se implementa con el uso de una asociación y generalización. Sin tratar de reproducir la discusión completa acerca de este patrón—consulte Design Patterns, escrito por

...

Descargar como (para miembros actualizados)  txt (11.6 Kb)  
Leer 7 páginas más »
Disponible sólo en Clubensayos.com