1 / 51

Problema

Problemas y Programas. Problema. Programa. DATOS ACCIONES. abstracción. Programas y Lenguajes. Un programa es un modelo de la resolución de un problema. Un lenguaje de programación es una notación formal para especificar un modelo para la resolución de un problema.

alena
Download Presentation

Problema

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Problemas y Programas Problema Programa DATOS ACCIONES abstracción

  2. Programas y Lenguajes Un programa es un modelo de la resolución de un problema Un lenguaje de programación es una notación formal para especificar un modelo para la resolución de un problema Introducción a la Programación Orientada a Objetos

  3. Software y Desarrollo de Software El software es el conjunto de programas que permiten que los dispositivos físicos de una computadora puedan ser utilizados, junto con la documentación que acompaña al código. El desarrollo de software es un proceso a partir del cual se construye un modelo de la resolución de un problema Introducción a la Programación Orientada a Objetos

  4. El proceso de desarrollo de software Todo sistema de software tiene un ciclo de vida durante el cual atraviesa diferentes etapas. El desarrollo en cascada propone una secuencia específica de etapas para abarcar el proceso de desarrollo de software. El producto final de este proceso es un sistema de software que resuelve el problema planteado por la especificación de requerimientos. Introducción a la Programación Orientada a Objetos

  5. El proceso de desarrollo de software Estudio de Factibilidad D O C U M E N T A C I O N Desarrollo de Requerimientos Análisis y Diseño del Sistema Implementación Verificación Mantenimiento Introducción a la Programación Orientada a Objetos

  6. El proceso de desarrollo de software Estudio de Factibilidad D O C U M E N T A C I O N Un sistema de software se desarrolla para satisfacer una demanda. La funcionalidad del sistema se especifica a partir de un conjunto de requerimientos. El éxito de un sistema puede medirse en parte de acuerdo a en qué medida los requerimientos establecidos reflejan la demanda real. El resultado de esta fase es un documento que especifica qué hará el sistema y sirve de punto de partida para la documentación. Desarrollo de Requerimientos Análisis y Diseño del Sistema Implementación Verificación Mantenimiento Introducción a la Programación Orientada a Objetos

  7. El proceso de desarrollo de software Estudio de Factibilidad D O C U M E N T A C I O N A partir los requerimientos especificados se diseña una solución. El resultado de esta etapa es un documento que describe los módulos que integrarán el sistema, sus interfaces y el modo en que se relacionan entre sí, los casos de prueba. Existen diferentes herramientas y metodologías para encarar esta etapa y la elección de una de ellas tendrá un fuerte impacto en la elección del lenguaje de programación. Desarrollo de Requerimientos Análisis y Diseño del Sistema Implementación Verificación Mantenimiento Introducción a la Programación Orientada a Objetos

  8. El proceso de desarrollo de software Estudio de Factibilidad D O C U M E N T A C I O N A partir del diseño se genera el programa escrito en un lenguaje de programación y toda la documentación referida al código. El programa implementado se instala para ser verificado. Desarrollo de Requerimientos Análisis y Diseño del Sistema Implementación Verificación Mantenimiento Introducción a la Programación Orientada a Objetos

  9. El proceso de desarrollo de software Estudio de Factibilidad D O C U M E N T A C I O N Se valida la implementación respecto a la especificación de requerimientos. Existen distintas etapas en la verificación y diferentes formas de hacerlo, algunas informales y otras formales. Los casos de prueba deberían ser diseñados cuidadosamente. Una vez verificada la implementación se instala el sistema para su puesta en marcha. Desarrollo de Requerimientos Análisis y Diseño del Sistema Implementación Verificación Mantenimiento Introducción a la Programación Orientada a Objetos

  10. El proceso de desarrollo de software Estudio de Factibilidad D O C U M E N T A C I O N Durante el ciclo de vida de un programa las necesidades del usuario cambian y normalmente crecen. El mantenimiento involucra todos los cambios en el software que resultan de modificaciones en la especificación. Desarrollo de Requerimientos Análisis y Diseño del Sistema Implementación Verificación Mantenimiento Introducción a la Programación Orientada a Objetos

  11. Programación Orientada a Objetos • La programación orientada a objetos brinda un principio y una metodología que apoya al proceso de desarrollo de software en todas sus etapas. • Un lenguaje de programación orientado a objetos brinda mecanismos que permiten la aplicación de la metodología y contribuyan a favorecer la calidad y productividad. • La metodología sigue siendo dividir para conquistar, pero cambia el modo de dividir.

  12. Programación Orientada a Objetos El modelo computacional propuesto por la programación orientada a objetos es un mundo poblado de objetos comunicándose a través de mensajes. El modelo computacional

  13. Un objeto es una entidad, física o conceptual, que debe ser modelada a través de sus propiedades y su comportamiento. Las propiedades pueden caracterizarse a través de un conjunto de atributos. El comportamiento queda determinado por un conjunto de servicios que el objeto puede brindar y un conjunto de responsabilidades que debe cumplir. El concepto de Objeto

  14. Cada objeto del problema en ejecución quedará asociado a un objeto de software. Un objeto de software es un modelo, una representación abstracta del objeto real. Un objeto de software tiene una identidad, un conjunto de servicios y un estado interno. El concepto de Objeto

  15. La palabra objeto se utiliza entonces para referirse a: • Los objetos del problema, es decir, las entidades identificadas en la etapa de Análisis y Diseño. • Los objetos de software, esto es, las instancias que modelan en ejecución a las entidades del problema. El concepto de Objeto

  16. Objetos del problema El concepto de Objeto Comportamiento Propiedades Objetos de software Atributos Servicios

  17. El concepto de Clase Los objetos del problema pueden agruparse en clases de acuerdo a sus propiedades y comportamiento. Todos los objetos de una misma clase van a estar caracterizados por las mismas propiedades y brindan los mismos servicios.

  18. El concepto de Clase Desde el punto de vista del diseño, una clase es un patrón que establece los atributos, los servicios que brindan los objetos que son instancias de esa clase y las responsabilidades respecto al resto de las clases que conforman el sistema. En la implementación una clase es un módulo de software que puede construirse y verificarse con cierta independencia respecto a los demás. Una clase puede pensarse como un tipo de dato a partir del cual es posible crear objetos.

  19. Un lenguaje de modelado es una herramienta que permite modelar las partes esenciales de un sistema de software. Un diagrama de clases permite especificar la estructura de un programa en función de las clases que lo componen. El concepto de Clase Diseño de una clase

  20. El concepto de Clase Diagrama de clases Se pueden agregar notas o comentarios que describan restricciones o la funcionalidad.

  21. El nombre de una clase representa la abstracción del conjunto de instancias. Un atributoes una propiedad o cualidad relevante que caracteriza a todos los objetos de una clase. Un servicio es una operación que todas las instancias de una clase pueden realizar. Una responsabilidad representa un compromiso para la clase o un requerimiento. El concepto de Clase Diagrama de clases

  22. La presión arteriales la fuerza de presiónejercidapor la sangrecirculantesobrelasarterias y constituyeuno de los principalessignosvitalesde un paciente. Se midepormedio de un esfigmomanómetro, queusa la altura de unacolumna de mercurio para reflejar la presión de circulación. Los valores de la presiónsanguínea se expresan en kilopascales (kPa) o en milímetros del mercurio (mmHg). Para convertir de milímetro de mercurio a kilopascales el valor se multiplicapor 0,13. Caso de Estudio: Medición de la presión arterial Especificación de Requerimientos

  23. Caso de Estudio: Medición de la presión arterial La presiónsistólica  se define como el máximo de la curva de presión en lasarterias y ocurrecerca del principio del ciclocardíacodurante la sístole o contracción ventricular; la presióndiastólicaes el valor mínimo de la curva de presión en la fase de diástole o relajación ventricular del ciclocardíaco. La presión de pulsorefleja la diferencia entre laspresionesmáxima y mínimamedidas. Especificación de Requerimientos

  24. Estasmedidas de presión no son estáticas, experimentanvariacionesnaturales entre un latido del corazón a otro y a través del día y tienengrandesvariaciones de un individuo a otro. Lahipertensión se refiere a la presiónsanguíneaqueesanormalmentealta, y se puedeestablecer un umbral para la máxima y otro para la mínimaquepermitanconsiderarunasituación de alarma. Caso de Estudio: Medición de la presión arterial Especificación de Requerimientos

  25. PresionArterial Caso de Estudio: Medición de la presión arterial <<atributos de clase>> umbralMax,umbralMin :entero <<atributos de instancia>> maxima,minima :entero El diseñador decidió que de cada medición se representarán dos atributos: máxima y la mínima. En la caracterización interesa también conocer el pulso, pero el diseñador resolvió que este valor no se mantenga como un atributo, sino que se calcule como la diferencia entre la máxima y la mínima. Diagrama de clases: Atributos requiere ma > mi pulso: máxima-mínima valores representados en milímetros de mercurio alarmaHipertensión: maxima>umbralMax o minima>umbralMin mini

  26. Caso de Estudio: Medición de la presión arterial PresionArterial <<Constructores>>PresionArterial(ma,mi:entero) requiere ma > mi El constructor tiene siempre el mismo nombre que la clase. Es un servicio que se usa cuando se crea un objeto de la clase. Diagrama de clases: Constructores requiere ma > mi pulso: máxima-mínima valores representados en milímetros de mercurio alarmaHipertensión: maxima>umbralMax o minima>umbralMin mini

  27. Caso de Estudio: Medición de la presión arterial PresionArterial <<Consultas>> obtenerUmbralMax():enteroobtenerUmbralMin():entero obtenerMaxima():entero obtenerMinima():entero Diagrama de clases: Consultas Cada consulta retorna un resultado. En este caso cada consulta retorna el valor de un atributo. requiere ma > mi pulso: máxima-mínima valores representados en milímetros de mercurio alarmaHipertensión: maxima>umbralMax o minima>umbralMin mini

  28. Caso de Estudio: Medición de la presión arterial PresionArterial pulso: máxima-mínima valores representados en milímetros de mercurio <<Consultas>> obtenerMaximaHP():real obtenerMinimaHP().realobtenerPulso():entero alarmaHipertension():boolean alarmaHipertensión: maxima>umbralMax o minima>umbralMin Diagrama de clases: Consultas La clase brinda métodos que computan un valor a partir de los valores de los atributos. requiere ma > mi pulso: máxima-mínima valores representados en milímetros de mercurio alarmaHipertensión: maxima>umbralMax o minima>umbralMin mini

  29. Caso de Estudio: Medición de la presión arterial PresionArterial Requiere máxima > mínima y ambos mayores a 0. Los valores están expresados en milímetros de mercurio. Diagrama de clases: Responsabilidades requiere ma > mi pulso: máxima-mínima valores representados en milímetros de mercurio alarmaHipertensión: maxima>umbralMax o minima>umbralMin mini

  30. PresionArterial <<atributos de clase>> umbralMax,umbralMin :entero <<atributos de instancia>> maxima,minima :entero Caso de Estudio: Medición de la presión arterial <<Constructores>>PresionArterial(ma,mi:entero) <<Consultas>> obtenerUmbralMax():enteroobtenerUmbralMin():entero obtenerMaxima():entero obtenerMinima():entero obtenerMaximaHP():real obtenerMinimaHP().realobtenerPulso():entero alarmaHipertension():boolean requiere ma > mi pulso: máxima-mínima valores representados en milímetros de mercurio alarmaHipertensión: maxima>umbralMax o minima>umbralMin Requiere máxima > mínima y ambos mayores a 0. Los valores están expresados en milímetros de mercurio. requiere ma > mi pulso: máxima-mínima valores representados en milímetros de mercurio alarmaHipertensión: maxima>umbralMax o minima>umbralMin mini

  31. PresionArterial Caso de Estudio: Medición de la presión arterial classPresionArterial { … } La palabra reservada class está seguida por el nombre de la clase. Las llaves delimitan el código de la clase, existen otros delimitadores como los corchetes y los paréntesis. Implementación en Java

  32. PresionArterial Caso de Estudio: Medición de la presión arterial class PresionArterial { … } Java es libre de la línea y sensible a las minúsculas y mayúsculas. Adoptamos algunas convenciones para favorecer la legibilidad. Implementación en Java

  33. PresionArterial Caso de Estudio: Medición de la presión arterial classPresionArterial { /*Valores representados el milímetros de mercurio*/ //Atributos de clase … //Atributos de instancia … } Implementación en Java El símbolo // precede a un comentario de una línea. Los símbolos /* */ delimitan a un comentario de varias líneas. Los comentarios del diagrama se retienen en el código.

  34. PresionArterial Caso de Estudio: Medición de la presión arterial <<atributos de clase>> umbralMax,umbralMin :entero /*Valores representados el milímetros de mercurio*/ //Atributos de clase privatestatic final intumbralMax=120; privatestatic final intumbralMin=80; Implementación en Java El umbral máximo y mínimo es el mismo para todas las mediciones de presión. Los atributos de clase representan justamente estos valores constantes.

  35. PresionArterial Caso de Estudio: Medición de la presión arterial <<atributos de clase>> umbralMax,umbralMin :entero /*Valores representados el milímetros de mercurio*/ //Atributos de clase privatestatic final intumbralMax=120; privatestatic final intumbralMin=80; Implementación en Java • El modificador static establece que todas las instancias de la clase PresionArteriral comparten el mismo valor para cada umbral. • El modificador final indica que se trata de valores constantes, establecidos en la declaración.

  36. PresionArterial Caso de Estudio: Medición de la presión arterial <<atributos de instancia>> maxima,minima :entero //Atributos de instancia privateintmaxima; privateintminima; Implementación en Java De cada medición se registra dos valores de tipo elemental int. Los atributos de instancia representan justamente estos valores variables. El símbolo ; termina cada instrucción

  37. Implementación en Java PresionArterial Caso de Estudio: Medición de la presión arterial <<Constructor>>PresionArterial(ma,mi:entero) //Constructor publicPresionArterial(intma,int mi){ //Requiere ma > mi maxima = ma; minima = mi; } El constructor se invoca en el momento que se registra una medición. El valor de cada atributo de instancia se inicializa con un parámetro.

  38. PresionArterial Caso de Estudio: Medición de la presión arterial <<Consultas>> obtenerUmbralMax():entero //Consultas publicintobtenerUmbralMax(){ returnumbralMax; } Implementación en Java Toda consulta incluye una instrucción return seguida de una expresión de tipo compatible con el resultado.

  39. PresionArterial Caso de Estudio: Medición de la presión arterial <<Consultas>> obtenerUmbralMin():entero publicintobtenerUmbralMin(){ returnumbralMin; } Implementación en Java Los atributos no son visibles desde el exterior de la clase. Para acceder a cada atributo definimos una consulta.

  40. PresionArterial Caso de Estudio: Medición de la presión arterial <<Consultas>> obtenerMaxima():real obtenerMinima().real publicintobtenerMaxima(){ returnmaxima; } publicintobtenerMinima(){ returnminima; } Implementación en Java Adoptamos la convención de nombrar a estos servicios con la palabra obtener seguida del nombre del atributo.

  41. PresionArterial Caso de Estudio: Medición de la presión arterial <<Consultas>> obtenerMaximaHP():real obtenerMinimaHP().real publicdoubleobtenerMaximaHP(){ //Convierte a hectopascales returnmaxima*0.13; } Implementación en Java La expresión recibe un operando entero y uno real, de modo que convierte el primero y computa un real. Este valor a su vez se convierte automáticamente a tipo double porque es el tipo del resultado.

  42. PresionArterial Caso de Estudio: Medición de la presión arterial <<Consultas>> obtenerMaximaHP():real obtenerMinimaHP().real publicdoubleobtenerMinimaHP(){ //Convierte a hectopascales returnminima*0.13; } Implementación en Java Adoptamos la convención de nombrar a los servicios con un identificador en minúscula, salvo si concatena a dos o más palabras.

  43. PresionArterial Caso de Estudio: Medición de la presión arterial obtenerPulso():entero publicintobtenerPulso(){ returnmaxima-minima; } El diseñador decidió no mantener un atributo para el pulso, sino que el valor se calcula como la diferencia entre la máxima y la mínima. Las clases que usan a PresionArterial acceden de manera uniforme al pulso, el valor máximo y el valor mínimo,representado en dos unidades de medida. Implementación en Java

  44. PresionArterial Caso de Estudio: Medición de la presión arterial alarmaHipertension():boolean publicbooleanalarmaHipertension(){ returnmaxima > umbralMax || minima > umbralMin; } Cuando la ejecución de la consulta termine retorna como resultado un valor booleano que resulta de evaluar la expresión. El operador || denota disyución con cortocircuito, si la primera subexpresión computa true, no se computa la segunda. Implementación en Java

  45. PresionArterial Caso de Estudio: Medición de la presión arterial alarmaHipertension():boolean publicbooleanalarmaHipertension(){ boolean b=maxima>umbralMax|| minima>umbralMin; return b; } Implementación en Java Esta versión, equivalente a la anterior, utiliza una variable local booleana para retener el valor de la expresión computada. La consulta retorna el valor de la variable.

  46. PresionArterial Caso de Estudio: Medición de la presión arterial alarmaHipertension():boolean publicbooleanalarmaHipertension(){ booleanb if (maxima>umbralMax|| minima>umbralMin) b=true; else b = false; return b; } Implementación en Java

  47. classtestPresion { publicstaticvoidmain (String a[]){ PresionArterial med1; PresionArterial med2; med1 = new PresionArterial (115,60); med2 = new PresionArterial (110,62); int p1 = med1.obtenerPulso(); int p2 = med2.obtenerPulso(); System.out.println("Primera medición pulso "+p1); System.out.println("Segunda medición pulso "+p2); } } Caso de Estudio: Medición de la presión arterial

  48. La ejecución del programa va a comenzar con la ejecución del método main. Las instrucciones: PresionArterial med1; PresionArterial med2; Declaran dos variables de clasePresionArterial y son equivalentes a: PresionArterial med1,med2; Caso de Estudio: Medición de la presión arterial

  49. Las instrucciones: med1 = new PresionArterial (115,60); med2 = new PresionArterial (110,62); Crean dos objetos, cada uno de los cuales queda ligado a una variable. Caso de Estudio: Medición de la presión arterial

  50. La instrucción: int p1 = med1.obtenerPulso(); envía el mensaje obtenerPulso() al objeto ligado a la variable med1. El mensaje provoca la ejecución del método provisto por la clase y retorna un valor de tipo int que se asigna a la variable p1. Caso de Estudio: Medición de la presión arterial

More Related