problema abstracción datos acciones problemas y programas programa

51
Problema abstracc ión DATOS ACCIONES Problemas y Programas Programa

Upload: nazario-leanos

Post on 22-Jan-2015

2 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Problema abstracción DATOS ACCIONES Problemas y Programas Programa

Problema

abstracción

DATOS

ACCIONES

Problemas y Programas

Programa

Page 2: Problema abstracción DATOS ACCIONES Problemas y Programas Programa

Introducción a la Programación Orientada a Objetos

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

Programas y Lenguajes

Page 3: Problema abstracción DATOS ACCIONES Problemas y Programas Programa

Introducción a la Programación Orientada a Objetos

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ónde un problema

Software y Desarrollo de Software

Page 4: Problema abstracción DATOS ACCIONES Problemas y Programas Programa

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

El proceso de desarrollo de software

Page 5: Problema abstracción DATOS ACCIONES Problemas y Programas Programa

Estudio de Factibilidad

Desarrollo de Requerimientos

Análisis y Diseño del Sistema

Implementación

Verificación

Mantenimiento

DOCUMENTACION

Introducción a la Programación Orientada a Objetos

El proceso de desarrollo de software

Page 6: Problema abstracción DATOS ACCIONES Problemas y Programas Programa

Estudio de Factibilidad

Desarrollo de Requerimientos

Análisis y Diseño del Sistema

Implementación

Verificación

Mantenimiento

DOCUMENTACION

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.

Introducción a la Programación Orientada a Objetos

El proceso de desarrollo de software

Page 7: Problema abstracción DATOS ACCIONES Problemas y Programas Programa

Desarrollo de Requerimientos

Análisis y Diseño del Sistema

Implementación

Verificación

Mantenimiento

DOCUMENTACION

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.

Introducción a la Programación Orientada a Objetos

El proceso de desarrollo de software

Estudio de Factibilidad

Page 8: Problema abstracción DATOS ACCIONES Problemas y Programas Programa

Estudio de Factibilidad

Desarrollo de Requerimientos

Análisis y Diseño del Sistema

Implementación

Verificación

Mantenimiento

DOCUMENTACION

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.

Introducción a la Programación Orientada a Objetos

El proceso de desarrollo de software

Page 9: Problema abstracción DATOS ACCIONES Problemas y Programas Programa

Estudio de Factibilidad

Desarrollo de Requerimientos

Análisis y Diseño del Sistema

Implementación

Verificación

Mantenimiento

DOCUMENTACION

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.

Introducción a la Programación Orientada a Objetos

El proceso de desarrollo de software

Page 10: Problema abstracción DATOS ACCIONES Problemas y Programas Programa

Estudio de Factibilidad

Desarrollo de Requerimientos

Análisis y Diseño del Sistema

Implementación

Verificación

Mantenimiento

DOCUMENTACION

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.

Introducción a la Programación Orientada a Objetos

El proceso de desarrollo de software

Page 11: Problema abstracción DATOS ACCIONES Problemas y Programas Programa

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.

Programación Orientada a Objetos

Page 12: Problema abstracción DATOS ACCIONES Problemas y Programas Programa

El modelo computacional

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

Programación Orientada a Objetos

Page 13: Problema abstracción DATOS ACCIONES Problemas y Programas Programa

El concepto de Objeto

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.

Page 14: Problema abstracción DATOS ACCIONES Problemas y Programas Programa

El concepto de Objeto

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.

Page 15: Problema abstracción DATOS ACCIONES Problemas y Programas Programa

El concepto de Objeto

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.

Page 16: Problema abstracción DATOS ACCIONES Problemas y Programas Programa

El concepto de Objeto

Objetos de software

Objetos del problema

Propiedades

Atributos

Comportamiento

Servicios

Page 17: Problema abstracción DATOS ACCIONES Problemas y Programas Programa

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.

El concepto de Clase

Page 18: Problema abstracción DATOS ACCIONES Problemas y Programas Programa

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.

