790 likes | 3.13k Views
Presentación utilizada en Programación de Interfaces SIG
E N D
Que es una interfaz • Punto en el que se establece una conexión entre dos elementos, que les permite trabajar juntos • La idea fundamental en el concepto de interfaz es el de mediación, entre hombre y máquina. La interfaz es lo que "media", lo que facilita la comunicación, la interacción, entre dos sistemas de diferente naturaleza. • En software, parte de un programa que permite el flujo de información entre un usuario y la aplicación, o entre la aplicación y otros programas o periféricos. Esa parte de un programa está constituida por un conjunto de comandos y métodos que permiten estas intercomunicaciones. • Interfaz también hace referencia al conjunto de métodos para lograr interactividad entre un usuario y una computadora. Una interfaz puede ser del tipo GUI, o línea de comandos, etc. También puede ser a partir de un hardware, por ejemplo, el monitor, el teclado y el mouse, son interfaces entre el usuario y el ordenador. • Una interfaz define el limite de comunicación entre 2 elementos, tales como software, hardware o un usuario.
Interactuamos con el mundo que nos rodea a través de cientos de ellas. Muchas son tan conocidas y aceptadas, como el picaporte de las puertas, que ni siquiera vemos. La mejor interfaz es la que no se ve. • Sin embargo muchas de ellas, por nuevas, desconocidas o mal diseñadas, son visibles. ¿Cuántas veces no encuentran lo que buscan o no saben cómo hacer lo que quieren?. Esta situación es el resultado de una mala interfaz, que a su vez genera un problema de usabilidad. El mejor sistema o la herramienta perfecta, es inútil si no podemos interactuar. • La interfaz entre un humano y una computadora se llama interfaz de usuario. Las interfaces entre hardware son interfaces físicas. • La interfaz de usuario es el medio con que el usuario puede comunicarse con una máquina, un equipo o una computadora, y comprende todos los puntos de contacto entre el usuario y el equipo.
Tipos de interfaces de usuario • Según la forma de interactuar del usuario Atendiendo a como el usuario puede interactuar con una interfaz, nos encontramos con varios tipos de interfaces de Usuario: • Interfaces alfanuméricas (intérpretes de mandatos o interfaces de comandos) que solo presentan texto. • Interfaces gráficas de usuario (GUI, Graphics User Interfaces), las que permiten comunicarse con el ordenador de una forma muy rápida e intuitiva representando gráficamente los elementos de control y medida. • Interfaces táctiles, que representan gráficamente un "panel de control" en una pantalla sensible que permite interaccionar con el dedo de forma similar a si se accionara un control físico. • Según su construcción Pueden ser de hardware o de software: • Interfaces hardware.- Se trata de un conjunto de controles o dispositivos que permiten la interacción hombre-máquina, de modo que permiten introducir o leer datos del equipo, mediante pulsadores, reguladores e instrumentos. • Interfaces software.- Son programas o parte de ellos, que permiten expresar nuestros deseos al ordenador o visualizar su respuesta.
Interacción Persona-Ordenador (IPO) Human-Computer Interaction (HCI) o Computer-Human Interaction (CHI). • La ACM, Association for Computer Machinery (SIGCHI, Special Interest Group in Computer Human Interaction), define la Interacción Persona-Ordenador (IPO), así: “Es la disciplina relacionada con el diseño, evaluación e implementación de sistemas informáticos interactivos para el uso de seres humanos, y con el estudio de los fenómenos más importantes con los que está relacionado”.
Interacción Persona-Ordenador (IPO) • Objetivos de la IPO Los objetivos de la IPO son desarrollar o mejorar la seguridad, utilidad, efectividad, eficiencia y usabilidad de sistemas que incluyan computadoras. Cuando se dice sistemas no se refiere tan solo al hardware y al software sino también a todo el entorno.DIAPER D. “The discipline of human-computer interaction” en Interacting with computers, núm. 1, vol. 1, Butterworth-Heinemann Ltd., Guildford, Reino Unido, 1989
Para hacer sistemas interactivos hace falta: • Comprender los factores tales como psicológicos, ergonómicos, organizativos y sociales, que determinan como la gente trabaja y hace uso de los equipos de computo . • Desarrollar herramientas y técnicas que ayuden a los diseñadores a conseguir que los sistemas informáticos sean los idóneos según las actividades a las cuales se quieran aplicar. • Conseguir una interacción eficiente, efectiva y segura, tanto a nivel individual como de grupo.
La interdisciplinariedad de la IPO Para poder diseñar interfaces, además del aspecto informático, hace falta tener en cuenta otras disciplinas como:
¿Por qué estudiar la IPO? • La interfaz es una parte muy importante del éxito o fracaso de una aplicación • La interfaz constituye entre el 47% y el 60% de las líneas de código (McIntyre, 90) • Un 48% del código de la aplicación está dedicado al desarrollo de la interfaz (Myers, 92) • Los ordenadores son cada vez más utilizados por gente menos preparada • Actualmente más del 70% del esfuerzo de desarrollo de las aplicaciones interactivas está dedicado a la interfaz (Gartner Group)
Usabilidad • La usabilidad (del inglés usability) es la facilidad con que las personas pueden utilizar una herramienta particular o cualquier otro objeto fabricado por humanos con el fin de alcanzar un objetivo concreto. La usabilidad también puede referirse al estudio de los principios que hay tras la eficacia percibida de un objeto. • Podemos definir la usabilidad como la medida en la cual un producto puede ser usado por usuarios específicos para conseguir objetivos específicos con efectividad, eficiencia y satisfacción en un contexto de uso especificado. • La usabilidad se refiere a la capacidad de un software de ser comprendido, aprendido, usado y ser atractivo para el usuario, en condiciones específicas de uso.
¿Por qué nos hemos de preocupar? ¿Por qué las cosas son difíciles de utilizar? El problema radica en el desarrollo del producto, en el énfasis de la tecnología en vez del usuario, la persona para la cual está hecho el dispositivo (Donald Norman, The invisible computer)
Software usable • Software usable: fácil de aprender y fácil de utilizar • Fácil de utilizar: realiza la tarea para la que se usa • Fácil de aprender: permite realizar las tareas rápidamente y sin errores • Una aplicación usable es la que permite al usuario centrarse en su tarea, no en la aplicación Las interfaces se ponen en el medio. No quiero concentrar mis energías en la interfaz, me quiero concentrar en mi trabajo (Donald Norman)
Comentarios habituales • Los usuarios no necesitan mejores interfaces sino un mejor entrenamiento • La usabilidad es subjetiva, no se puede medir • El diseño de la interfaz está implícito en el diseño del software, no ha de planificarse expresamente • Si el diseñador está familiarizado con guías de estilo y principios de diseño, hará una buena interfaz • En el diseño de la interfaz no es necesario llegar hasta el diseño detallado • La usabilidad aumenta los costes de desarrollo
La usabilidad, hace referencia, a la rapidez y facilidad con que las personas llevan cabo sus tareas propias a través del uso del producto objeto de interés, idea que descansa en cuatro puntos: • Una aproximación al usuario: Usabilidad significa enfocarse en los usuarios. Para desarrollar un producto usable, se tienen que conocer, entender y trabajar con las personas que representan a los usuarios actuales o potenciales del producto. • Un amplio conocimiento del contexto de uso: Las personas utilizan los productos para incrementar su propia productividad. Un producto se considera fácil de aprender y usar en términos del tiempo que toma el usuario para llevar a cabo su objetivo, el número de pasos que tiene que realizar para ello, y el éxito que tiene en predecir la acción apropiada para llevar a cabo. Para desarrollar productos usables hay que entender los objetivos del usuario, hay que conocer los trabajos y tareas del usuario que el producto automatiza, modifica o embellece. • El producto ha de satisfacer la necesidades del usuario: Los usuarios son gente ocupada intentando llevar a cabo una tarea. Se va a relacionar usabilidad con productividad y calidad. El hardware y el software son las herramientas que ayudan a la gente ocupada a realizar su trabajo y a disfrutar de su ocio. • Son los usuarios, y no los diseñadores y los desarrolladores, los que determinan cuando un producto es fácil de usar.
¿Por qué es importante la usabilidad? El establecimiento de unos principios de diseño en ingeniería de usabilidad han tenido como consecuencia probada: • Una reducción de los costes de producción:los costes y tiempos de desarrollo totales pueden ser reducidos evitando el sobrediseño y reduciendo el número de cambios posteriores requeridos en el producto. • Reducción de los costes de mantenimiento y apoyo: los sistemas que son fáciles de usar requieren menos entrenamiento, menos soporte para el usuario y menos mantenimiento. • Reducción de los costes de uso: los sistemas que mejor se ajustan a las necesidades del usuario mejoran la productividad y la calidad de las acciones y las decisiones. Los sistemas más fáciles de utilizar reducen el esfuerzo (stress) y permiten a los trabajadores manejar una variedad más amplia de tareas. Los sistemas difíciles de usar disminuyen la salud, bienestar y motivación y pueden incrementar el absentismo. Tales sistemas suponen pérdidas en los tiempos de uso y no son explotados en su totalidad en la medida en que el usuario pierde interés en el uso de las características avanzadas del sistema, que en algunos casos podrían no utilizarse nunca. • Mejora en la calidad del producto: el diseño centrado en el usuario resulta en productos de mayor calidad de uso, más competitivos en un mercado que demanda productos de fácil uso.
Principios generales de la usabilidad Los principios generales que se pueden aplicar a un sistema interactivo para mejorar la usabilidad son: • Facilidad de aprendizaje. Que sea mínimo el tiempo necesario que se requiere desde el no conocimiento de una aplicación a su uso productivo. Reducir el tiempo necesario para ayudar en las sesiones de aprendizaje. Proporcionar ayuda a usuarios intermedios. Para que el sistema sea fácil de aprender, éste debe ser: Sintetizable, Familiar. • Consistencia. Un sistema es consistente si todos los mecanismos que se utiliza son siempre usados de la misma manera, siempre que se utilicen y sea cual sea el momento en que se haga. Recomendaciones para diseñar sistemas consistentes: Seguir guías de estilo siempre que sea posible. Diseñar con un “look & feel” común. • Flexibilidad. La flexibilidad se refiere a la multiplicidad de maneras en que el usuario y el sistema intercambian información. Los parámetros que miden la flexibilidad son: Control del usuario, Migración de tareas, Capacidad de substitución, Adaptabilidad.
Principios generales de la usabilidad • Robustez. La robustez de una interacción cubre las características para poder cumplir sus objetivos y su asesoramiento. • Recuperabilidad. Grado de facilidad que una aplicación permite al usuario corregir una acción una vez está reconocido un error. • Tiempo de respuesta. Se define generalmente como el tiempo que necesita el sistema para expresar los cambios de estado del usuario. Es importante que los tiempos de respuesta sean soportables para el usuario. • Adecuación de las tareas. Grado en que los servicios del sistema soportan todas las tareas que el usuario quiere hacer y la manera en que éstas las comprenden. • Disminución de la carga cognitiva. Esto significa que los usuarios tienen que confiar mas en los reconocimientos que en los recuerdos. Los usuarios no tienen que recordar abreviaciones y códigos muy complicados.
ELEMENTOS DE DESARROLLO DE UNA INTERFAZ DE USUARIO La interfaz de usuario media entre dos participantes: • El operador del Sistema Interactivo. • El computador (Hardware y Software) que implementa el Sistema Interactivo. Cada uno de ellos impone requerimientos sobre el producto final así: • El operador es el que juzga la usabilidad y apropiación de la interface. • El hardware y software son las herramientas con las cuales la interface es construida.
CICLO DE DESARROLLODE UNA INTERFAZ El ciclo de desarrollo de una interface es un proceso que envuelve los siguientes pasos: • Definición de Requerimientos: Formulación de un concepto formal o semiformal del problema a ser solucionado. Especifica las propiedades y servicios que el sistema debe satisfacer para un ambiente específico. Incluye aspectos relacionados con lo que necesita el operador al final del sistema. Se define el problema que se va a solucionar con el diseño de la interfaz. • Especificaciones: este paso tiene un nivel alto de diseño funcional y un diseño interno. Es necesario tener en cuenta aspectos como: estructuras de datos, algoritmos, módulos, lenguaje de programación.
CICLO DE DESARROLLODE UNA INTERFAZ • Implementación: es la expresión de una especificación interna en términos de un set de lenguajes y herramientas de programación. Es la realización de la interfaz como tal. • Testeo: envuelve módulos y testeo, es decir pruebas de verificación del funcionamiento del sistema y/o de la interfaz. • Instalación: es la puesta del sistema, software o interfaz en producción o funcionamiento. Para esto también se deben considerar manuales de instalación y de funcionamiento (Manuales de usuario). • Mantenimiento: esencialmente envuelve el hacer cambios y modificaciones sobre los efectos de la interfaz o el sistema, con el fin de corregir fallas o ausencia de procesos y tareas que el usuario requiere.
METODO DE DISEÑO DE UNA INTERFAZ El método de diseño de una interfaz se puede resumir en el siguiente diagrama: • Definición del Problema:En esta etapa se define el problema que se quiere resolver con la interfaz de usuario o con la aplicación que se va a diseñar. • Modelo de Operador: En esta etapa se definen los posibles usuarios u operadores del sistema, aplicación o interfaz. • Ejecución de las tareas de análisis: En esta etapa se plantea específicamente las tareas y análisis a ser desarrollados o a ejecutar. • Definición de Objetos y Funciones Computacionales:Definir los objetos y funciones del computador que corresponden con el dominio de tareas. En esta etapa se analizan que objetos específicos o explícitos se requieren en la Interfaz. • Definición de la Interfaz de Usuario: en esta etapa se diseña la apariencia y comportamiento de la interfaz de usuario que en últimas se pondrá a disposición de los usuarios. • Evaluación del Diseño: Esta etapa se hace permanentemente es decir que se realiza paulatinamente con el desarrollo de las otras etapas y por esta razón todas las etapas están relacionadas con la evaluación. Su finalidad es evaluar el diseño para detectar errores o cambios que sea necesario realizar.
Principios para el diseño de sistemas interactivos: Conocer al usuario Minimizar la memorización, sustituyendo la entrada de datos por la selección de ítems, usando nombres en lugar de números, asegurándose un comportamiento predecible y proveyendo acceso rápido a información práctica del sistema. Optimizar las operaciones mediante la rápida ejecución de operaciones comunes, la consistencia de la interfaz y organizando y reorganizando la estructura de la información basándose en la observación del uso del sistema. Facilitar buenos mensajes de error, crear diseños que eviten los errores más comunes, haciendo posible deshacer acciones realizadas y garantizar la integridad del sistema en caso de un fallo de software o hardware.
Que es la Programación: • Se conoce como programación a la implementación de un algoritmo en un determinado lenguaje de programación, conformando un programa. • Programar o escribir en algún lenguaje de programación (gráfico o consola) la solución de un problema o las acciones que queremos que realice un computador a la petición o acción de un usuario. Que se necesita para programar? LOGICA! y Ganas
Para que sirve programar? • Una persona piensa y se comporta obedeciendo a una secuencia lógica. Un computador realiza tareas y maneja datos en memoria obedeciendo a una secuencia de pasos lógicos para lo cual ha sido programado. • La programación de computadoras es la ciencia que permite a una persona programar una computadora para que resuelva tareas de manera rápida. Un Programa de computadora se puede definir como una secuencia de instrucciones que indica las acciones o tareas que han de ejecutarse para dar solución a un problema determinado. • Programar computadoras es indispensable en cualquier área de la ingeniería, ya que diferentes problemas que se puedan presentar tardan tiempo resolverlos de manera manual. La computadora resuelve problemas de acuerdo como se le haya programado de manera rápida.
Porque es divertido programar: • Tenemos la enorme alegría de crear las cosas. • Sentimos el placer de hacer las cosas, que sean útiles para otras personas. • La pasión de resolver las rompecabezas con mover, probar piezas hasta que queden. • Disfrutamos que siempre aprendemos cosas nuevas.
Lenguajes de Programación Se puede definir un lenguaje de programación como un conjunto de reglas ó normas, símbolos y palabras especiales utilizadas para construir un programa y con él, darle solución a un problema determinado. • Lenguaje de Máquina: Las primeras computadoras se programaban en código de máquina. Eran diseñados en código binario. Difíciles de leer, difíciles de entender y por su puesto difíciles de corregir. • Lenguajes de Bajo Nivel: Para dar solución a lo difícil que era programar en código máquina, se desarrolló un lenguaje conocido como lenguaje ensamblador. Este lenguaje era encargado de tomar algunas palabras comunes a una persona y traducirlas al código máquina. Lo anterior facilitaría un poco la escritura de programas. • Lenguajes de Alto Nivel: Como las personas resuelven problemas y se comunican en lenguajes naturales (español, ingles, francés, etc.), se desarrollaron lenguajes de programación que estuvieran mas cerca de ésta manera de resolver problemas. Como se hace necesario traducir el programa a lenguaje de máquina, en los lenguajes de alto nivel esa operación la realiza algo que se conoce con el nombre de Compilador.
Tipos de Programación • Secuencial : Se considera programación secuencial a los programas que se diseñan con instrucciones que van unas detrás de otras. Las líneas se ejecutan una a una en secuencia. Ejemplos tales como Basic, Cobol. • Estructurada: Se considera programación estructurada a la programación que se hace por módulos. Cada módulo realiza alguna tarea específica y cuando se necesite esa tarea simplemente se hace el llamado a ese módulo independiente de que se tengan que ejecutar los demás. Ejemplos tales como: Turbo PASCAL, C, Modula, Ada. • Un programa esta estructurado si posee un único punto de entrada y sólo uno de salida, existen de "1 a n" caminos desde el principio hasta el fin del programa y por último, que todas las instrucciones son ejecutables sin que aparezcan bucles infinitos. • Orientada a Objetos: Se considera programación orientada a objetos aquellos lenguajes que permiten la utilización de objetos dentro del diseño del programa y el usuario puede pegar a cada objeto código de programa. Ejemplos de estos lenguajes se pueden mencionar el C Builder de la Borland Internacional, C++, Java, Xml entre otros.
Programación Orientada a Eventos: consiste en la ejecución de código cuando se lleva a cabo una acción sobre un control. Las porciones de código a ejecutarse no son controladas por la aplicación en si sino por el código asociado a los eventos de un control • Lógica o de lenguaje natural: son aquellos programas que se diseñan con interfaces tal que la persona o usuario puede ordenar a la máquina tareas en un lenguaje natural. Pueden interactuar como una persona pero nunca llegan a producir conocimiento. Ejemplo como Prolog (Programming Logic). Estos lenguajes se desarrollaron con base en las estructuras de sus antecesores. Recorren o navegan las bases de datos obedeciendo a reglas. • Inteligencia Artificial: Los programas de inteligencia artificial Son programas que se acercan a la inteligencia humana. Estos programas son capaces de desarrollar conocimiento. Este tipo de lenguajes trabajan similar a la mente humana.
Etapas de la Programación • Etapa de análisis: En esta etapa el programador debe entender claramente el problema. Saber que es lo que se quiere resolver. (analizar) • Etapa de Solución general: Escribir la serie de pasos que sean necesarios para dar solución al problema. Estos pasos se pueden desarrollar a través de un Diagrama de flujo (Utilizando símbolos) ó a través de un seudo lenguaje (Utilizando Lenguaje común). A lo anterior es lo que se conoce con el nombre de Algoritmo.
Etapa de prueba: Consiste en chequear el algoritmo paso a paso para estar seguro si la solución da solución verdaderamente el problema. (Prueba de escritorio). • Etapa de implementación específica: Consiste en traducir el algoritmo a un lenguaje de programación. (Codificar). • Etapa de prueba: Consiste en ejecutar el programa en un computador y revisar los datos arrojados para ver si son correctos y hacer los ajustes necesarios. (Implementar). • Etapa de uso: Consiste en instalar el programa de manera definitiva para el uso por parte del usuario.
Constructores de la Programación • Es un bloque de construcción de un lenguaje y una de las operaciones fundamentales de este. • Todo lenguaje de programación maneja estos tres constructores: • Secuencia • Decisión • Ciclos
Secuencia • Dos o más instrucciones una detrás de la otra
Decisión (Selección) • Cada vez que un programa tome una decisión, debe optar por lo menos por una dirección. • Desviación Controlada
Ciclos (repetición o Iteración) • Repetición o iteración a través de las líneas de código.
La orientación a objetos promete mejoras de amplio alcance en la forma de diseño, desarrollo y mantenimiento de aplicaciones, ofreciendo una solución a largo plazo a los problemas y preocupaciones que han existido desde el comienzo en el desarrollo de aplicaciones • Falta de capacidad de los modelos existentes. • Interrelaciones complejas. • “Mundo Real”
Elementos de un modelo de Objetos • Fundamentales: • Abstracción • Encapsulamiento • Modularidad • Jerarquía • No fundamentales: • Concurrencia • Persistencia • Tipos (tipificación)
Abstracción • Booch concluye que "Una abstracción denota las características esenciales de un objeto que lo distinguen de todos los demás tipos de objetos y proporciona así fronteras conceptuales nítidamente definidas respecto a la perspectiva del observador". • Shaw define el concepto como "una descripción simplificada o especificación de un sistema, que enfatiza algunos de los detalles o propiedades del mismo mientras suprime otros. Una buena abstracción es aquella que enfatiza detalles significativos al lector o usuario y suprime detalles que son, al menos por el momento, irrelevantes o causa de distracción".
Denota las características esenciales que distinguen a un objeto de otros tipos de objetos, definiendo precisas fronteras conceptuales, relativas al observador. • Surge del reconocimiento de similaridades entre ciertos objetos, situaciones o procesos en el mundo real. • Decide concentrarse en estas similaridades e ignorar las diferencias. • Enfatiza detalles con significado para el usuario, suprimiendo aquellos detalles que, por el momento, son irrelevantes o distraen de lo esencial. • Deben seguir el "principio de mínimo compromiso", que significa que la interface de un objeto provee su comportamiento esencial, y nada más que eso. Pero también el "principio de mínimo asombro": capturar el comportamiento sin ofrecer sorpresas o efectos laterales.
Encapsulamiento • Encapsular significa agrupar y manejar el grupo resultante como tal, y no cada parte a su vez. • Booch concluye que "El encapsulamiento es el proceso de almacenar en un mismo compartimiento los elementos de una abstracción que constituye su estructura y su comportamiento; sirve para separar el interfaz contractual de una abstracción y su implantación". • un concepto que muchas veces se señala como equivalente es el de ocultamiento de la información, el cual está más relacionado con el control del acceso a las partes de una abstracción. Es decir, está relacionado con protección.
Es el proceso de compartimentalización de los elementos de una abstracción que constituyen su estructura y comportamiento. La encapsulación sirve para separar la interface de una abstracción y su implementación. • Es un concepto complementario al de abstracción. • La encapsulación esconde la implementación del objeto que no contribuye a sus características esenciales. • La encapsulación da lugar a que las clases se dividan en dos partes: • Interface: captura la visión externa de una clase, abarcando la abstracción del comportamiento común a los ejemplos de esa clase. • Implementación: comprende la representación de la abstracción, así como los mecanismos que conducen al comportamiento deseado. • Se conoce también como ocultamiento o privacidad de la información.
Modularidad • La complejidad de un programa crece en forma exponencial con respecto a su tamaño. Analizando un poco más las propiedades de una función exponencial es fácil deducir que si se tiene un programa grande, su complejidad será mucho mayor que la suma de la complejidad de varios programas más pequeños que cumplan el mismo objetivo.
Myers, "El acto de fragmentar un programa en componentes individuales puede reducir su complejidad en algún grado... Aunque la fragmentación de programas es útil por esta razón, una justificación más poderosa para esta fragmentación es que crea una serie de fronteras bien definidas y documentadas dentro del programa. Estas fronteras o interfaces, tienen un incalculable valor cara a la comprensión del programa.". • Booch define que "La modularidad es la propiedad que tiene un sistema que ha sido descompuesto en un conjunto de módulos cohesivos y débilmente acoplados".
Es la propiedad que tiene un sistema que ha sido descompuesto en un conjunto de módulos cohesivos y vagamente conexos. • Cada módulo se puede compilar separadamente, aunque tengan conexiones con otros módulos. • En un diseño estructural, modularización comprende el agrupamiento significativo de subprogramas. En diseño orientado a objetos, la modularización debe ceñirse a la estructura lógica elegida en el proceso de diseño. • Dividir un programa en componentes individualizados reduce en alguna manera su complejidad. • C++ Se separan los módulos interface de los módulos con implementación, estando los primeros en ficheros con extensión .h llamados header files, mientras que los segundos se almacenan en ficheros con extensión .c, .cc, .cp o .cpp. La dependencia entre ficheros se realiza a través de la macro #include.
Jerarquía • El ser humano siempre tiende a clasificar los objetos que lo rodean, creando clasificaciones de especies, de elementos químicos, de materiales, etc. Esas clasificaciones forman jerarquías que permiten concentrarse en subconjuntos de elementos lo que facilita el estudio de los elementos como un todo. • Booch define que "La jerarquía es una clasificación u ordenación de abstracciones". Las dos más importantes jerarquías en un sistema complejo son su estructura de clases (la jerarquía de Clases) y su estructura de objetos (la jerarquía de partes).
Es una clasificación u ordenación de las abstracciones. • Por jerarquía denotamos el orden de relación que se produce entre abstracciones diferentes. • Los tipos de jerarquía más útiles: • Herencia (generalización/especialización, padre/hijo, jerarquía del tipo "es un"...). Una clase (subclase) comparte la estructura o comportamiento definido en otra clase, llamada superclase. • Herencia múltiple Una clase comparte la estructura o comportamiento de varias superclases. • Agregación Comprende relaciones del tipo "es parte de" al realizar una descomposición.