You are on page 1of 20

INSTITUTO DE ESTUDIOS SUPERIORES DE CHIAPAS UNIVERSIDAD SALAZAR

INGENIERIA EN SISTEMAS COMPUTACIONALES
TRABAJO INVESTIGACIONES

MATERIA: ING. DE SOFTWARE

ASESOR: ING. GENNER IZQUIERDO MORENO

1

ALUMNO: BRIGIDO SANCHEZ AGUILAR.

PICHUCALCO CHIAPAS; 2013

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.

2

DISEÑO ORIENTADO A OBJETO 1 2 3 1....1 PRESENTACION…………………………………………………………... DISEÑO ALGORITMO Y ESTRUCTURA DE DATOS..2 DESCRIPCION DE OBJETO…………………………………………....1...1 1.2 1.1.1.1 0..... INDICE……………………………………………………………………….1. PROCESO DE DISEÑO DE OBJETO 4-8 9-10 11 12 2..2...0. CONCLUCION……………………………………………………………… 14-15 16-18 19 3 ..0. ENFOQUE CONVENCIONAL PARA PROGRAMACION OO………...……………………………………………………….2...3 1. ASPECTO DEL DISEÑO………………………………………………….1.. INTRODUCCION….4 DISEÑO PARA SISTEMA ORIENTADO A OBJETO…………………..1 2.1.. PANORAMA DE DOO……………………………………………………..0 1.......

La arquitectura proporciona el contexto en el cual se toman decisiones más detalladas en una fase posterior del diseño. AL tomar decisiones de alto nivel que se apliquen a todo el sistema. dinámico y funcional. Una forma de caracterizar una aplicación es por la importancia relativa de sus modelos de objetos. Éste incluye decisiones acerca de la organización del sistema en subsistemas. y decisiones fundamentales conceptuales y de política que son las que constituyen un marco de trabajo para el diseño detallado La organización global del sistema es lo que se denomina la arquitectura del sistema. de tal manera que sea posible realizar más trabajo por parte de varios diseñadores que trabajarán independientemente en distintos subsistemas. El diseñador de sistemas debe tomar las siguientes decisiones: . Las distintas arquitecturas ponen distintos grados de énfasis en los tres modelos. Existe un cierto número de estilos frecuentes de arquitectura.Identificar la concurrencia inherente al problema .DISEÑO ORIENTADOS A OBJETOS Diseño Para Sistema Orientado A Objeto El diseño del sistema es la estrategia de alto nivel para resolver problemas y construir una solución. El diseño de sistemas es la primera fase de diseño en la cual se selecciona la aproximación básica para resolver el problema. el diseñador desglosa el problema en subsistemas. cada uno de los cuales es adecuado para ciertas clases de aplicaciones. Durante el diseño del sistema. la asignación de subsistemas a componentes hardware y software.Asignar los subsistemas a los procesadores y tareas 4 .Organizar el sistema en subsistemas . La arquitectura del sistema es la organización global del mismo en componentes llamados subsistemas. se decide la estructura y el estilo global.