El concepto de Clase

Page 19: Problema abstracción DATOS ACCIONES Problemas y Programas Programa

El concepto de Clase

Diseño de una clase

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.

Page 20: Problema abstracción DATOS ACCIONES Problemas y Programas Programa

El concepto de Clase

Diagrama de clases

NombreAtributos de claseAtributos de instanciaConstructoresComandosConsultasResponsabilidades

Se pueden agregar notas o comentarios que describan restricciones o la funcionalidad.

Page 21: Problema abstracción DATOS ACCIONES Problemas y Programas Programa

El concepto de Clase

Diagrama de clases

El nombre de una clase representa la abstracción del conjunto de instancias. Un atributo es 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.

Page 22: Problema abstracción DATOS ACCIONES Problemas y Programas Programa

Caso de Estudio: Medición de la presión arterial

La presión arterial es la fuerza de presión ejercida por la sangre circulante sobre las arterias y constituye uno de los principales signos vitales de un paciente. Se mide por medio de un esfigmomanómetro, que usa la altura de una columna de mercurio para reflejar la presión de circulación. Los valores de la presión sanguí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 multiplica por 0,13.

Especificación de Requerimientos

Page 23: Problema abstracción DATOS ACCIONES Problemas y Programas Programa

Caso de Estudio: Medición de la presión arterial

La presión sistólica  se define como el máximo de la curva de presión en las arterias y ocurre cerca del principio del ciclo cardíaco durante la sístole o contracción ventricular; la presión diastólica es el valor mínimo de la curva de presión en la fase de diástole o relajación ventricular del ciclo cardíaco. La presión de pulso refleja la diferencia entre las presiones máxima y mínima medidas.

Especificación de Requerimientos

Page 24: Problema abstracción DATOS ACCIONES Problemas y Programas Programa

Caso de Estudio: Medición de la presión arterial

Estas medidas de presión no son estáticas, experimentan variaciones naturales entre un latido del corazón a otro y a través del día y tienen grandes variaciones de un individuo a otro. La hipertensión se refiere a la presión sanguínea que es anormalmente alta, y se puede establecer un umbral para la máxima y otro para la mínima que permitan considerar una situación de alarma.

Especificación de Requerimientos

Page 25: Problema abstracción DATOS ACCIONES Problemas y Programas Programa

Caso de Estudio: Medición de la presión arterial

PresionArterial

<<atributos de clase>>umbralMax,umbralMin :entero<<atributos de instancia>>maxima,minima :entero

Diagrama de clases: Atributos

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.

Page 26: Problema abstracción DATOS ACCIONES Problemas y Programas Programa

Caso de Estudio: Medición de la presión arterial

requiere ma > mi <<Constructores>> PresionArterial(ma,mi:entero)

PresionArterial

Diagrama de clases: Constructores

El constructor tiene siempre el mismo nombre que la clase.Es un servicio que se usa cuando se crea un objeto de la clase.

Page 27: Problema abstracción DATOS ACCIONES Problemas y Programas Programa

Caso de Estudio: Medición de la presión arterial

<<Consultas>>obtenerUmbralMax():entero obtenerUmbralMin():enteroobtenerMaxima():enteroobtenerMinima():entero

PresionArterial

Diagrama de clases: Consultas

Cada consulta retorna un resultado.En este caso cada consulta retorna el valor de un atributo.

Page 28: Problema abstracción DATOS ACCIONES Problemas y Programas Programa

Caso de Estudio: Medición de la presión arterial

alarmaHipertensión: maxima>umbralMax o minima>umbralMin

pulso: máxima-mínimavalores representados en milímetros de mercurio

<<Consultas>>obtenerMaximaHP():realobtenerMinimaHP().real obtenerPulso():enteroalarmaHipertension():boolean

PresionArterial

Diagrama de clases: Consultas

La clase brinda métodos que computan un valor a partir de los valores de los atributos.

Page 29: Problema abstracción DATOS ACCIONES Problemas y Programas Programa

