Enfoque orientado a objetos
En el enfoque orientado a objetos, la atención se centra en capturar la estructura y el comportamiento de los sistemas de información en pequeños módulos que combinan datos y procesos. El objetivo principal del Diseño Orientado a Objetos (OOD) es mejorar la calidad y productividad del análisis y diseño del sistema haciéndolo más utilizable.
En la fase de análisis, los modelos OO se utilizan para llenar el vacío entre problema y solución. Funciona bien en situaciones en las que los sistemas se someten a un diseño, adaptación y mantenimiento continuos. Identifica los objetos en el dominio del problema, clasificándolos en términos de datos y comportamiento.
El modelo OO es beneficioso de las siguientes maneras:
Facilita cambios en el sistema a bajo costo.
Promueve la reutilización de componentes.
Simplifica el problema de integrar componentes para configurar un sistema grande.
Simplifica el diseño de sistemas distribuidos.
Elementos del sistema orientado a objetos
Repasemos las características del sistema OO -
Objects- Un objeto es algo que existe dentro del dominio del problema y puede identificarse por datos (atributo) o comportamiento. Todas las entidades tangibles (estudiante, paciente) y algunas entidades intangibles (cuenta bancaria) se modelan como objeto.
Attributes - Describen información sobre el objeto.
Behavior- Especifica lo que puede hacer el objeto. Define la operación realizada sobre los objetos.
Class- Una clase encapsula los datos y su comportamiento. Objetos con significado y propósito similares agrupados como clase.
Methods- Los métodos determinan el comportamiento de una clase. No son más que una acción que puede realizar un objeto.
Message- Un mensaje es una llamada a una función o procedimiento de un objeto a otro. Son información enviada a objetos para activar métodos. Básicamente, un mensaje es una llamada a una función o procedimiento de un objeto a otro.
Características del sistema orientado a objetos
Un sistema orientado a objetos viene con varias características excelentes que se describen a continuación.
Encapsulamiento
La encapsulación es un proceso de ocultación de información. Es simplemente la combinación de proceso y datos en una sola entidad. Los datos de un objeto están ocultos del resto del sistema y solo están disponibles a través de los servicios de la clase. Permite la mejora o modificación de los métodos utilizados por los objetos sin afectar otras partes de un sistema.
Abstracción
Es un proceso de tomar o seleccionar el método y los atributos necesarios para especificar el objeto. Se centra en las características esenciales de un objeto en relación con la perspectiva del usuario.
Relaciones
Todas las clases del sistema están relacionadas entre sí. Los objetos no existen de forma aislada, existen en relación con otros objetos.
Hay tres tipos de relaciones de objeto:
Aggregation - Indica relación entre un todo y sus partes.
Association - En esto, dos clases están relacionadas o conectadas de alguna manera, como una clase trabaja con otra para realizar una tarea o una clase actúa sobre otra clase.
Generalization- La clase secundaria se basa en la clase principal. Indica que dos clases son similares pero tienen algunas diferencias.
Herencia
La herencia es una gran característica que permite crear subclases de una clase existente heredando los atributos y / u operaciones de clases existentes.
Polimorfismo y enlace dinámico
El polimorfismo es la capacidad de adoptar muchas formas diferentes. Se aplica tanto a objetos como a operaciones. Un objeto polimórfico es aquel cuyo tipo verdadero se esconde dentro de una clase superior o padre.
En la operación polimórfica, la operación puede llevarse a cabo de manera diferente por diferentes clases de objetos. Nos permite manipular objetos de diferentes clases conociendo solo sus propiedades comunes.
Enfoque estructurado vs. Enfoque orientado a objetos
La siguiente tabla explica en qué se diferencia el enfoque orientado a objetos del enfoque estructurado tradicional:
Enfoque estructurado | Enfoque orientado a objetos |
---|---|
Funciona con un enfoque de arriba hacia abajo. | Funciona con un enfoque de abajo hacia arriba. |
El programa se divide en varios submódulos o funciones. | El programa está organizado por número de clases y objetos. |
Se utiliza la llamada de función. | Se utiliza el paso de mensajes. |
La reutilización del software no es posible. | La reutilización es posible. |
La programación del diseño estructurado generalmente se deja hasta las fases finales. | La programación del diseño orientado a objetos se realiza simultáneamente con otras fases. |
El diseño estructurado es más adecuado para la deslocalización. | Es adecuado para el desarrollo interno. |
Muestra una clara transición del diseño a la implementación. | Transición no tan clara del diseño a la implementación. |
Es adecuado para sistemas en tiempo real, sistemas integrados y proyectos donde los objetos no son el nivel de abstracción más útil. | Es adecuado para la mayoría de aplicaciones comerciales, proyectos de desarrollo de juegos, que se espera personalizar o ampliar. |
El diagrama DFD & ER modela los datos. | El diagrama de clases, el diagrama de secuencia, el diagrama de diagrama de estado y los casos de uso contribuyen. |
En esto, los proyectos se pueden gestionar fácilmente debido a fases claramente identificables. | En este enfoque, los proyectos pueden ser difíciles de administrar debido a transiciones inciertas entre fases. |
Lenguaje unificado de modelado UML)
UML es un lenguaje visual que le permite modelar procesos, software y sistemas para expresar el diseño de la arquitectura del sistema. Es un lenguaje estándar para diseñar y documentar un sistema de una manera orientada a objetos que permite a los arquitectos técnicos comunicarse con el desarrollador.
Se define como un conjunto de especificaciones creadas y distribuidas por Object Management Group. UML es extensible y escalable.
El objetivo de UML es proporcionar un vocabulario común de términos orientados a objetos y técnicas de diagramación que sea lo suficientemente rico como para modelar cualquier proyecto de desarrollo de sistemas desde el análisis hasta la implementación.
UML se compone de:
Diagrams - Es una representación pictórica de proceso, sistema o alguna parte de él.
Notations - Consiste en elementos que trabajan juntos en un diagrama como conectores, símbolos, notas, etc.
Ejemplo de notación UML para clase
Diagrama de instancia-notación UML
Operaciones realizadas sobre objetos
Las siguientes operaciones se realizan en los objetos:
Constructor/Destructor- Crear nuevas instancias de una clase y eliminar instancias existentes de una clase. Por ejemplo, agregar un nuevo empleado.
Query- Acceder al estado sin cambiar de valor, no tiene efectos secundarios. Por ejemplo, buscar la dirección de un empleado en particular.
Update - Cambia el valor de uno o más atributos y afecta el estado del objeto. Por ejemplo, cambiar la dirección de un empleado.
Usos de UML
UML es bastante útil para los siguientes propósitos:
- Modelado del proceso empresarial
- Describir la arquitectura del sistema
- Mostrando la estructura de la aplicación
- Capturando el comportamiento del sistema
- Modelando la estructura de datos
- Construyendo las especificaciones detalladas del sistema
- Dibujar las ideas
- Generando el código del programa
Modelos estáticos
Los modelos estáticos muestran las características estructurales de un sistema, describen su estructura del sistema y enfatizan las partes que componen el sistema.
Se utilizan para definir nombres de clases, atributos, métodos, firmas y paquetes.
Los diagramas UML que representan el modelo estático incluyen el diagrama de clases, el diagrama de objetos y el diagrama de casos de uso.
Modelos dinámicos
Los modelos dinámicos muestran las características de comportamiento de un sistema, es decir, cómo se comporta el sistema en respuesta a eventos externos.
Los modelos dinámicos identifican el objeto necesario y cómo funcionan juntos a través de métodos y mensajes.
Se utilizan para diseñar la lógica y el comportamiento del sistema.
Los diagramas UML representan el modelo dinámico, incluyen diagrama de secuencia, diagrama de comunicación, diagrama de estado, diagrama de actividad.
Ciclo de vida de desarrollo de sistemas orientados a objetos
Consta de tres procesos macro:
- Análisis orientado a objetos (OOA)
- Diseño orientado a objetos (OOD)
- Implementación orientada a objetos (OOI)
Actividades de desarrollo de sistemas orientados a objetos
El desarrollo de sistemas orientados a objetos incluye las siguientes etapas:
- Análisis orientado a objetos
- Diseño orientado a objetos
- Prototyping
- Implementation
- Prueba incremental
Análisis orientado a objetos
Esta fase se refiere a la determinación de los requisitos del sistema y a comprender los requisitos del sistema. use-case model. Un caso de uso es un escenario para describir la interacción entre el usuario y el sistema informático. Este modelo representa las necesidades del usuario o la vista del usuario del sistema.
También incluye identificar las clases y sus relaciones con las otras clases en el dominio del problema que componen una aplicación.
Diseño orientado a objetos
El objetivo de esta fase es diseñar y refinar las clases, atributos, métodos y estructuras que se identifican durante la fase de análisis, la interfaz de usuario y el acceso a los datos. Esta fase también identifica y define las clases u objetos adicionales que apoyan la implementación del requisito.
Creación de prototipos
La creación de prototipos permite comprender completamente lo fácil o difícil que será implementar algunas de las características del sistema.
También puede dar a los usuarios la oportunidad de comentar sobre la usabilidad y utilidad del diseño. Puede definir aún más un caso de uso y facilitar el modelado de casos de uso.
Implementación
Utiliza el desarrollo basado en componentes (CBD) o el desarrollo rápido de aplicaciones (RAD).
Desarrollo basado en componentes (CBD)
CODD es un enfoque industrializado para el proceso de desarrollo de software que utiliza una variedad de tecnologías como herramientas CASE. El desarrollo de aplicaciones pasa del desarrollo personalizado al ensamblaje de componentes de software reutilizables, previamente probados y prediseñados que operan entre sí. Un desarrollador de CBD puede ensamblar componentes para construir un sistema de software completo.
Desarrollo rápido de aplicaciones (RAD)
RAD es un conjunto de herramientas y técnicas que se pueden utilizar para crear una aplicación más rápido de lo que normalmente es posible con los métodos tradicionales. No reemplaza al SDLC sino que lo complementa, ya que se enfoca más en la descripción de procesos y se puede combinar perfectamente con el enfoque orientado a objetos.
Su tarea es construir la aplicación de forma rápida e implementar de forma incremental el diseño de los requisitos del usuario a través de herramientas como visual basic, power builder, etc.
Prueba incremental
El desarrollo de software y todas sus actividades, incluidas las pruebas, son un proceso iterativo. Por lo tanto, puede ser un asunto costoso si esperamos para probar un producto solo después de su completo desarrollo. Aquí entran en escena las pruebas incrementales en las que el producto se prueba durante varias etapas de su desarrollo.