El producto de trabajo en la tercera etapa. Aunque cada etapa resulta en un producto de trabajo útil. En la etapa de implementación. diseñar. Estos objetos tienen una correspondencia directa con los objetos del mundo real. Entender un sistema grande y complejo es en si una tarea difícil. se esta consciente de los diferentes problemas que los analistas y desarrolladores de software deben confrontar. 5 . no es una tarea muy difícil transferir conocimiento del mundo real al dominio del software. el mundo real es complejo. la orientación a objetos construye sistemas usando objetos. entender. Realizar mantenimiento del sistema de software. Después de la primera etapa. de entender los requerimientos. El proceso del ciclo de vida involucra las siguientes etapas:       Entender los requerimientos. el sistema resulta en la creación de manuales de diversos tipos. Diseñar el sistema de software. correspondiente a diseñar el sistema. tales como: el manual de usuario. Por lo tanto. se crean uno o más documentos (reportes o informes). el manejo de aplicaciones del mundo real es cada vez más desafiante.Manejar el acceso a recursos globales .Seleccionar la implementación de control en software . 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. Estos documentos son llamados productos de trabajo y permite comprender el sistema en cada etapa. El Diseño Orientado a Objeto tiene la capacidad inherente para ocuparse de los diferentes aspectos de sistemas de software complejos. desarrollar y desplegar grandes sistemas de software son los retos que enfrenta la industria de software en la actualidad. intentaron proporcionar soluciones y eran exitosas en muchas situaciones. Probar el sistema de software. El análisis de diseño de sistemas es un proceso difícil que demanda tiempo. y con el creciente uso de computadoras en todos los aspectos de la vida.Establecer la compensación de prioridades El desarrollo de aplicaciones de software es fundamentalmente un proceso complejo. Mientras la metodología de diseño estructurado construye un sistema usando funciones. Un requerimiento ignorado o dejado de lado tiene un efecto en cascada en todo el proceso de desarrollo del sistema. Al completar cada una de las etapas. por lo que. Implementar el sistema de software. Las metodologías de análisis y diseño estructurado (orientadas a aspectos. de patrones) usadas anteriormente. Sin embargo.Seleccionar una aproximación para la administración de almacenes de datos . se crea un producto de trabajo llamado Entendimiento preliminar de requerimientos. manual administrativo y otros. Las entidades del mundo real son simples de entender. Los requerimientos son pocos claros y volátiles por naturaleza.Manejar las condiciones de contorno . es el documento diseño.. Analizar los requerimientos. literal.

dado que pueden cambiar en cualquier instante de tiempo.Identidad: Se refiere a la manera única en que el objeto es conocido.  Objeto: Es una instancia de una clase.Fundamentos del Diseño Orientado a Objetos Se basa en modelar el mundo real. 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. esta última se oculta. como el procedimental (programación orientada a procedimientos. en una manera conveniente de manejar la complejidad. La utilidad se ve en la reducción de complejidad. así como las funciones y procedimientos que operan sobre ellos. trabaja con objetos en el sistema que interactúan unos con otros a través de mensajes. Un objeto tiene lo siguiente: . . En la orientación a objetos. el encapsulamiento ayuda a mantener junto los elementos de datos. Al tener encapsulado juntos los datos miembros y las diferentes operaciones. referido y distinguido de todos los objetos en el sistema. Son identificadas como Entidades en el dominio del problema. Representan la mayor de las veces a las entidades del mundo real. Este tipo de dato definido por el usuario puede ser usado solo cuando se crean instancias del tipo de datos.  Clase: Son tipos de datos definidos por el usuario. Por lo tanto. Proporciona los recursos para ocuparse de los objetos de un sistema complejo.  Encapsulamiento: La esencia del encapsulamiento recae en que cuando un objeto trae consigo su funcionalidad. y esto es conveniente porque solo interesa saber que hace la Clase pero no como lo hace.Estado: Son las propiedades y los valores que toman estas propiedades en un instante de tiempo.  Ocultamiento de la información: El encapsulamiento conlleva al ocultamiento de la información. Un objeto promete cumplir el contrato prometido por su clase. Sus valores son dinámicos por naturaleza.Comportamiento: Consiste de responsabilidades que promete llevar a acabo el objeto. esto es debido a que las Clases se comportan como cajas negras donde solo se conoce el comportamiento pero no los detalles internos. Es la manera en que un objeto reacciona a los mensajes que recibe de otros objetos. mientras ignora detalles que tienden a distraer. el usuario debe saber como acceder a las operaciones y trabajar con los datos. 6 . esto es. la abstracción. tanto de datos como la implementación de las operaciones de un objeto son ocultados al usuario. es eliminar lo innecesario. el cual un programa es estructurado en base a sus funciones) los datos y operaciones se mantienen separados. En otros paradigmas. . Cada objeto puede definirse en términos del comportamiento que muestra o se espera que muestre.