Caso de Estudio: Medición de la presión arterial

Requiere máxima > mínima y ambos mayores a 0. Los valores están expresados en milímetros de mercurio.

PresionArterial

Diagrama de clases: Responsabilidades

Page 30: Problema abstracción DATOS ACCIONES Problemas y Programas Programa

Caso de Estudio: Medición de la presión arterial

alarmaHipertensión: maxima>umbralMax o minima>umbralMin

pulso: máxima-mínimavalores representados en milímetros de mercurio

requiere ma > mi

PresionArterial

<<atributos de clase>>umbralMax,umbralMin :entero<<atributos de instancia>>maxima,minima :entero<<Constructores>> PresionArterial(ma,mi:entero)<<Consultas>>obtenerUmbralMax():entero obtenerUmbralMin():enteroobtenerMaxima():enteroobtenerMinima():enteroobtenerMaximaHP():realobtenerMinimaHP().real obtenerPulso():enteroalarmaHipertension():boolean

Requiere máxima > mínima y ambos mayores a 0. Los valores están expresados en milímetros de mercurio.

Page 31: Problema abstracción DATOS ACCIONES Problemas y Programas Programa

Caso de Estudio: Medición de la presión arterial

class PresionArterial {…}

Implementación en Java

PresionArterial

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.

Page 32: Problema abstracción DATOS ACCIONES Problemas y Programas Programa

Caso de Estudio: Medición de la presión arterial

class PresionArterial {…}

Implementación en Java

PresionArterial

Java es libre de la línea y sensible a las minúsculas y mayúsculas.Adoptamos algunas convenciones para favorecer la legibilidad.

Page 33: Problema abstracción DATOS ACCIONES Problemas y Programas Programa

Caso de Estudio: Medición de la presión arterial

