Problema abstracción DATOS ACCIONES Problemas y Programas Programa.

Slides:



Advertisements
Presentaciones similares
2. Manejo de memoria Manejo de memoria estática
Advertisements

TECNICATURA UNIVERSITARIA EN INFORMATICA
Definición de Clases y Variables de referencia.
Programación Orientada a Objetos
El proceso de desarrollo de software
El Proceso de desarrollo de software
El proceso de desarrollo de software
Abstracciones y Modelos
El proceso de desarrollo de software
Técnico en programación de Software
Estructuras de datos y algoritmos
Concepto de programa. Directorio Concepto de programa. Analisis del problema. Resolucion del problema. Desarroollo de un programa. Partes constitutivas.
Tipo de Dato Abstracto Tipos de datos:
Aplicación del paradigma orientado a objetos
Relaciones entre Clases La construcción de un sistema de software orientado a objetos consiste en definir un conjunto de clases relacionadas entre sí.
Encapsulamiento y Abstracción
Abstracción de Datos La abstracción es un recurso fundamental en la programación orientada a objetos y está además fuertemente ligado a reusabilidad.
Material Elaborado por: Lic. Saily González. CONTENIDO 2.1- Estructura de una Aplicación JAVA 2.2- Elementos básicos de la Programación JAVA Comentarios.
Tema 7: Polimorfismo Antonio J. Sierra. Índice Introducción. Sobrecarga de métodos. Objetos como parámetros. Paso de argumentos. Devolución de objetos.
Funciones y procedimientos
Modificadores.
POO Java Módulo 3 Elementos de programas Identificadores
Lic. Rosemary Torrico Bascopé
PROGRAMACIÓN ORIENTADA A OBJETOS
Java Orientado a Objetos CLASES,OBJETOS Y MÉTODOS
Clases y objetos La unidad fundamental de programación OO son las clases. Conjunto de métodos y semántica Qué se va a hacer POO Clase: que define la implementación.
Tema 6: Clases Antonio J. Sierra.
1 Herencia en Java Agustín J. González Diseño y Programación Orientados a Objetos.
UNIDAD 2 CLASES Y OBJETOS. CLASE Elementos cabecera y cuerpo de la clase. Cabecera: aporta información fundamental sobre la clase en sí y constituye de.
CARACTERÍSTICAS DE LOS PROGRAMAS
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Objetos.
Ingeniería de Software
DISEÑO DE SOFTWARE 1ª. Parte
Fundamentos de programación
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Encapsulamiento.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Encapsulamiento.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Clases.
Unidad 1: FUNDAMENTOS DE COMPUTACIÓN Y PSEUDOLENGUAJE
Herencia. Introducción La idea básica es poder crear clases basadas en clases ya existentes. Cuando heredamos de una clase existente, estamos re-usando.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Genericidad.
IDENTIFICADORES Un identificador es un "nombre" que nos permite dirigirnos específicamente a una de las entidades propias del lenguaje, es decir, son los.
Facultad de Ingeniería
PROGRAMACION ORIENTADA A OBJETOS
Términos algoritmo diseñar algoritmo implementar algoritmo
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Abstracción.
Simón Esneider Herrera Álvarez Media Técnica Casd 10-2
Introducción a la Programación Orientada a Objetos Sonia Rueda
UNIDAD 2: “Características del Modelado UML” CONTENDIDO Elaborado por: Ingeniero Harold Cabrera Meza Actualizado por: Ingeniero Nilson Albeiro Ferreira.
Abstracción El concepto de abstracción es esencial en ciencias de la computación. Un programa es en sí mismo una abstracción, un modelo de la resolución.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Tipo.
Java Java es un lenguaje de programación presentado en 1995 enfocado a: soportar los fundamentos de la programación orientada a objetos. generar código.
Clases “ Es una Abstracción de un elemento del mundo real ”
PRESENTACION DE INGENIERIA ORIENTADA A OBJETOS
Diferencia entre implementar en RPA e IPOO - Diseño En.
Estructuras de control selectivas Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión Práctica 3.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Asociación.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Objetos.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Encapsulamiento.
:: Prof. Yeniffer Peña Introducción a JAVA Presentación Programación I.
Cómo empezar Java. ¡Cómo se divide la plataforma de desarrollo de Java?  Edición estándar (JSE)  Edición empresarial (JEE)  Edición de dispositivos.
Programación en Java Introducción a Java. Reseña histórica Surge en 1991 por Sun Microsystems Desarrollado para electrodomésticos Se buscaba un código.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Objetos.
Programación I Clases. Paradigma POO La programación Orientada a objetos (POO) es una forma programar, más cercana a como expresaríamos las cosas en la.
Programación en Java Introducción a Java. Reseña histórica Surge en 1991 por Sun Microsystems Desarrollado para electrodomésticos Se buscaba un código.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Sonia.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS
Transcripción de la presentación:

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

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ón de un problema Software y 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 El proceso de desarrollo de software

