Trabajo de diseño de sistemas orientados a objetos

11

Click here to load reader

Transcript of Trabajo de diseño de sistemas orientados a objetos

Page 1: Trabajo de diseño de sistemas orientados a objetos

República Bolivariana de VenezuelaMinisterio del Poder Popular para la Defensa

Universidad Nacional Experimental Politécnica de la Fuerza ArmadaU.N.E.F.A

Núcleo Carabobo Extensión Guácara

DISEÑO DE SISTEMAS

Profesor: Integrantes:

Araujo J. Flores Ana

Jones Vanessa

Muñoz Oswaldo

Rojas Miguel

Soto Douglimar

Sección: GVII-003-D

Ingeniería Sistemas

Guácara, Julio 2010

Page 2: Trabajo de diseño de sistemas orientados a objetos

Introducción

El creciente poder de la computación y la tecnología ha dado lugar a muchos

esfuerzos de desarrollo de sistemas grandes y complejos. El modelado del mundo real

forma la base para la orientación a objetos y ayuda a los analistas a entender mejor el

sistema y a hacer corresponder lo más cerca posible al dominio de la solución.

El paso mas importante en el desarrollo orientado a objetos es la identificación

de las clases. Cada aspecto del entorno del problema debe ser plenamente entendido.

Los objetos son mecanismos útiles para hacer que las cosas trabajen bien en un

sistema. A partir de las especificaciones de los requerimientos del problema, el listado

de las abstracciones es crucial; ya que permite manejar la complejidad de un problema

y por lo tanto, reconocer los elementos esenciales para la solución del problema

dejando los detalles irrelevantes de lado.

La orientación a objetos intenta modelar el mundo real y los objetos del

mundo real; donde primero se modelan las entidades y luego se asocian las acciones

identificadas como las funciones o responsabilidades de estas entidades en la

búsqueda de una solución al problema existente.

Page 3: Trabajo de diseño de sistemas orientados a objetos

Diseño Orientados a Objetos

El desarrollo de aplicaciones de software es fundamentalmente un proceso

complejo, por lo que, entender, diseñar, desarrollar y desplegar grandes sistemas de

software son los retos que enfrenta la industria de software en la actualidad. El

proceso del ciclo de vida involucra las siguientes etapas:

• Entender los requerimientos.

• Analizar los requerimientos.

• Diseñar el sistema de software.

• Implementar el sistema de software.

• Probar el sistema de software.

• Realizar mantenimiento del sistema de software.

Al completar cada una de las etapas, se crean uno o más documentos (reportes

o informes). Estos documentos son llamados productos de trabajo y permite

comprender el sistema en cada etapa. Después de la primera etapa, de entender los

requerimientos, se crea un producto de trabajo llamado Entendimiento preliminar de

requerimientos. El entender los requerimientos juega un rol importante en el

desarrollo de software debido a que los dominios de aplicaciones son cada vez más

variados y complejos. El producto de trabajo en la tercera etapa, correspondiente a

diseñar el sistema, es el documento diseño. En la etapa de implementación, el sistema

resulta en la creación de manuales de diversos tipos, tales como: el manual de usuario,

manual administrativo y otros.

Aunque cada etapa resulta en un producto de trabajo útil, se esta consciente de

los diferentes problemas que los analistas y desarrolladores de software deben

confrontar. Los requerimientos son pocos claros y volátiles por naturaleza. Un

requerimiento ignorado o dejado de lado tiene un efecto en cascada en todo el

proceso de desarrollo del sistema. Entender un sistema grande y complejo es en si una

tarea difícil. El análisis de diseño de sistemas es un proceso difícil que demanda

tiempo. Las metodologías de análisis y diseño estructurado (orientadas a aspectos;

Page 4: Trabajo de diseño de sistemas orientados a objetos

literal; de patrones) usadas anteriormente, intentaron proporcionar soluciones y eran

exitosas en muchas situaciones. Sin embargo, el mundo real es complejo, y con el

creciente uso de computadoras en todos los aspectos de la vida, el manejo de

aplicaciones del mundo real es cada vez más desafiante.

El Diseño Orientado a Objeto tiene la capacidad inherente para ocuparse de los

diferentes aspectos de sistemas de software complejos. Mientras la metodología de

diseño estructurado construye un sistema usando funciones, la orientación a objetos

construye sistemas usando objetos. Estos objetos tienen una correspondencia directa

con los objetos del mundo real. Las entidades del mundo real son simples de entender.

Por lo tanto, no es una tarea muy difícil transferir conocimiento del mundo real al

dominio del software.

Fundamentos del Diseño Orientado a Objetos

Se basa en modelar el mundo real; trabaja con objetos en el sistema que

