¿Cuáles son los principales procesos del desarrollo de software orientado a objetos?
Hablando de orientación a objetos, hay muchos artículos en esta área. Sin embargo, hay muy pocas definiciones de objetos claramente dadas o explicadas; al menos yo no he encontrado ninguna todavía. Inicialmente, "orientado a objetos" se refiere a métodos de diseño como la encapsulación, la herencia y la abstracción utilizados en la programación. Sin embargo, es evidente que esta definición ya no es adecuada a la situación actual. El pensamiento orientado a objetos ha estado involucrado en todos los aspectos del desarrollo de software. Por ejemplo, a menudo hablamos de OOA (análisis orientado a objetos), OOD (diseño orientado a objetos) y OOP (programación orientada a objetos). Muchos artículos sobre orientación a objetos tratan solo sobre cuestiones a las que se debe prestar atención en el desarrollo orientado a objetos o sobre mejores métodos de diseño que se deben adoptar. Solo después de leer estos artículos podrá comprender realmente qué es un objeto y qué es la orientación a objetos, y podrá beneficiarse al máximo. Para los principiantes, o incluso para aquellos que llevan muchos años dedicados a trabajos relacionados, el concepto puede resultar vago.
La orientación a objetos es el foco de la industria informática actual y la corriente principal de los métodos de desarrollo de software en la década de 1990. Los conceptos y aplicaciones orientados a objetos han trascendido el alcance de la programación y el desarrollo de software y se han expandido a un alcance más amplio. Como sistemas de bases de datos, interfaces interactivas, estructuras de aplicaciones, plataformas de aplicaciones, sistemas distribuidos, estructuras de gestión de redes, tecnología CAD, inteligencia artificial y otros campos.
Primero, problemas con los métodos de desarrollo tradicionales
1. Mala reutilización del software
La reutilización se refiere a lo mismo sin modificaciones o con ligeras modificaciones La propiedad de ser reutilizable. varias veces. La reutilización del software es uno de los objetivos que persigue la ingeniería de software.
2. Mala mantenibilidad del software
La ingeniería de software enfatiza la mantenibilidad del software y la importancia de la documentación, y estipula que el producto de software final debe estar compuesto por componentes de configuración completos y consistentes. En el proceso de desarrollo de software, siempre se enfatiza que la legibilidad, modificabilidad y capacidad de prueba del software son un indicador de calidad importante del software. La práctica ha demostrado que el costo y el gasto del software desarrollado utilizando métodos tradicionales siguen siendo muy altos. Esto se debe a la poca modificabilidad y la dificultad de mantenimiento, lo que resulta en una mala mantenibilidad.
3. El software desarrollado no puede satisfacer las necesidades de los usuarios.
Desarrollar sistemas de software a gran escala utilizando métodos estructurados tradicionales implica conocimientos en diversos campos. Cuando se desarrollan sistemas con requisitos difusos o dinámicos, los sistemas de software desarrollados a menudo no pueden satisfacer realmente las necesidades de los usuarios.
El software desarrollado utilizando métodos estructurados tiene poca estabilidad, modificabilidad y reutilización, porque la esencia de los métodos estructurados es la descomposición funcional. A partir de un proceso único que representa la función general del sistema objetivo, el proceso complejo se descompone continuamente en subprocesos de arriba a abajo, capa por capa, hasta que solo quedan unos pocos subprocesos, y luego el proceso de nivel más bajo. se describe utilizando las herramientas correspondientes. Por lo tanto, un enfoque estructurado construye sistemas en torno a "procesos" que implementan funciones de procesamiento. Pero la mayoría de los cambios en los requisitos del usuario son funcionales, por lo que este cambio es desastroso para el diseño basado en procesos. La estructura del sistema diseñada de esta manera suele ser inestable. Los cambios en las necesidades de los usuarios a menudo provocan grandes cambios en la estructura del sistema, por lo que se requieren grandes cantidades de fondos para implementar dichos cambios.
2. Conceptos básicos de orientación a objetos
(1) Objeto.
Un objeto es cualquier cosa que uno quiera estudiar, desde los números enteros más simples hasta aviones complejos. No sólo puede representar cosas concretas, sino también reglas, planes o eventos abstractos.
(2) El estado y comportamiento del objeto.
El objeto tiene un estado y el objeto utiliza valores de datos para describir su estado.
Los objetos también tienen operaciones, que se utilizan para cambiar el estado del objeto. Los objetos y sus operaciones son el comportamiento del objeto.
Los objetos realizan la combinación de datos y operaciones, de modo que los datos y las operaciones quedan encapsulados en la unidad de los objetos.
(3) Clase.
Una abstracción de objetos con propiedades iguales o similares es una clase. Entonces la abstracción de un objeto es una clase y la concretización de una clase es un objeto. También se puede decir que una instancia de una clase es un objeto.
Las clases tienen atributos, que son abstracciones de los estados de los objetos. Las estructuras de datos se utilizan para describir las propiedades de una clase.
Una clase tiene una operación. La operación es una abstracción del comportamiento del objeto y se describe mediante el nombre de la operación y el método para implementar la operación.
(4) Estructura de clases.
El mundo objetivo tiene varias categorías, y existen ciertas relaciones estructurales entre estas categorías. Generalmente existen dos relaciones estructurales principales, a saber, relaciones estructurales generales específicas y relaciones estructurales de parte completa.
①La estructura específica general se denomina estructura de clasificación y también se puede decir que es una relación "o" o una relación "es una".
②La estructura general de las piezas se denomina estructura de ensamblaje y la relación entre ellas es una relación y o una relación.
(5) Información y métodos.
La estructura de comunicación entre objetos se denomina mensaje. En las operaciones de objetos, cuando se envía un mensaje a un objeto, el mensaje contiene información de que el objeto receptor realizará una determinada operación. El envío de un mensaje debe incluir al menos el nombre del objeto que recibe el mensaje y el nombre del mensaje enviado al objeto (es decir, el nombre del objeto y el nombre del método). A menudo, es necesario interpretar parámetros, que pueden ser nombres de variables conocidos por los objetos que conocen el mensaje, o nombres de variables globales conocidos por todos los objetos.
El proceso de implementación de operaciones en una clase se llama método. Un método tiene un nombre de método, parámetros y cuerpo de método. La transmisión de mensajes se muestra en la Figura 10-1.
2. Características orientadas a objetos
(1) Unicidad del objeto.
Cada objeto tiene su propio identificador único y el objeto correspondiente se puede encontrar a través del identificador. Durante todo el ciclo de vida de un objeto, su bandera no cambiará y diferentes objetos no pueden tener la misma bandera.
(2) Clasificación.
La clasificación se refiere a abstraer objetos con estructuras de datos (atributos) y comportamientos (operaciones) consistentes en clases. Una clase es una abstracción que refleja propiedades importantes relevantes para una aplicación e ignora otro contenido irrelevante. La clasificación de cualquier categoría es subjetiva, pero debe estar relacionada con la aplicación específica.
(3)Herencia.
La herencia es un mecanismo mediante el cual las subclases comparten automáticamente las estructuras de datos y los métodos de su clase principal. Es la relación entre clases. Al definir e implementar una clase, puede hacerlo sobre la base de una clase existente, usar el contenido definido por la clase existente como su propio contenido y agregar contenido nuevo.
La herencia es la característica más importante que distingue a los lenguajes de programación orientados a objetos de otros lenguajes. Esto es algo que otros lenguajes no tienen.
En la jerarquía de clases, las subclases solo heredan las estructuras de datos y los métodos de una clase principal, lo que se denomina herencia única.
En una jerarquía de clases, las subclases heredan las estructuras de datos y los métodos de múltiples clases principales, lo que se denomina herencia múltiple.
En el desarrollo de software, la herencia de clases hace que el software establecido sea abierto y extensible, y es un método eficaz para organizar y clasificar información. Simplifica el trabajo de creación de objetos y clases y aumenta la reproducibilidad del código.
Al utilizar la herencia, se proporciona una jerarquía de especificaciones de clases. A través de la relación de herencia de clases, se pueden compartir características comunes y se puede mejorar la reutilización del software.
(4) Polimorfismo (Polimorfismo)
Polimorfismo significa que una misma operación o función o proceso puede actuar sobre muchos tipos de objetos y obtener diferentes resultados. Diferentes objetos producirán resultados diferentes al recibir el mismo mensaje. Este fenómeno se llama polimorfismo.
El polimorfismo permite que cada objeto responda al mismo mensaje a su manera.
El polimorfismo mejora la flexibilidad y la reutilización del software.
Tercero, elementos orientados a objetos
(1) Abstracción.
La abstracción consiste en enfatizar la esencia y las propiedades inherentes de las entidades. En el desarrollo de sistemas, la abstracción se refiere al significado y comportamiento de un objeto antes de que se tomen decisiones sobre cómo implementarlo. El uso de abstracciones le impide pensar en los detalles demasiado pronto.
Las clases implementan la abstracción de los datos (es decir, el estado) y el comportamiento de un objeto.
(2) Encapsulación (ocultación de información).
La encapsulación es la base para garantizar una buena modularidad de los componentes de software.
Una clase orientada a objetos es un módulo bien empaquetado. Una definición de clase separa explícitamente su descripción (la interfaz externa visible para el usuario) de su implementación (la implementación interna no visible para el usuario), y su implementación interna está protegida de acuerdo con su alcance específicamente definido.
El objeto es la unidad más básica de encapsulación. La encapsulación previene los efectos de los cambios causados por las interdependencias del programa. Los envoltorios orientados a objetos son más claros y potentes que los envoltorios de lenguajes tradicionales.
(3) ***Disfrute
La tecnología orientada a objetos promueve *** el disfrute en diferentes niveles.
* * *Misma categoría. Los objetos de la misma clase tienen la misma estructura de datos. Estos objetos comparten * * * características estructurales y de comportamiento.
Disfruta de la misma aplicación. En la jerarquía de clases de la misma aplicación, existe herencia de estructura de datos y comportamiento entre subclases similares con relaciones de herencia, de modo que todas las subclases similares * * * comparten la misma estructura y comportamiento. Usar la herencia para disfrutar del código es también una de las principales ventajas de la orientación a objetos.
Disfruta de diferentes aplicaciones. La orientación a objetos no sólo permite compartir información dentro de la misma aplicación, sino que también prepara el terreno para diseños reutilizables para objetivos futuros. A través del mecanismo y la estructura de la biblioteca de clases, se puede lograr el intercambio de información en diferentes aplicaciones.
4. Enfatizar la estructura del objeto más que la estructura del programa.
Cuarto, métodos de desarrollo orientados a objetos
En la actualidad, la investigación sobre métodos de desarrollo orientado a objetos se ha vuelto cada vez más madura y han aparecido en el mundo muchos productos orientados a objetos. Los métodos de desarrollo orientado a objetos incluyen el método Coad, el método Booch y el método OMT.
1. Método Booch
Booch describió por primera vez los problemas básicos del método de desarrollo de software orientado a objetos, señalando que el desarrollo orientado a objetos es un método de diseño que es fundamentalmente diferente del funcional tradicional. descomposición. La descomposición del software orientada a objetos está más cerca de la comprensión de los asuntos objetivos por parte de las personas, mientras que la descomposición funcional solo se puede obtener mediante la transformación del espacio del problema.
2.Método Coad
El método Coad es un método de desarrollo orientado a objetos propuesto por Coad y Yourdon en 1989. La principal ventaja de este método es que mediante la combinación orgánica de muchos años de experiencia en desarrollo de sistemas a gran escala y conceptos orientados a objetos, se propone un conjunto de principios sistemáticos para la identificación de objetos, estructuras, atributos y operaciones. Este método completa la identificación adicional de clases y jerarquías de clases desde una perspectiva de requisitos. Aunque el método Coad no introduce la terminología de clase y jerarquía de clases, en realidad incorpora las características de clase y jerarquía de clases en conceptos como estructura de clasificación, atributos, operaciones y asociación de mensajes.
3. Método OMT
El método OMT fue propuesto por James Rumbaugh y otros en 1991, y su trabajo clásico es "Modelado y diseño orientado a objetos".
Este método es un nuevo método de desarrollo orientado a objetos. El trabajo de desarrollo se basa en modelar objetos del mundo real y luego utilizar modelos analíticos para diseñar el lenguaje de forma independiente en torno a estos objetos. El modelado y diseño orientado a objetos promueve la comprensión de los requisitos y ayuda a desarrollar sistemas de software que sean más claros y fáciles de mantener. Este método proporciona una garantía práctica y eficiente para el desarrollo de software en la mayoría de los campos de aplicación y se esfuerza por encontrar un método práctico para resolver problemas.
4. Lenguaje de modelado unificado
El campo de la ingeniería de software ha logrado avances sin precedentes entre 1995 y 1997, y sus logros superan los logros combinados de los últimos 15 años en el campo del software. ingeniería. Uno de los logros más importantes es la aparición del Lenguaje Unificado de Modelado (UML). UML se convertirá en el lenguaje de modelado estándar dominante en el campo de la tecnología orientada a objetos.
UML no solo unificó los métodos de representación del método Booch, el método OMT y el método OOSE, sino que también los desarrolló aún más y finalmente los unificó en un lenguaje de modelado estándar aceptado por el público. UML es un lenguaje de modelado bien definido, fácil de expresar, potente y de aplicación universal. Incorpora nuevas ideas, nuevos métodos y nuevas tecnologías en el campo de la ingeniería de software. Su alcance no se limita a respaldar el análisis y el diseño orientado a objetos, sino que también respalda todo el proceso, desde el análisis de requisitos hasta el desarrollo de software.
Modelo orientado a objetos de verbo (abreviatura de verbo)
Modelo de objetos
El modelo de objetos representa los atributos de datos estáticos y estructurados del sistema y describe los datos estáticos. estructura del sistema. Se describe desde la perspectiva de las relaciones objetales de entidades en el mundo objetivo, mostrando las interrelaciones entre objetos. Este modelo se centra en la estructura, propiedades y operaciones de los objetos del sistema. Es el núcleo de los tres modelos en fase de análisis y el marco de los otros dos modelos.
65438+
(1) Objeto.
El objetivo del modelado de objetos es describir objetos.
(2) Clase.
Al abstraer objetos en clases, se pueden abstraer problemas y la abstracción mejora la capacidad de inducción del modelo.
(3) Atributos.
Los atributos se refieren a los atributos (valores de datos) de los objetos de una clase.
(4) Operaciones y métodos.
Las operaciones son funciones o transformaciones utilizadas por los objetos de una clase. Cada objeto de una clase puede disfrutar de operaciones, y cada operación tiene un objeto de destino como parámetro implícito.
Los métodos son los pasos de implementación de las operaciones de clase.
2. Asociación y cadena
La asociación es un medio para establecer relaciones entre clases, mientras que las cadenas son un medio para establecer relaciones entre objetos.
(1)El significado de asociación y cadena.
La cadena representa la conexión física y conceptual entre objetos, la asociación representa la relación entre clases, la cadena es una instancia de asociación y la asociación es la abstracción de la cadena.
(2) Rol.
El rol describe el rol de la clase en la asociación y está ubicado en el punto final de la asociación.
(3) Limitar la comunicación.
Una asociación restringida consta de dos clases y un clasificador. Un calificador es un atributo específico que se utiliza para reducir eficazmente las asociaciones duplicadas. Los calificadores se describen en el conjunto de objetos de terminal asociado.
La calificación mejora la precisión semántica y las capacidades de consulta. En el mundo real, los calificativos aparecen con frecuencia.
(4) Multiplicidad de correlaciones.
La multiplicidad de asociación se refiere a cuántos objetos de una clase están relacionados con un objeto de la clase asociada. La multiplicidad se describe a menudo como "uno" o "muchos".
La Figura 10-8 muestra la diversidad de diversas asociaciones. Los pequeños círculos rellenos representan "muchos", de cero a muchos. Los pequeños círculos abiertos representan cero o uno. No hay ningún símbolo que indique una asociación uno a uno.
3. Jerarquía de clases
(1) Relación de agregación.
La agregación es una relación de "parte entera". En esta relación hay clases enteras y clases parciales. Las propiedades más importantes de la agregación son la transitividad y la antisimetría.
La agregación puede tener diferentes niveles y se pueden agregar diferentes categorías para obtener un árbol de agregación simple. Los árboles de agregación son una representación simple que es mucho más simple que dibujar muchas líneas que conectan algunas clases. El modelo de objetos debería reflejar fácilmente todos los niveles. La Figura 10-10 muestra una agregación multipolar de microcomputadoras.
(2) Relación generalizada.
Las relaciones generalizadas son una forma muy abstracta de disfrutar la similitud de los objetos conservando sus diferencias. Ésta es una relación "generalmente específica". La clase generalizada se llama clase y la clase específica también se puede llamar subclase. Cada subclase hereda las propiedades de la clase que se cruza y algunas de las mismas propiedades y operaciones de cada subclase se resumen en su clase. Entonces coexisten las relaciones de generalización y la herencia. La representación simbólica de una relación generalizada consiste en agregar un pequeño triángulo en la línea de conexión de la asociación de clase, como se muestra en la Figura 10-11.
4. Modelo de objetos
(1) Plantilla. Las plantillas son combinaciones lógicas de clases, asociaciones y estructuras generales.
(2)Modelo de objetos.
El modelo de objetos consta de una o varias plantillas. Las plantillas dividen el modelo en subpartes manejables y proporcionan una unidad intermedia integrada entre el modelo de objetos general y las clases y bloques de construcción asociados. Los nombres de clases y de asociaciones en las plantillas son únicos.
Modelos dinámicos
Los modelos dinámicos son propiedades del sistema que están relacionadas con el tiempo y el cambio. El modelo describe la estructura de control del sistema y representa el control del sistema tanto transitorio como conductual.
Naturalmente, se centran en el control del sistema y la secuencia de ejecución de las operaciones, y representan el comportamiento mutuo de los objetos desde la perspectiva de eventos y estados de los objetos.
Las propiedades del sistema descritas en este modelo son eventos desencadenantes, secuencias de eventos, estados y la organización de eventos y estados. Utilice diagramas de estado como herramienta de descripción. Implica conceptos importantes como eventos, estado y operaciones.
1. Evento
Un evento es algo que sucede en un momento específico.
2. Estado
El estado es la abstracción de los valores de los atributos del objeto. Los valores de los atributos de un objeto se combinan en un estado basado en propiedades que afectan el comportamiento significativo del objeto. El estado representa la respuesta de un objeto a los eventos de entrada.
3. Gráfico de estados
Un gráfico de estados es un concepto informático estándar y una representación gráfica de un autómata finito. Aquí, los diagramas de estado se utilizan como herramienta gráfica para construir modelos dinámicos.
El diagrama de estados refleja la relación entre estados y eventos.
Cuando se recibe un evento, el siguiente estado depende del estado actual y del evento recibido. El cambio de estado causado por el evento se denomina transición.
Un diagrama de estados es un diagrama en el que los nodos representan estados y los nodos están representados por círculos. Hay un nombre de estado en el círculo, conectado por una flecha para indicar la transición de estado, el nombre del evento está marcado en él y la dirección de la flecha indica la dirección de la transición.
Modelo Funcional
El modelo funcional describe todos los cálculos del sistema. El modelo funcional indica lo que sucede, el modelo dinámico determina cuándo sucede y el modelo de objetos determina lo que sucede. Los modelos funcionales muestran cómo un cálculo obtiene un valor de salida a partir de valores de entrada, independientemente del orden de los cálculos. El modelo funcional consta de varios diagramas de flujo de datos. Los diagramas de flujo de datos se utilizan para representar el flujo de valores de datos desde los objetos de origen a los objetos de destino. No contiene la información de control expresada en el modelo dinámico. Al mismo tiempo, el diagrama de flujo de datos no representa la organización de valores en el objeto, sino la organización de valores en el modelo de objetos. La Figura 10-15 muestra el diagrama de flujo de datos mostrado por el icono del sistema de ventana.
El diagrama de flujo de datos incluye procesamiento, flujo de datos, objetos de acción y objetos de almacenamiento de datos.
1. Procesamiento
El procesamiento en un diagrama de flujo de datos se utiliza para cambiar los valores de los datos. El procesamiento de nivel más bajo son funciones puras y el gráfico de flujo de datos completo es procesamiento de alto nivel.
2. Flujo de datos
El flujo de datos en el diagrama de flujo de datos vincula la salida y el procesamiento de objetos, el procesamiento y la entrada de objetos, el procesamiento y el procesamiento. En las computadoras, los valores de datos intermedios están representados por flujos de datos que no pueden cambiar los valores de los datos.
3. Objeto de acción
Un objeto de acción es un objeto activo que impulsa el diagrama de flujo de datos generando o utilizando valores de datos.
4. Objeto de almacenamiento de datos
El almacenamiento de datos en el diagrama de flujo de datos es un objeto pasivo que se utiliza para almacenar datos. Es diferente de un objeto de acción. El almacén de datos en sí no genera ninguna operación, solo responde a necesidades de almacenamiento y acceso.
Análisis orientado a objetos de verbos intransitivos
El propósito del análisis orientado a objetos es modelar el sistema en el mundo objetivo. Con base en los conceptos del modelo presentados anteriormente, esta sección combina el ejemplo específico del "sistema de red bancaria" para construir un modelo de análisis de problemas mundiales objetivo, preciso y riguroso.
El modelo de análisis tiene tres propósitos: aclarar los requisitos del problema; proporcionar requisitos claros para los usuarios y desarrolladores; como marco para el diseño y la implementación posteriores, proporciona una base para las negociaciones entre usuarios y desarrolladores.
Análisis orientado a objetos
El primer paso en el análisis de un sistema es establecer los requisitos. El analista debe trabajar con el usuario para refinar los requisitos, ya que esto muestra la verdadera intención del usuario, incluido el análisis de los requisitos y la búsqueda de información faltante. Tomamos como ejemplo el "sistema de red bancaria" y lo desarrollamos utilizando un método orientado a objetos.
Declaración del problema del sistema de red bancaria: diseñar software para respaldar la red bancaria, incluidas las estaciones de cajeros manuales y los cajeros automáticos que disfrutan las sucursales. Cada sucursal utiliza una computadora de sucursal para mantener sus propias cuentas y manejar sus propios asuntos; el cajero de cada sucursal se comunica con la computadora de la sucursal, y el cajero ingresa datos de cuentas y transacciones, el cajero automático se comunica con la computadora de la sucursal y la sucursal; la computadora liquida con la sucursal de apropiación, el cajero automático acepta tarjetas de efectivo con la interfaz de usuario, se comunica con la computadora de la sucursal para completar la transacción, distribuye efectivo e imprime recibos; el sistema requiere registros y medidas de seguridad; el sistema debe manejar correctamente el acceso concurrente al; misma cuenta; cada sucursal tiene su propio software de preparación informática, las tarifas de la red bancaria se asignan a cada sucursal en función del número de clientes y tarjetas de efectivo.
La Figura 10-18 es un diagrama esquemático del sistema de red bancaria.
(2) Establecer un modelo de objetos
Primero, identificar y asociar, porque afectan la estructura general y los métodos de resolución de problemas. En segundo lugar, agregue propiedades para describir con más detalle la red básica de clases y asociaciones, fusionando y organizando clases mediante herencia. Finalmente, las operaciones se agregan a la clase como subproducto de la construcción de modelos dinámicos y funcionales.
1. Determinar categorías
El primer paso en la construcción de un modelo de objetos es etiquetar las clases de objetos relevantes del dominio del problema, incluidas las entidades físicas y los conceptos. Todas las clases deben tener sentido en la aplicación, no todas las clases se dan explícitamente en el planteamiento del problema. Algunas están implícitas en el dominio del problema o en el sentido común.
Siga el proceso que se muestra en la Figura 10-19 para determinar la clase.
Encuentra todos los sustantivos en el enunciado del problema y genera las siguientes clases tentativas.
Software Red bancaria Cajero Cajero automático Sucursal
Procesamiento separado y procesamiento separado Computadora Cuenta Transacción Cajero
Datos de transacción Sucursal Computadora Efectivo Tarjeta Usuario Efectivo
Sistema de recibos Datos de la cuenta de gastos del cliente
Obtener medidas de seguridad Mantenimiento de registros
Eliminar clases innecesarias e incorrectas según los siguientes criterios.
(1) Clase redundante: si dos clases expresan la misma información, retenga la clase con la mayor capacidad descriptiva. Por ejemplo, "usuario" y "cliente" son descripciones repetidas, ya que "cliente" es la más descriptiva, por lo que se conserva.
(2) Clases irrelevantes: Elimina las clases que son irrelevantes para el problema o que no son relevantes para el problema. Por ejemplo, el costo compartido va más allá de la red del banco.
(3) Clase difusa: la clase debe ser definida. Algunas clases provisionales tienen límites difusos o demasiado amplios, como "contabilidad", que forma parte de "transacción".
(4) Atributos: Algunos sustantivos describen los atributos de otros objetos, por lo que se eliminan de la categoría tentativa. Si la independencia de un atributo es importante, entonces debería clasificarse como una clase y no como un atributo.
(5) Operación: Si el sustantivo en la oración interrogativa tiene un significado de acción, la operación descrita no es del mismo tipo. Pero las operaciones que tienen sus propias propiedades y requieren existencia independiente deberían describirse como clases. Si solo construye el modelo de teléfono, "Marcar" es parte del modelo dinámico en lugar de una clase. Sin embargo, en el sistema de marcación telefónica, "Marcar" es una clase importante con atributos como fecha, hora y ubicación de recepción.
En los sistemas de redes bancarias, las categorías difusas son "sistemas", "medidas de seguridad", "mantenimiento de registros" y "red bancaria". Estos atributos son: "Datos de cuenta", "Recibos", "Efectivo" y "Datos de transacciones". Pertenece a la implementación, como "vía" y "software". Estos deberían eliminarse.
2. Preparar diccionario de datos
Preparar un diccionario de datos para todas las entidades de modelado. Describa con precisión el significado preciso de cada clase y describa el alcance de la clase en el problema actual, incluidas las suposiciones o limitaciones sobre los miembros y el uso de la clase.
Determinar la conexión
La interdependencia entre dos o más clases es una asociación. Una dependencia representa una asociación que se puede implementar de diversas maneras, pero las consideraciones de implementación deben eliminarse del modelo de análisis para permitir una mayor flexibilidad en el diseño. Las asociaciones a menudo se expresan utilizando verbos descriptivos o frases verbales, incluidas representaciones de ubicaciones físicas, acciones conductoras, comunicación, relaciones con los propietarios, satisfacción de condiciones, etc. Extraiga todas las posibles afirmaciones relevantes del planteamiento del problema y escríbalas, pero no refine estas afirmaciones prematuramente.
Las siguientes son todas las asociaciones posibles en el sistema de red bancaria, la mayoría de las cuales se obtienen extrayendo directamente las frases verbales de las preguntas. En los enunciados, la relevancia de algunas frases verbales no es obvia. Finalmente, hay conexiones con el mundo objetivo o suposiciones humanas que deben verificarse con los usuarios porque no se encuentran en el planteamiento del problema.
Relevancia en el planteamiento del problema de la red bancaria;
La red bancaria incluye cajeros y cajeros automáticos;
Sucursales * * *Disfruta del cajero automático
Sucursales proporcionar computadoras a las sucursales;
Cuentas de computadoras a las sucursales;
Las computadoras de las sucursales procesan pagos de cuentas;
Las sucursales tienen cajeros;
Las comunicaciones por computadora entre estaciones de cajeros y sucursales;
Los cajeros ingresan transacciones para las cuentas;
Los cajeros automáticos aceptan tarjetas de efectivo;
Cajeros automáticos e interfaz de usuario;
Los cajeros automáticos emiten efectivo;
Los cajeros automáticos imprimen recibos;
El sistema maneja el acceso simultáneo;
Las sucursales proporcionan software;
Comparte costos con sucursales.
Frase verbal implícita:
Una sucursal se compone de sucursales
Una sucursal tiene una cuenta
Una sucursal tiene sucursales Computadora; ;
El sistema proporciona mantenimiento de registros;
El sistema proporciona seguridad;
El cliente tiene una tarjeta de efectivo.
Asociaciones basadas en el conocimiento del área problemática;
Empleo de cajeros de sucursales;
Cuentas de acceso a tarjetas de efectivo.
Utilice los siguientes criterios para eliminar asociaciones innecesarias e incorrectas:
(1) Si se ha eliminado una categoría, las asociaciones relacionadas con ella también deben eliminarse o deben eliminarse las relacionadas con otras categorías. reformulados juntos. En el ejemplo, eliminamos "Red bancaria", las asociaciones relacionadas también deberían eliminarse.
(2) Asociaciones irrelevantes o asociaciones en la etapa de implementación: elimine todas las asociaciones fuera del dominio del problema o asociaciones que involucren la estructura de implementación. Por ejemplo, "el sistema maneja el acceso concurrente" es un concepto de implementación.
(3) Acción: La asociación debe describir la naturaleza estructural del dominio de la aplicación en lugar de eventos transitorios, por lo que se deben eliminar "ATM acepta tarjetas de efectivo" y "ATM e interfaz de usuario".
(4) Asociación derivada: Omitir aquellas asociaciones que puedan ser definidas por otras asociaciones. Porque esta asociación es redundante. El diagrama de objetos preliminar del sistema de red bancaria se muestra en la Figura 10-20. Contiene conexiones.
4. Determinar atributos
Los atributos son propiedades de un solo objeto, generalmente representados por frases nominales decorativas. Los adjetivos a menudo representan valores de atributos específicos y enumerables que no se pueden expresar completamente en el enunciado de la pregunta. Sólo pueden descubrirse a través del conocimiento del dominio aplicado y del mundo objetivo. Sólo se consideran los atributos que son directamente relevantes para la aplicación específica y no se consideran aquellos que están más allá del alcance del problema. Primero descubra los atributos importantes, evite aquellos que solo se usan para la implementación y asigne a cada atributo un nombre significativo. Elimine los atributos innecesarios e incorrectos de acuerdo con los siguientes criterios:
(1) Objeto: si la existencia independiente de una entidad es más importante que su valor, entonces la entidad no es un atributo sino un objeto. Por ejemplo, en el directorio postal, "ciudad" es un atributo, pero en el censo, "ciudad" se trata como un objeto. En determinadas aplicaciones, las entidades con propiedades propias deben ser objetos.
(2) Atributo: Si el valor del atributo depende de un contexto específico, podemos considerar reformular el atributo como un calificador.
(3) Nombre: El nombre se utiliza a menudo como un determinante más que como un atributo de objeto. Cuando un nombre no depende del contexto, es una propiedad de objeto, especialmente cuando no es único.
(4) Identificador: al considerar la ambigüedad del objeto, se introduce el identificador de objeto. No figura en el modelo de objetos, pero está implícito en el modelo de objetos. Se enumeran las propiedades del dominio.
(5) Valor interno: Si una propiedad describe el estado interno de un objeto opaco, debe eliminarse del modelo de objetos.
(6) Refinamiento: ignora los atributos que probablemente no afecten a la mayoría de las operaciones.
5. Utilice la herencia para refinar las clases
Usar la herencia * * * Hay dos formas de disfrutar de las instituciones y organizaciones públicas que se turnan.
(1) De abajo hacia arriba, generalice el * * * homomorfismo de las clases existentes a las clases principales y busque clases con atributos, relaciones u operaciones similares para descubrir la herencia. Por ejemplo, "transacción remota" es similar a "transacción de cajero" y puede resumirse como "transacción". Algunas estructuras amplias a menudo se basan en clasificaciones existentes de fronteras mundiales objetivas. Siempre que sea posible, intente utilizar conceptos existentes. La simetría a menudo ayuda a descubrir algunas clases faltantes.
(2) Refine las categorías existentes en subcategorías más específicas de arriba a abajo. La cosificación suele ser clara desde el área de aplicación. La aplicación de enumeradores en un dominio es la fuente más común de cosificación. Por ejemplo, los menús pueden incluir menús fijos, menús superiores, menús emergentes, menús desplegables, etc. , que puede subdividir las categorías del menú en varias subcategorías específicas del menú. Cuando el mismo nombre de asociación aparece varias veces y tiene el mismo significado, se debe especificar como una clase relacionada tanto como sea posible. Por ejemplo, "transacción" ingresa desde "contador de efectivo" y "ATM", luego "contador de entrada" es el resumen de "contador de efectivo" y "cajero automático". En una jerarquía de clases, puede asignar propiedades y asociaciones a clases específicas. Todos los atributos y deben asignarse a la clase más genérica y apropiada, a veces con algunas modificaciones.
Las enumeraciones en el dominio de la aplicación son la fuente de materialización más común.
6. Mejorar el modelo de objetos
El modelado de objetos no puede garantizar que el modelo sea completamente correcto la primera vez. Todo el proceso de desarrollo de software es un proceso de mejora continua. La mayoría de los diferentes componentes del modelo se completan en diferentes etapas. Si se descubren defectos en el modelo, es necesario volver a la etapa anterior para realizar modificaciones y comenzar algunos trabajos de refinamiento una vez completados el modelo dinámico y el modelo funcional.
(1) Varias situaciones posibles de objetos faltantes y sus soluciones:
Si hay atributos y operaciones no relacionados en la misma clase, descomponga la clase para que las partes estén relacionadas entre sí other ;
Si el sistema de generalización no está claro, es posible separar clases que desempeñan dos roles.
Si hay una operación sin una clase de destino, busque y agregue la clase sin un objetivo.
Si hay una asociación redundante con el mismo nombre y propósito, cree una pérdida mediante; generalización La clase principal para organizar asociaciones juntas.
(2) Encuentra clases redundantes.
Si faltan atributos, operaciones y asociaciones en una clase, se pueden eliminar.