múltiples funcionalidades”.Interfaz: Es la forma en la cual se presenta la clase al mundo real. sino que se relacionan entre sí.  Mensajes: Los objetos se comunican unos con otros a través de mensajes. Un estereotipo permite al diseñador crear nuevos bloques de construcción extendiendo bloques 7 .Implementación: Es el método que se sigue para hacer que el objeto de la clase realice sus responsabilidades. Los objetos heredan las propiedades y el comportamiento de todas las clases a las que pertenecen. Interfaz e Implementación: Cuando la complejidad de una entidad en el mundo real llega a ser muy grande. El objeto receptor satisface el requerimiento del objeto iniciador aceptándolo e implementando la tarea. La correspondencia entre la llamada actual y la implementación de la funcionalidad dependerá de los argumentos pasados con la llamada.El nombre del mensaje.  Herencia: Las clases no están aisladas. También se pueden pasar los mismos objetos como argumentos. Esta relación también es conocida como la relación contenedora.  Agregación: Es posible que una entidad contenga a otra entidad.  Métodos: Son una parte de la declaración de la clase. Es un pedido a un objeto para que realice una tarea a través de un método apropiado. Estos pueden compartir (y extender) su comportamiento sin tener que volver a implementarlo. .  Tipo: Es un estereotipo de una clase. Típicamente. se precisa ocultar al usuario algunos de los detalles menos necesarios acerca de esa entidad. cada entidad tiene dos aspectos: . Usualmente. Cuando un objeto hereda de más de una clase se dice que hay herencia múltiple. un mensaje contiene lo siguiente: . Son los algoritmos usados por la clase para implementar la tarea prometida por la interfaz.  Polimorfismo: Es la posibilidad de hacer que una operación exhiba diferentes comportamientos en instancias diferentes. La herencia organiza y facilita el polimorfismo y el encapsulamiento permitiendo a los objetos ser definidos y creados como tipos especializados de objetos preexistentes. Esto suele hacerse habitualmente agrupando los objetos en clases y estas en árboles o enrejados que reflejan un comportamiento común. la cual quiere decir.El nombre del objeto que va a recibir el mensaje. El comportamiento depende de los tipos de datos usados en diferentes operaciones. Un mensaje puede cambiar el estado de un objeto receptor. Polimorfismo significa. que es la entidad contenida en l parte de la entidad contenedora. . formando una jerarquía de clasificación. . “un nombre. Esto es conocido como una relación “tiene un” entre entidades.Argumentos que son pasados al objeto receptor. El objeto iniciador conoce la interfaz del objeto sobre el cual esta acción es iniciada.

 Rol: Cada entidad tiene un cierto comportamiento asociado a ella. puesto que todos los usuarios comparten el código. mejor calidad de software y menor costo de mantenimiento. solo contribuyen con un estilo particular de prog5amacion. Es similar al concepto de módulos. además de ser más confiable. Beneficios del Diseño Orientado a Objetos  Ofrece un mayor nivel de productividad del programador. Esto ayuda a ahorrar tiempo de desarrollo y a aumentar la productividad.  Paquete: Es un mecanismo para agrupar elementos. dependiendo del rol que juega en ese momento. La herencia y la agregación facilitan la reutilización. Cuando un objeto juega un rol. Esto permite ahorrar en los costos de mantenimiento y prueba. el código no necesita ser reescrito. el tiempo de programación puede ser utilizado eficientemente para entender el nuevo sistema. Ventajas del Diseño Orientado a Objetos Existen dos grandes ventajas del desarrollo del sistema. Cuando las metas y requerimientos del sistema son pocos claros.  Prototipos Rápidos: Cuando un sistema de software se diseña a partir de componentes reutilizables. estas son:  Capacidad de Reutilización: Cuando el comportamiento de una entidad se hereda de otra entidad. presenta un determinado comportamiento al mundo exterior. Describe el comportamiento de una entidad.  Los programas pueden ser construidos en módulos de trabajo estándares que se comunican unos con otros. donde los elementos de la función son agrupados. como clases y sus relaciones. Los elementos que se hacen referencia son elementos de modelo de alto nivel.existentes. Las implementaciones de estas operaciones no están incluidas en el tipo. más que teniendo que empezar desde un borrador. 8 .  Es fácil aportar trabajo en un proyecto basado en entidades. Se usa cuando se desea modelar el significado de una abstracción y la adherencia de la abstracción a una interfaz.