interactúan unos con otros a través de mensajes. Proporciona los recursos para

ocuparse de los objetos de un sistema complejo. Entre los principios que conforman e

diseño son:

• Abstracción de Datos: Permite a una persona concentrarse en los aspectos

esenciales del problema a la mano, mientras ignora detalles que tienden a

distraer; en una manera conveniente de manejar la complejidad. Por lo tanto,

la abstracción, es eliminar lo innecesario.

• Encapsulamiento: La esencia del encapsulamiento recae en que cuando un

objeto trae consigo su funcionalidad, esta última se oculta. La utilidad se ve en

la reducción de complejidad, esto es debido a que las Clases se comportan

como cajas negras donde solo se conoce el comportamiento pero no los

detalles internos, y esto es conveniente porque solo interesa saber que hace la

Clase pero no como lo hace.

Page 5: Trabajo de diseño de sistemas orientados a objetos

En la orientación a objetos, el encapsulamiento ayuda a mantener junto los

elementos de datos, así como las funciones y procedimientos que operan sobre ellos.

En otros paradigmas, como el procedimental (programación orientada a

procedimientos, el cual un programa es estructurado en base a sus funciones) los

datos y operaciones se mantienen separados.

• Ocultamiento de la información: El encapsulamiento conlleva al ocultamiento

de la información, esto es, tanto de datos como la implementación de las

operaciones de un objeto son ocultados al usuario. Al tener encapsulado

juntos los datos miembros y las diferentes operaciones, el usuario debe saber

como acceder a las operaciones y trabajar con los datos.

• Clase: Son tipos de datos definidos por el usuario. Representan la mayor de las

veces a las entidades del mundo real. Son identificadas como Entidades en el

dominio del problema.

• Objeto: Es una instancia de una clase. Este tipo de dato definido por el usuario

puede ser usado solo cuando se crean instancias del tipo de datos. Un objeto

promete cumplir el contrato prometido por su clase. Cada objeto puede

definirse en términos del comportamiento que muestra o se espera que

muestre. Un objeto tiene lo siguiente:

- Estado: Son las propiedades y los valores que toman estas propiedades en un

instante de tiempo. Sus valores son dinámicos por naturaleza, dado que

pueden cambiar en cualquier instante de tiempo.

- Identidad: Se refiere a la manera única en que el objeto es conocido, referido y

distinguido de todos los objetos en el sistema.

Page 6: Trabajo de diseño de sistemas orientados a objetos

- Comportamiento: Consiste de responsabilidades que promete llevar a acabo el

objeto. Es la manera en que un objeto reacciona a los mensajes que recibe de

otros objetos.

• Interfaz e Implementación: Cuando la complejidad de una entidad en el

mundo real llega a ser muy grande, se precisa ocultar al usuario algunos de los

detalles menos necesarios acerca de esa entidad. Usualmente, cada entidad

tiene dos aspectos:

- Interfaz: Es la forma en la cual se presenta la clase al mundo real.

- Implementación: Es el método que se sigue para hacer que el objeto de la

clase realice sus responsabilidades.

• Métodos: Son una parte de la declaración de la clase. Son los algoritmos

usados por la clase para implementar la tarea prometida por la interfaz.

• Mensajes: Los objetos se comunican unos con otros a través de mensajes. Es

un pedido a un objeto para que realice una tarea a través de un método

apropiado. El objeto iniciador conoce la interfaz del objeto sobre el cual esta

acción es iniciada. El objeto receptor satisface el requerimiento del objeto

iniciador aceptándolo e implementando la tarea.

Un mensaje puede cambiar el estado de un objeto receptor. Típicamente, un

mensaje contiene lo siguiente:

- El nombre del objeto que va a recibir el mensaje.

- El nombre del mensaje.

Page 7: Trabajo de diseño de sistemas orientados a objetos

- Argumentos que son pasados al objeto receptor. También se pueden pasar los

mismos objetos como argumentos.

• Herencia: Las clases no están aisladas, sino que se relacionan entre sí,

formando una jerarquía de clasificación. Los objetos heredan las propiedades y

el comportamiento de todas las clases a las que pertenecen. La herencia

organiza y facilita el polimorfismo y el encapsulamiento permitiendo a los

objetos ser definidos y creados como tipos especializados de objetos

preexistentes. Estos pueden compartir (y extender) su comportamiento sin

tener que volver a implementarlo. Esto suele hacerse habitualmente

agrupando los objetos en clases y estas en árboles o enrejados que reflejan un

comportamiento común. Cuando un objeto hereda de más de una clase se

dice que hay herencia múltiple.