class PresionArterial {/*Valores representados el milímetros de mercurio*///Atributos de clase…//Atributos de instancia…}

Implementación en Java

PresionArterial

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.

Page 34: Problema abstracción DATOS ACCIONES Problemas y Programas Programa

Caso de Estudio: Medición de la presión arterial

/*Valores representados el milímetros de mercurio*///Atributos de claseprivate static final int umbralMax=120;private static final int umbralMin=80;

Implementación en Java

PresionArterial

<<atributos de clase>>umbralMax,umbralMin :entero

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.

Page 35: Problema abstracción DATOS ACCIONES Problemas y Programas Programa

Caso de Estudio: Medición de la presión arterial

/*Valores representados el milímetros de mercurio*///Atributos de claseprivate static final int umbralMax=120;private static final int umbralMin=80;

Implementación en Java

PresionArterial

<<atributos de clase>>umbralMax,umbralMin :entero

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.

Page 36: Problema abstracción DATOS ACCIONES Problemas y Programas Programa

Caso de Estudio: Medición de la presión arterial

//Atributos de instanciaprivate int maxima;private int minima;

Implementación en Java

PresionArterial

<<atributos de instancia>>maxima,minima :entero

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

Page 37: Problema abstracción DATOS ACCIONES Problemas y Programas Programa

Caso de Estudio: Medición de la presión arterial

//Constructorpublic PresionArterial(int ma,int mi){//Requiere ma > mi maxima = ma; minima = mi;}

<<Constructor>> PresionArterial(ma,mi:entero)

Implementación en Java

PresionArterial

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.

Page 38: Problema abstracción DATOS ACCIONES Problemas y Programas Programa

Caso de Estudio: Medición de la presión arterial

//Consultaspublic int obtenerUmbralMax(){ return umbralMax;}

<<Consultas>>obtenerUmbralMax():entero

Implementación en Java

PresionArterial

Toda consulta incluye una instrucción return seguida de una expresión de tipo compatible con el resultado.

Page 39: Problema abstracción DATOS ACCIONES Problemas y Programas Programa

Caso de Estudio: Medición de la presión arterial

public int obtenerUmbralMin(){ return umbralMin;}

<<Consultas>>obtenerUmbralMin():entero

Implementación en Java

PresionArterial

Los atributos no son visibles desde el exterior de la clase. Para acceder a cada atributo definimos una consulta.

Page 40: Problema abstracción DATOS ACCIONES Problemas y Programas Programa

Caso de Estudio: Medición de la presión arterial

public int obtenerMaxima(){ return maxima;}public int obtenerMinima(){ return minima;}

<<Consultas>>obtenerMaxima():realobtenerMinima().real

Implementación en Java

PresionArterial

Adoptamos la convención de nombrar a estos servicios con la palabra obtener seguida del nombre del atributo.

Page 41: Problema abstracción DATOS ACCIONES Problemas y Programas Programa

Caso de Estudio: Medición de la presión arterial

public double obtenerMaximaHP(){//Convierte a hectopascales return maxima*0.13;}

<<Consultas>>obtenerMaximaHP():realobtenerMinimaHP().real

Implementación en Java

PresionArterial

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.

Page 42: Problema abstracción DATOS ACCIONES Problemas y Programas Programa

Caso de Estudio: Medición de la presión arterial

public double obtenerMinimaHP(){//Convierte a hectopascales return minima*0.13;}

<<Consultas>>obtenerMaximaHP():realobtenerMinimaHP().real

Implementación en Java

PresionArterial

Adoptamos la convención de nombrar a los servicios con un identificador en minúscula, salvo si concatena a dos o más palabras.

Page 43: Problema abstracción DATOS ACCIONES Problemas y Programas Programa

Caso de Estudio: Medición de la presión arterial

public int obtenerPulso(){ return maxima-minima;}

obtenerPulso():entero

Implementación en Java

PresionArterial

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.

Page 44: Problema abstracción DATOS ACCIONES Problemas y Programas Programa

Caso de Estudio: Medición de la presión arterial

public boolean alarmaHipertension(){ return maxima > umbralMax || minima > umbralMin;}

alarmaHipertension():boolean

Implementación en Java

PresionArterial

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.

Page 45: Problema abstracción DATOS ACCIONES Problemas y Programas Programa

Caso de Estudio: Medición de la presión arterial

public boolean alarmaHipertension(){ boolean b=maxima>umbralMax || minima>umbralMin; return b;}

alarmaHipertension():boolean

Implementación en Java

PresionArterial

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.

Page 46: Problema abstracción DATOS ACCIONES Problemas y Programas Programa

Caso de Estudio: Medición de la presión arterial

public boolean alarmaHipertension(){ boolean b if (maxima>umbralMax || minima>umbralMin) b=true; else b = false; return b;}

alarmaHipertension():boolean

Implementación en Java

PresionArterial

Page 47: Problema abstracción DATOS ACCIONES Problemas y Programas Programa

Caso de Estudio: Medición de la presión arterial

class testPresion {public static void main (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);}}

Page 48: Problema abstracción DATOS ACCIONES Problemas y Programas Programa

Caso de Estudio: Medición de la presión arterial

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 clase PresionArterial y son equivalentes a:

PresionArterial med1,med2;

Page 49: Problema abstracción DATOS ACCIONES Problemas y Programas Programa

Caso de Estudio: Medición de la presión arterial

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.

Page 50: Problema abstracción DATOS ACCIONES Problemas y Programas Programa

Caso de Estudio: Medición de la presión arterial

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.

Page 51: Problema abstracción DATOS ACCIONES Problemas y Programas Programa

Caso de Estudio: Medición de la presión arterial

Las instrucciones: System.out.println (med1.obtenerMaxima()+"-"+ med1.obtenerMinima()+" pulso "+p1); System.out.println (med2.obtenerMaxima()+"-"+ med2.obtenerMinima()+" pulso "+p2);

provocan una salida por consola.

System es un objeto que recibe el mensaje out.println. El parámetro de este mensaje es una cadena de caracteres, esto es un objeto de la clase String, provista por Java. La cadena se genera concatenando cadenas de caracteres.