Herencia y Clases Abstractas ELO329: Diseño y Programación Orientados a Objetos.
Trabajo de diseño de sistemas orientados a objetos
Click here to load reader
-
Upload
douglimar89 -
Category
Education
-
view
4.264 -
download
0
Transcript of 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
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.
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;
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.
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.
- 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.
- 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
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
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.
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.