• Agregación: Es posible que una entidad contenga a otra entidad. Esto es

conocido como una relación “tiene un” entre entidades. Esta relación también

es conocida como la relación contenedora; la cual quiere decir, que es la

entidad contenida en l parte de la entidad contenedora.

• Polimorfismo: Es la posibilidad de hacer que una operación exhiba diferentes

comportamientos en instancias diferentes. El comportamiento depende de los

tipos de datos usados en diferentes operaciones. La correspondencia entre la

llamada actual y la implementación de la funcionalidad dependerá de los

argumentos pasados con la llamada. Polimorfismo significa, “un nombre,

múltiples funcionalidades”.

• Tipo: Es un estereotipo de una clase. Un estereotipo permite al diseñador

crear nuevos bloques de construcción extendiendo bloques existentes. Las

implementaciones de estas operaciones no están incluidas en el tipo. Se usa

Page 8: Trabajo de diseño de sistemas orientados a objetos

cuando se desea modelar el significado de una abstracción y la adherencia de

la abstracción a una interfaz.

• Rol: Cada entidad tiene un cierto comportamiento asociado a ella. Describe el

comportamiento de una entidad. Cuando un objeto juega un rol, presenta un

determinado comportamiento al mundo exterior, dependiendo del rol que

juega en ese momento.

• Paquete: Es un mecanismo para agrupar elementos. Los elementos que se

hacen referencia son elementos de modelo de alto nivel, como clases y sus

relaciones. Es similar al concepto de módulos, donde los elementos de la

función son agrupados.

Ventajas del Diseño Orientado a Objetos

Existen dos grandes ventajas del desarrollo del sistema; estas son:

• Capacidad de Reutilización:

Cuando el comportamiento de una entidad se hereda de otra entidad, el código

no necesita ser reescrito. Esto permite ahorrar en los costos de mantenimiento y

prueba, además de ser más confiable, puesto que todos los usuarios comparten el

código. La herencia y la agregación facilitan la reutilización.

• Prototipos Rápidos:

Cuando un sistema de software se diseña a partir de componentes reutilizables,

el tiempo de programación puede ser utilizado eficientemente para entender el nuevo

Page 9: Trabajo de diseño de sistemas orientados a objetos

sistema. Cuando las metas y requerimientos del sistema son pocos claros, solo

contribuyen con un estilo particular de prog5amacion.

Beneficios del Diseño Orientado a Objetos

• Ofrece un mayor nivel de productividad del programador, mejor calidad de

software y menor costo de mantenimiento.

• Los programas pueden ser construidos en módulos de trabajo estándares que

se comunican unos con otros, más que teniendo que empezar desde un

borrador. Esto ayuda a ahorrar tiempo de desarrollo y a aumentar la

productividad.

• Es fácil aportar trabajo en un proyecto basado en entidades.

• Es posible para múltiples instancias de una entidad coexistir sin ninguna

interferencia.

• Usando el principio de ocultamiento de información, el programador esta en la

capacidad de construir programas seguros que no pueden ser invalidados por

códigos de otras partes del programa.

• La herencia elimina códigos redundantes y extiende el uso de las entidades.

• El diseño centralizado de los datos permite capturar mas detalles de la

modularidad en el modo de implementación.

Page 10: Trabajo de diseño de sistemas orientados a objetos

Conclusiones

El diseño orientado a objetos surge por la necesidad de solventar los problemas

en la construcción de software ya que es un proceso complejo y requiere de una

perspectiva diferente en la cual se propone nuevos esquemas de desarrollo,

metodologías de análisis y formas de programación en el desarrollo de sistemas a

partir de un conjuntos de objetos relacionados; permitiendo aumentar la

productividad de los programadores y facilitar la creación de soluciones de software

acordes con las demandas impuestas por los nuevos escenarios.

Este tipo de diseño hace uso de elementos intangibles tales como: conceptos,

ideas, y de elementos físicos tangibles como: las cosas, herramientas u objetos. Cada

uno de estos elementos es conocido como entidades del mundo real; las cuales tienen

a su vez, propiedades y valores, así como, las operaciones que se pueden realizar con

ellas.

Presenta ciertas características tales como: simula actividades del mundo real,

tiene tipos de datos definidos por los usuarios, esconde los detalles de la

implementación, reutiliza el código a través de la herencia y permite el mismo nombre

para diferentes funcionalidades, permitiendo su uso en forma natural en la resolución

de problemas.

Los pilares fundamentales de la orientación a objetos son abstracción,

encapsulamiento, modularidad, herencia entre otros; mediante las cuales se basan las

actividades de desarrollo de un sistema.

Page 11: Trabajo de diseño de sistemas orientados a objetos