A diferencia del diceño arquitectónico derivado a partir del uso de métodos de ingeniería del software convencionales. 3. Especificación de la lógica procedimental. 4. 9. Asignación de operaciones a clases. El diseño arquitectónico es diferente. el DOO aplica diseño de datos (cuando se representan atributos). 6. 9 . Especificación de conexiones de mensajes. 5.  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. Definición de clases y jerarquías. Representación de jerarquías de módulos.  La herencia elimina códigos redundantes y extiende el uso de las entidades. Es posible para múltiples instancias de una entidad coexistir sin ninguna interferencia. un diseño OO no exhibe una estructura de control jerárquica. y diseño procedimental ( en el diseño de operaciones).10 componentes de modelado para el diseño que pueden usarse para comparar diversos métodos de diseño convencionales con otros orientados a objetos: 1.  El diseño centralizado de los datos permite capturar mas detalles de la modularidad en el modo de implementación. La arquitectura de diseño OO tiene más que ver con las colaboraciones entre objetos que con el flujo de control. ENFOQUE CONVECIONAL CONTRA LA PROGRAMACION ORIENTADA A OBJETO Como en el diseño del software convencional. 8. 2. Definición detallada de las operaciones. diseño de interfaces (cuando se desarrolla un modelo de intercambio de mensajes). Especificación de definiciones de datos. Representaciones de estados de objetos y transiciones. 7. Indicación de secuencia de proceso fin-a fin.

Objeto Es una entidad (tangible o intangible) que posee características y acciones que realiza por sí solo o interactuando con otros objetos. Francia. 2. 10 . Para el contexto del Enfoque Orientado a Objetos (EOO) un objeto es una entidad que encapsula datos (atributos) y acciones o funciones que los manejan (métodos). Un objeto es una entidad caracterizada por sus atributos propios y cuyo comportamiento está determinado por las acciones o funciones que pueden modificarlo. Esta es una aproximación tradicional al emprendizaje que se aplica sobre los procesos existentes actualmente en el ámbito de los emprendedores pero desde un enfoque innovador. 1. así como también las acciones que requiere de otros objetos. Puede ser definido como una encapsulación y una abstracción: una encapsulación de atributos y servicios. en Portugal.10. Se trata de examinar el conjunto del proceso que engloba el sistema de promoción de los emprendedores. Infraestructuras físicas y financiación. Un objeto tiene identidad e inteligencia y constituye una unidad que oculta tanto datos como la descripción de su manipulación. Se analizan en profundidad el comportamiento y las actividades que abarcan estas áreas de investigación en cada uno de los países integrantes del Espacio Atlántico. Más que describir cada objeto individualmente. esto es. Los lenguajes de POO ofrecen medios y herramientas para describir los objetos manipulados por un programa. Colectivos específicos. estos lenguajes proveen una construcción (Clase) que describe a un conjunto de objetos que poseen las mismas propiedades. dividiendo este ciclo en 5 áreas temáticas:      Pre-emprendizaje. La aproximación al estudio del emprendizaje se realiza mediante el análisis de varias áreas específicas. España. Medidas de acompañamiento. También para el EOO un objeto se define como una instancia o particularización de una clase. y una abstracción del mundo real. Creación de empresas. Programación Orientada a Objeto (POO) La programación Orientada a Objetos es una metodología que basa la estructura de los programas en torno a los objetos. Irlanda y Reino Unido. Identificación de servicios exclusivos.

Cada objeto puede ser considerado como un proveedor de servicios utilizados por otros objetos que son sus clientes. una persona. un carro. De allí que un programa pueda ser visto como un conjunto de relaciones entre proveedores clientes. sugiere la derivación de cinco principios de diseño para arquitecturas modulares: • Unidades modulares • Pocas interfaces • Interfaces pequeñas (acoplamiento débil) • Interfaces explícitas 11 .. Descomponibilidad: Facilidad con la que un método de diseño ayuda al diseñador a descomponer un problema en subproblemas más sencillos. Continuidad: Capacidad de realizar cambios en un programa y que esos cambios afecten a un número mínimo de módulos. Un libro. ASPECTO DEL DISEÑO Cinco criterios para evaluar la calidad de un método de diseño a partir de la modularidad. Compresibilidad: Facilidad para comprender un componente del programa sin tener que hacer referencia a otros módulos. un polígono. 2.Las acciones o funciones. A partir de estos criterios..Los datos. son apenas algunos ejemplos de objeto. Protección: Característica arquitectónica que reduce la propagación de errores. que llamamos atributos. Los servicios ofrecidos por los objetos son de dos tipos: 1. también pueden ser abstractos. Cada objeto puede ser a al vez proveedor y cliente. Componibilidad: Grado en el que un método de diseño permite la reutilizabilidad de módulos. En general son entidades que juegan un rol bien definido en el dominio del problema. que llamamos métodos.Los objetos de interés durante el desarrollo de software no sólo son tomados de la vida real (objetos visibles o tangibles).

