Aspectos Básicos de Diseño

Slides:



Advertisements
Presentaciones similares
Daniel Correa Botero José López Vélez Universidad de Antioquia 2013-II.
Advertisements

Diagrama de Clases.
Sistemas de Información Enfoques para la Construcción de los Sistemas de Información MBA Luis Elissondo.
Unified Modeling Language (UML) Unified Modeling Language (UML) Lenguaje Unificado de Modelado ConceptosBásicos.
Diagrama de Clases SPI 2016.
Diseño (Diagrama de Clases) Francisco Valdés Souto 2 al 6 de marzo 2009 © Avantare Consultores S. A. de C. V. – Derechos.
Ingeniería del Software Diseñó de Software Universidad de los Andes Demián Gutierrez Abril 2009.
Traducción dirigida por la Sintaxis Teoría de Autómatas y Lenguajes Formales Alma María Pisabarro, 2007.
Análisis de Proyecto de Software.
Herencia Multiple en Java
INGENIERÍA DE INFORMACIÓN Y APLICACIONES
Unidad Didáctica 11 Reutilización Versión 1.0.0
Ingreso , proceso y salida de datos
El Lenguaje de Modelación Unificado
Paul Leger Casos de Usos Paul Leger
Convenciones de nomenclatura y diseño
Programación Avanzada
Flujo de trabajo: Requerimientos
Herencia y Clases Abstractas
Herencia Implementación en Java.
Programación Orientada a Objetos
Gestión de Software Conferencia # 2 Niveles de PSP: PSP0.1.
“POLIMORFISMO PARAMETRICO”
Fundamentos de la programación orientada a objetos
“Análisis de la Situación Actual de la
Patrones de Diseño Agustín J. González ElO329.
Patrones de Diseño Agustín J. González ElO329.
Diagramas de clases Modelan la vista estática del sistema
Programación orientada a objetos
Sonia Rueda Herencia y Polimorfismo
Ingeniería de Software Somerville
INTRODUCCIÓN A UML Oscar Miguel Alonso Moreno. INTRODUCCIÓN A UML  QUE ES UML?  PARA QUE SE UTILIZA  COMPONENTES  DIAGRAMAS.
Tema 3. Lenguaje unificado de modelado UML
UNIVERSIDAD NACIONAL DE LOJA Área de la Educación, el Arte y la Comunicación Informática Educativa IV INGENIERIA DE SOFTWARE Taller de Análisis y Diseño.
Programación Orientada a Objetos I Unidad 4 Relaciones entre clases: herencia.
DIAGRAMA DE CLASES.
Metodología OOHDM Jairo Pinto Ing. sistemas.
REGRESÍON LINEAL SIMPLE
ALGORITMOS es un conjunto preescrito de instrucciones o reglas bien definidas, ordenadas y finitas que permite realizar una actividad mediante pasos.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS
Introducción a las estructuras de datos
DIAGRAMA DE CLASE.
APLICACIONES II ° Patrones De Diseño ° Esteban Omar Mora Delgado
4.2 Cumplimiento de Especificación en los Requerimientos
CC-3003 Computación II Juan Alvarez Rubio DCC, FCFM, U. de Chile
1. 2 Investigación básica vs. aplicada I. básica diseño experimental I. aplicada diseño cuasi-experimental.
Ciclo de vida del Software
Universidad Nacional de Colombia - Leguajes de Programación
DIAGRAMA DE COMPONENTES INTEGRANTES Córdova Vásquez Giovanny Escobar Alvares Calixto Gomez Quinteros Adelaida Pinto Flores Yarmila.
ANALISIS DE SISTEMAS ANALISIS ORIENTADO A OBJETOS.
Agentes que planifican. 1. Introduccion En la actualidad todas la mayoría de actividades en un empresa o compañía, como en el hogar o el medio ambiente.
UNIVERSIDAD SAN FRANCISCO DE ASÍS INGENIERÍA DE SISTEMAS DOCENTE: ING. FRANCISCO SOLORZANO UNIVERSITARIO: ALAN TORREZ LOAYZA AÑO 2018.
Identificación y Clasificación de los Componentes Reutilizables.
Identificación y Clasificación de los Componentes Reutilizables.
IPOO 2 cuatrimestre 2018 Departamento de Ciencias e Ingeniería
Diagrama de Clases Un diagrama de clases esta compuesto por los siguientes elementos: Clase: atributos, métodos y visibilidad. Relaciones: Herencia, Composición,
Diagramas de clases Modelan la vista estática del sistema
CURSO LOGICA DE SISTEMAS. Lógica Es una ciencia formal que estudia los principios de la demostración e inferencia válida. Una inferencia es una evaluación.
Base de datos simples, relaciones Cardinalidad Claves.
Patrones de Diseño Agustín J. González ElO329.
Diagramas de Interacción. Escuela de Ingeniería en Sistemas Computacionales Facultad de Ciencias Matemáticas y Físicas Universidad Estatal
PRESENTACION DE INGENIERIA ORIENTADA A OBJETOS. INTRODUCCION. ¿ Qué es UML ?. UML, por sus siglas en Ingles, Unified Modeling Languaje.(Lenguaje Unificado.
INTRODUCCIÓN A UML Oscar Miguel Alonso Moreno. INTRODUCCIÓN A UML  QUE ES UML?  PARA QUE SE UTILIZA  COMPONENTES  DIAGRAMAS.
INTRODUCCIÓN A UML.  QUE ES UML?  PARA QUE SE UTILIZA  COMPONENTES  DIAGRAMAS.
PRUEBAS DE CAJA NEGRA. -Internationa Software Testing Qualification Board (ISTQB) Internationa Software Testing Qualification Board (ISTQB) Técnica de.
Tema 5 H erencia. La herencia es una forma de reutilización de software en la que las clases se crean incorporando los datos (atributos) y el comportamiento.
Unida III: Análisis y Diseño de Sistemas Orientado a Objetos
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS
ICI 502 Procesos de Software
Luis Fernando Muñoz Pantoja Ingeniero de Sistemas Copyright 2019 Luis Fernando Muñoz Pantoja Ingeniero de Sistemas Derechos reservados UML.
Transcripción de la presentación:

Aspectos Básicos de Diseño Universidad de Chile Departamento de Ciencias de la Computación Prof.: Nancy Hitschfeld Kahler

Contenido Diseño de una buena clase Relaciones entre clases Notación UML Uso correcto de herencia Patrones de diseño Evaluación de diseños: Métricas Metodologías de diseño y programación

¿Cómo diseñar una buena clase? [Mey97] Clase conocida por su interfaz (métodos)‏ Principio de lista de compras Descripción simple y coherente (no más de una página)‏ Nombre apropiados Uso de contratos: precondiciones, post condiciones e invariantes (depuración y documentación) [Mey97] Mecanismo de excepción para situaciones anormales Una buena clase se caracteriza por lo siguiente: - está definida por su interfaz, - sus métodos no requieren un cierto orden de uso, es decir, que algunos deban ser llamados siempre antes que otros. Este principio de conoce como la lista de compras, pues cuando una persona va al supermercado, puede comenzar comprando cualquiera de los productos anotados. - la descripción de la clase y de cada uno de los métodos debe caber en una página, de lo contrario el código no es muy legible, - debe definir contratos para ayudar a la depuración del programa y la descripción de la clase. Si un contrato reclama en la precondición, el culpable es el objeto que llama a ese método o el usuario. Si un contrato se cae en una postcondición, el programador del método debe revisar el código escrito. Si el invariante tiene problemas, también le corresponde al desarrollador del sistema revisarlo. Por ello hasta es una herramienta muy útil para la depuración, pues el programa deja de funcionar donde se produce el error (el error no se propaga en el código). Metodologías de diseño y programación

Pasos a seguir: (enfoque minimal)‏ Encontrar objetos Diseñar su métodos públicos (interfaz) Definir su implementación Proceso iterativo e incremental Metodologías de diseño y programación

¿Qué puede ser un objeto ¿Qué puede ser un objeto? [Daniel Halbert y Patrick O'Brien: “Using Types and ...” ] Cosas reales o abstractas artículos, cuentas y personas pila, cola y grafo Procesos ordenar, iterador, formateador Metodologías de diseño y programación

Cómo diseñar la interfaz? Donde poner una funcionalidad? Ejemplo: inscribir un estudiante en un curso En la clase Curso? En la clase Estudiante? Crear una nueva clase Inscripción? No hay una regla clara: depende de los requerimientos de la aplicación Examinar: Reusabilidad Complejidad Aplicabilidad Conocimiento de la implementación Metodologías de diseño y programación

Reusabilidad Es útil este comportamiento en más de un contexto? Crear clase si el comportamiento puede ser reusado en varios contextos u otras clases Ejemplo: Recorrer una lista : el mismo recorrido puede ser aplicado a varias listas. (Patrón de diseño iterator)‏ Concepto de rectángulo: reusado en ventana y figuras gráficas Metodologías de diseño y programación

Aplicabilidad Qué tan relevante es un comportamiento? Desea la mayor parte de los clientes usar este comportamiento? Ejemplos: Convertir a mayúsculas como método en clase String (es solo relevante aquí) Parsing de una línea en clase aparte (no es método clásico asociado a String). En Java? Metodologías de diseño y programación

Complejidad Qué tan difícil es implementar este comportamiento? Crear una clase si el comportamiento es complejo Ejemplo: Calcular el área es simple; incluir en Rectángulo Parsing de una línea es complejo; modelar este porceso como una clase Intersección de figuras: va en mas de una clase el mismo método y es complejo; Modelar como una clase Metodologías de diseño y programación

Conocimiento de la implementación En qué grado su implementación depende del tipo al que es asignado Muy dependiente => incluirlo en clase asociada Que decidir en caso que dos criterios den resultados distintos? Usar criterio de mayor peso (depende de los requerimientos de la aplicación) Metodologías de diseño y programación

Relaciones entre clases Especialización/generalización Herencia IS-A? Parte/Todo IS-PART-OF, HAS-A? Agregación y composición Asociación Colaboración Independencia De uso Relación más débil Las relaciones entre clases más comunes son: - Especialización (o generalización). Esta relación se conoce como "Is a", dado que los objetos de la subclase son también objetos de la superclase. -Parte/Todo: el objeto descrito por la clase esta compuesto de objetos definidos por otras clases. -Asociación: Denota una dependencia semántica entre las clases. Las objetos existen independientemente y colaboran para lograr un objetivo común. -De Uso: Es cuando un objeto es cliente de otro. Por ejemplo lo usa para calcular ciertos valores. Metodologías de diseño y programación

Relaciones entre clases (2)‏ Ejemplo: Una rosa es una flor Existen rosas de diferentes colores Una flor se compone de pétalos, aroma, etc. Las abejas usan el néctar de las flores para alimentarse Las abejas ayudan a polinizar las flores El clavel es otra flor Metodologías de diseño y programación

Relaciones entre clases (3)‏ El diagrama representa las siguiente relaciones: - Una rosa "es una" flor, por lo tanto rosa es más especializada que flor. - Pétalo no es un tipo de flor, pero si es parte de una flor - Abejas y flores cooperan entre si Metodologías de diseño y programación

Relaciones entre clases (4)‏ Diferencia entre composición y agregación Composición: tiempo de vida de la variable de instancia está ligada a la del objeto que la contiene Agregación: tiempo de vida de la variable de instancia es independiente del objeto que la contiene. Metodologías de diseño y programación

Relaciones entre clases (5)‏ - Relación de uso: - Implementación de una interfaz - Asociación dirigida Metodologías de diseño y programación

¿Cuándo usar herencia? [Alb87] Subtipos ( forma natural: subconjuntos) ¿Por qué? El objeto heredado válido en el contexto de clase padre El objeto heredado redefine métodos y/o agrega nuevos Problemas en caso contrario: Malos diseños Falsas expectativas Metodologías de diseño y programación

¿Cuándo usar herencia?(2)‏ Especialización subclases subconjuntos de clase padre Implementación misma interfaz, distinta implementación Combinación subclase subconjunto de dos o más clases Metodologías de diseño y programación

¿Cuándo usar herencia?(3)‏ Metodologías de diseño y programación

¿Cuándo NO usar herencia? Generalización: subclase generalización de clase padre Varianza: subclase hermano de clase padre Errores comunes: Heredar de partes Heredar privadamente (C++). Alternativa: agregación o composición Metodologías de diseño y programación