Estudio de Factibilidad Desarrollo de Requerimientos Análisis y Diseño del Sistema Implementación Verificación Mantenimiento DOCUMENTACIONDOCUMENTACION Introducción a la Programación Orientada a Objetos El proceso de desarrollo de software

Estudio de Factibilidad Desarrollo de Requerimientos Análisis y Diseño del Sistema Implementación Verificación Mantenimiento DOCUMENTACIONDOCUMENTACION 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

Desarrollo de Requerimientos Análisis y Diseño del Sistema Implementación Verificación Mantenimiento DOCUMENTACIONDOCUMENTACION 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

Estudio de Factibilidad Desarrollo de Requerimientos Análisis y Diseño del Sistema Implementación Verificación Mantenimiento DOCUMENTACIONDOCUMENTACION 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

Estudio de Factibilidad Desarrollo de Requerimientos Análisis y Diseño del Sistema Implementación Verificación Mantenimiento DOCUMENTACIONDOCUMENTACION 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

Estudio de Factibilidad Desarrollo de Requerimientos Análisis y Diseño del Sistema Implementación Verificación Mantenimiento DOCUMENTACIONDOCUMENTACION 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

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

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

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.

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.

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.

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

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

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

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.

El concepto de Clase Diagrama de clases Nombre Atributos de clase Atributos de instancia Constructores Comandos Consultas Responsabilidades Se pueden agregar notas o comentarios que describan restricciones o la funcionalidad.

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.

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.presiónsangresignos vitalesesfigmomanómetrocolumna de mercuriokilopascales Especificación de Requerimientos

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.sistólicaciclo cardíacodiastólica presión de pulso Especificación de Requerimientos

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

Caso de Estudio: Medición de la presión arterial alarmaHipertensión: maxima>umbralMax o minima>umbralMin mini pulso: máxima-mínima valores representados en milímetros de mercurio requiere ma > mi PresionArterial > umbralMax,umbralMin :entero > 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.

Caso de Estudio: Medición de la presión arterial alarmaHipertensión: maxima>umbralMax o minima>umbralMin mini pulso: máxima-mínima valores representados en milímetros de mercurio requiere ma > mi requiere ma > mi > 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.

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

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

Caso de Estudio: Medición de la presión arterial alarmaHipertensión: maxima>umbralMax o minima>umbralMin mini pulso: máxima-mínima valores representados en milímetros de mercurio requiere ma > mi 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

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

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.

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.

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.

Caso de Estudio: Medición de la presión arterial /*Valores representados el milímetros de mercurio*/ //Atributos de clase private static final int umbralMax=120; private static final int umbralMin=80; Implementación en Java PresionArterial > 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.

Caso de Estudio: Medición de la presión arterial /*Valores representados el milímetros de mercurio*/ //Atributos de clase private static final int umbralMax=120; private static final int umbralMin=80; Implementación en Java PresionArterial > 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.

Caso de Estudio: Medición de la presión arterial //Atributos de instancia private int maxima; private int minima; Implementación en Java PresionArterial > 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

Caso de Estudio: Medición de la presión arterial //Constructor public PresionArterial(int ma,int mi){ //Requiere ma > mi maxima = ma; minima = mi; } > 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.

Caso de Estudio: Medición de la presión arterial //Consultas public int obtenerUmbralMax(){ return umbralMax; } > 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.

Caso de Estudio: Medición de la presión arterial public int obtenerUmbralMin(){ return umbralMin; } > 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.

Caso de Estudio: Medición de la presión arterial public int obtenerMaxima(){ return maxima; } public int obtenerMinima(){ return minima; } > obtenerMaxima():real obtenerMinima().real Implementación en Java PresionArterial Adoptamos la convención de nombrar a estos servicios con la palabra obtener seguida del nombre del atributo.

Caso de Estudio: Medición de la presión arterial public double obtenerMaximaHP(){ //Convierte a hectopascales return maxima*0.13; } > obtenerMaximaHP():real obtenerMinimaHP().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.

Caso de Estudio: Medición de la presión arterial public double obtenerMinimaHP(){ //Convierte a hectopascales return minima*0.13; } > obtenerMaximaHP():real obtenerMinimaHP().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.

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.

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.

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.

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

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); }

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;

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.

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.

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.