el DOO consta de cuatro pasos fundamentales: a) Identificación y definición de objetos y clases b) Organización de relaciones entre clases c) Extracción de estructuras en una jerarquía de clases d) Construcción de bibliotecas de clases reutilizables Como en todas las fases de Ingeniería del Software.. y vuelta a empezar.. Pasos del DOO Esencialmente. PANORAMA DE DOO Los elementos iniciales de un DOO son los propios objetos. que a su vez serán subclases de clases más abstractas. los objetos se van agrupando en clases. En cambio. los diseñadores comienzan definiendo un conjunto de clases.• Ocultamiento de información Para conseguir un acoplamiento débil. consiguiendo arquitecturas más modulares. y posteriormente. a menos que la información se defina explícitamente de forma pública.El principio de ocultamiento de información se consigue cuando toda la información del módulo está oculta para el acceso desde el exterior. y no mediante una zona global de datos. modifican. ya que la comunicación entre módulos no sería fácilmente comprensible para un observador externo. a medida que se van identificando aspectos comunes. Los métodos estructurados y sus correspondientes notaciones definen un sistema como un conjunto secuencial de módulos interdependientes que comparten datos. los métodos orientados a objetos definen un conjunto de módulos independientes relacionados y con visibilidad limitada entre ellos. . mediante interfaces explícitas. Identificación y definición de objetos 12 . que se amplían. Siempre que los módulos tengan que comunicarse tiene que hacerlo de forma clara.. se debe minimizar el número de interfaces entre módulos y minimizar la cantidad de información que se mueve a través de una interfaz. es decir. el método de Diseño Orientado a Objetos consigue alcanzar estos principios de forma más eficiente que el resto de los enfoques. Si bien estos principios son aplicables a cualquier tipo de diseño. el DOO es cíclico.

Esta metodología sugiere que se comience con una descripción textual del sistema deseado y que el diseñador vea: • A los nombres como posibles identificadores de las clases de los objetos • A los verbos como posibles métodos La lista resultante de clases (nombres) y métodos (verbos) se utilizará para comenzar el proceso de diseño. aplicación de las técnicas adecuadas. "disegno". Eficacia se refiere al hecho de que el producto funcione. criterios estéticos con el fin de resolver un problema en forma eficaz y eficiente. El método que utilizaremos para la identificación de objetos es el propuesto por Booch en 1983. • Fines: el objetivo final del proyecto. En la etapa de diseño debemos considerar: • Los medios o recursos: determinados materiales. sea la solución al problema planteado. 13 . Eficiencia hace referencia a que usemos los recursos de la mejor manera posible. aspectos técnicos. que significa delinear una figura. considerando las especificaciones y los conocimientos y recursos de que disponemos. • Conocimientos prácticos: saber hacer. máquinas. que dio origen al método gramatical. tiempo. tal que la solución sea del mínimo costo. espacio. herramientas. En el proceso de diseñar se ponen en juego conocimientos tecnológicos pero también conocimientos científicos. PARTE II PROCESO DE DISEÑO DE OBJETO Diseñar es proponer creativamente una solución a un problema planteado. • Destinatarios: a quien va destinado el producto resultante del proyecto. usuario o cliente. dinero. Diseño proviene del italiano.El principal problema del desarrollo de un sistema orientado a objetos es encontrar los objetos en la fase de AOO y DOO. realizar un dibujo.

el valor de signo y de cambio. la estética. como así también procesada toda la información necesaria. Las características siguientes son las más importantes:  Abstracción: denota las características esenciales de un objeto. es necesario ESPECIFICAR cuáles son las metas a lograr. y "comunicarse" con otros objetos en el sistema sin revelar cómo se implementan estas características. La abstracción es clave en el proceso de análisis y diseño orientado a objetos. la funcionalidad. Esto permite aumentar la cohesión de los componentes del sistema. Cada objeto en el sistema sirve como modelo de un "agente" abstracto que puede realizar trabajo. ya que mediante ella podemos llegar a armar un conjunto de clases que permitan modelar la realidad o el problema que se quiere atacar.Antes de pensar en como resolver técnicamente un problema. Encapsulamiento: significa reunir todos los elementos que pueden considerarse pertenecientes a una misma entidad. Para Diseñar un objeto se parte siempre de tener claro y preestablecido la necesidad o problema a resolver. y. supuestamente más adecuada. 14  . donde se capturan sus comportamientos. Diseñar es proponer creativamente una solución al problema planteado. Básicamente se constituye en un modelo terminal que tiene en cuenta la cantidad de objetos. las funciones o los métodos pueden también ser abstraídos. Algunos autores confunden este concepto con el principio de ocultación. Los procesos. una variedad de técnicas son requeridas para ampliar una abstracción. los colores adecuados. a una determinada necesidad. Las ESPECIFICACIONES. El proceso de abstracción permite seleccionar las características relevantes dentro de un conjunto e identificar comportamientos comunes para definir nuevos tipos de entidades en el mundo real. cuando lo están. los aspectos ergonométricos. en la elaboración de una propuesta que pueda ser aceptada como la solución. DESCRIPCION DE OBJETO Existe un acuerdo acerca de qué características contempla la "orientación a objetos". La etapa de diseño está asociada al concepto de creatividad. permiten La presentación del problema a resolver en forma precisa. al mismo nivel de abstracción. informar y cambiar su estado. principalmente porque se suelen emplear conjuntamente.

Esto asegura que otros objetos no puedan cambiar el estado interno de un objeto de manera inesperada. El aislamiento protege a las propiedades de un objeto contra su modificación por quien no tenga derecho a acceder a ellas. permitiendo un acceso directo a los datos internos del objeto de una manera controlada y limitando el grado de abstracción. Polimorfismo: comportamientos diferentes. solamente los propios métodos internos del objeto pueden acceder a su estado. pueden compartir el mismo nombre. esta última característica se llama asignación tardía oasignación dinámica. dicho de otro modo. Herencia: las clases no están aisladas. y la invocación de un comportamiento en una referencia producirá el comportamiento correcto para el tipo real del objeto referenciado. Algunos lenguajes relajan esto. Los objetos heredan las propiedades y el comportamiento de todas las clases a las que pertenecen. permitiendo a los objetos ser definidos y creados como tipos especializados de objetos preexistentes. y cada tipo de objeto expone una interfaz a otros objetos que especifica cómo pueden interactuar con los objetos de la clase. Principio de ocultación: cada objeto está aislado del exterior. Modularidad: se denomina modularidad a la propiedad que permite subdividir una aplicación en partes más pequeñas (llamadas módulos). Al igual que la encapsulación. Estos módulos se pueden compilar por separado. Recolección de basura: la recolección de basura o garbage collector es la técnica por la cual el entorno de objetos se encarga de destruir automáticamente. sino que se relacionan entre sí. los objetos 15      . las referencias y las colecciones de objetos pueden contener objetos de diferentes tipos. es un módulo natural. O. tales como las plantillas y la sobrecarga de operadores de C++. al llamarlos por ese nombre se utilizará el comportamiento correspondiente al objeto que se esté usando. Cuando esto ocurre en "tiempo de ejecución". asociados a objetos distintos. Esto suele hacerse habitualmente agrupando los objetos en clases y estas enárboles o enrejados qu K Se reflejan un comportamiento común. y por tanto desvincular la memoria asociada. formando una jerarquía de clasificación. Algunos lenguajes proporcionan medios más estáticos (en "tiempo de compilación") de polimorfismo. Estos pueden compartir (y extender) su comportamiento sin tener que volver a implementarlo. Cuando un objeto hereda de más de una clase se dice que hay herencia múltiple. pero tienen conexiones con otros módulos. La herencia organiza y facilita el polimorfismo y el encapsulamiento. La aplicación entera se reduce a un agregado o rompecabezas de objetos. eliminando efectos secundarios e interacciones inesperadas. cada una de las cuales debe ser tan independiente como sea posible de la aplicación en sí y de las restantes partes. los lenguajes soportan la modularidad de diversas formas.

multiplicar y dividir cantidades. Son ejemplos de algoritmos los métodos utilizados en aritmética para sumar. especificar las operaciones necesarias para transformar los datos de entrada en datos de salida. la aplicación de la fórmula cuadrática para encontrar las raíces de un polinomio de segundo grado En todos ellos se cumplen las tres características anteriores. este conjunto finito de instrucciones debe también ser preciso y determinístico. para que la computadora pueda ejecutar una tarea es necesario que primero se diseñe el algoritmo correspondiente. siempre que el algoritmo se ejecute con un mismo conjunto de datos de entrada.que hayan quedado sin ninguna referencia a ellos. ya que el entorno la asignará al crear un nuevo objeto y la liberará cuando nadie lo esté usando. Definición de algoritmo: Un algoritmo es un conjunto finito de instrucciones cuyo fin es realizar una tarea. Determinístico: significa que el resultado debe depender estrictamente de los datos suministrados. el resultado debe ser siempre el mismo. la especificación de los datos y las instrucciones que permiten la comunicación entre los usuarios del programa y la máquina. restar. esta característica no existe y la memoria debe desasignarse expresamente. En la mayoría de los lenguajes híbridos que se extendieron para soportar el Paradigma de Programación Orientada a Objetos como C++ u Object Pascal. Esto significa que el programador no debe preocuparse por la asignación o liberación de memoria. El programa esta compuesto por el algoritmo. es decir. 16 .   Preciso: el algoritmo debe ejecutar la tarea para el cual fue diseñado. Una vez diseñado y probado el algoritmo. DISEÑO DE ALGORITMO Algoritmos Los algoritmos son el fundamento de la programación de computadoras. se trasforma en el programa correspondiente.

En el diagrama cada símbolo representa una acción en concreto.Un algoritmo eficiente y confiable es el producto de un análisis exhaustivo del problema. en cualquier dispositivo de salida. Diagrama de flujo El diagrama de flujo es la representación gráfica de un algoritmo. Las palabras subrayadas se llaman palabras reservadas. Por ejemplo. el paralelogramo es el símbolo de entrada de datos e indica que se lee el valor de la base (b) y el valor de la altura (h). para determinar la mejor alternativa de solución. 17 . para evitarlo deben utilizarse el símbolo conector. para ello se utiliza un conjunto de símbolos estándares mundialmente utilizados y desarrollados por organizaciones tales como ANSI (American National Institute) e ISO (International Standard Organization para la elaboración dediagramas de flujo. y palabras claves que indican el inicio y el fin del algoritmo y las instrucciones específicas a realizar. finalmente el ovalo rotulado con la palabra Fin indica que se ha llegado al fin del algoritmo.  Pseudocódigo Es un lenguaje simplificado para describir un algoritmo utilizando una mezcla de frases en lenguaje común. y cada instrucción del algoritmo se visualiza dentro del símbolo adecuado. se deben utilizar sangrías que facilitan la lectura del algoritmo Las instrucciones en pseudocódigo son fáciles de codificar en un lenguaje de programación. (utilizaremos el * como operador de multiplicación). Los símbolos se conectan con flechas para indicar el orden en que se ejecutan las instrucciones. 2. Elementos básicos en el diseño de algoritmos  HERRAMIENTAS PARA EL DISEÑO DE ALGORITMOS para diseñar algoritmos son el Las dos herramientas más utilizadas Pseudocódigo y el Diagrama de flujo.  2. el siguiente diagrama de flujo corresponde al algoritmo para calcular el área del rectángulo El ovalo rotulado con la palabra Inicio indica el comienzo del algoritmo. el rectángulo es el símbolo de proceso e indica que se realiza un proceso sobre los datos de entrada para calcular el área (a) multiplicando la base por la altura. Reglas para la construcción de diagramas de flujo   1. Las líneas de flujo nunca deben cruzarse. el siguiente es el símbolo de salida y representa un documento e indica que se muestra el valor del área obtenido. Todo diagrama de flujo debe tener un inicio y un fin.

 Se recomienda mantener uniforme el tamaño de los símbolos. La forma en que se capturan los datos de entrada o se muestran los datos de salida se detallarán al codificar el algoritmo en el lenguaje de programación.   3. No puede llegar más de una línea de flujo a un símbolo. El primer elemento de la secuencia debe ser un carácter alfabético. 4. lectura y escritura. Como regla general el flujo del proceso debe mostrarse de izquierda a derecha y de arriba abajo. su correspondiente símbolo en el diagrama de flujo Y ESTRUCTURA DE DATOS En programación. que en el ambiente de la programación se conocen como identificadores de datos. todo símbolo debe tener una línea de flujo entrando y otra saliendo salvo el símbolo que indica inicio o fin del diagrama. por lo que el texto que se escribe dentro no debe ser muy extenso. también conocida como memoria RAM (Random Access Memory). No se utilizan signos de acentuación No se utilizan espacios. Esto mismo se recomienda para la representación del algoritmo en pseudocódigo. inicialmente se presentan las instrucciones de asignación. 18 .  DECLARACION DE LOS DATOS Como ya se dijo los datos a procesar y los datos resultantes del proceso se almacenan en la memoria principal de la computadora. si se necesita separador debe utilizarse el carácter de subrayado (_) o guión bajo. recuérdese que el propio símbolo indica la operación a realizar. 6. Nombraremos los datos siguiendo las reglas para definir identificadores especificadas en la mayoría de los lenguajes de programación:      Se utilizan secuencias de caracteres formadas por caracteres alfabéticos y los dígitos decimales. definiendo cada una de ellas y mostrando su representación en pseudocódigo. Las líneas de flujo deben terminar siempre en un símbolo. también llamadas sentencias. 5. No se permite el uso de las palabras reservadas o palabras claves INSTRUCCIONES Un algoritmo normalmente incluye una gran cantidad de instrucciones. Un dato elemental es la mínima información que se tiene en un sistema. Todos los símbolos en un diagrama deben estar conectados mediante una línea de flujo. Para poder localizar los datos en la memoria se les asignan nombres. y también se destinan localidades de memoria cuando se necesita almacenar resultados de cálculos intermedios. una estructura de datos es una forma de organizar un conjunto de datos elementales con el objetivo de facilitar su manipulación.

así como.Una estructura de datos define la organización e interrelación de estos y un conjunto de operaciones que se pueden realizar sobre ellos. dadas dos estructuras originar una nueva ordenada y que contenga a las apareadas. Este tipo de diseño hace uso de elementos intangibles tales como: conceptos. Búsqueda. encontrar un determinado valor en la estructura para realizar una operación con este valor. metodologías de análisis y formas de programación en el desarrollo de sistemas a partir de un conjuntos de objetos relacionados. Los pilares fundamentales de la orientación a objetos son abstracción. propiedades y valores. Otras operaciones que se pueden realizar son:   Ordenamiento. herramientas u objetos. la elección de la estructura de datos apropiada para cada problema depende de factores como la frecuencia y el orden en que se realiza cada operación sobre los datos. en forma secuencial o binario (siempre y cuando los datos estén ordenados). borrar un valor de la estructura. Cada estructura ofrece ventajas y desventajas en relación a la simplicidad y eficiencia para la realización de cada operación. 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. encapsulamiento. Las operaciones básicas son:    Alta. y de elementos físicos tangibles como: las cosas. las cuales tienen a su vez. tiene tipos de datos definidos por los usuarios. ideas. 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. las operaciones que se pueden realizar con ellas. Presenta ciertas características tales como: simula actividades del mundo real. De esta forma. Apareo. de los elementos pertenecientes a la estructura. reutiliza el código a través de la herencia y permite el mismo nombre para diferentes funcionalidades. 19 . esconde los detalles de la implementación. modularidad. Baja. Cada uno de estos elementos es conocido como entidades del mundo real. adicionar un nuevo valor a la estructura. herencia entre otros. mediante las cuales se basan las actividades de desarrollo de un sistema. permitiendo su uso en forma natural en la resolución de problemas.

20 .