La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Introducción a la Programación Orientada a Objetos Sonia Rueda

Presentaciones similares


Presentación del tema: "Introducción a la Programación Orientada a Objetos Sonia Rueda"— Transcripción de la presentación:

1 Introducción a la Programación Orientada a Objetos Sonia Rueda
Departamento de Ciencias e Ingeniería de la Computación UNIVERSIDAD NACIONAL DEL SUR 2013

2 Programación Matemática Teoría Software Sistemas de Hardware Electrónica Materia Optativa Trabajo Final de Carrera

3 Objetivos de las Materias de Programación
Aprender Contenidos Conceptuales Resolución de Problemas y Algoritmos Introducción a la Programación Orientada a Objetos Algoritmo Tipo de Dato Iteración Recursividad Diseño Top-Down Objeto Clase Encapsulamiento Herencia Polimorfismo Introducción a la Programación Orientada a Objetos

4 Objetivos de las Materias de Programación
Reforzar y desarrollar Competencias generales Comunicarse en forma oral y escrita Resolver problemas Aprender con autonomía Administrar el tiempo Trabajar en Equipo Introducción a la Programación Orientada a Objetos

5 Objetivos de las Materias de Programación
Reforzar y desarrollar Competencias específicas Dividir problemas en subproblemas Diseñar algoritmos Utilizar diferentes lenguajes de diseño y de programación Introducción a la Programación Orientada a Objetos

6 Objetivo de IPOO Contenidos de IPOO
Aprender y aplicar los fundamentos de la programación orientada a objetos a la construcción de sistemas de software para resolver problemas de pequeña y mediana escala. Contenidos de IPOO Conceptos, principios y técnicas de programación orientada a objetos El lenguaje de programación Java Introducción a la Programación Orientada a Objetos

7 Organización de las Clases
En las clases teóricas, en las prácticas y en el laboratorio se trabaja con un enfoque basado en la resolución de problemas. En las clases teóricas se presentan conceptos, principios y técnicas de programación orientada a objetos y se aplican en ejemplos concretos. En las clases prácticas se presenta el lenguaje de programación Java, se aplican los conceptos, principios y técnicas, se implementan clases a partir de diagramas y se diseñan los algoritmos que modelan los servicios. En las clases de laboratorio se implementan y verifican las soluciones de algunos problemas seleccionados de los trabajos prácticos. Introducción a la Programación Orientada a Objetos

8 Problemas y Soluciones
Resolución de un Problema Programa DATOS ACCIONES abstracción Introducción a la Programación Orientada a Objetos

9 Problemas y Soluciones
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

10 Problemas y Soluciones
Un lenguaje de programación permite modelar datos y acciones. El lenguaje brinda: Tipos de datos elementales y mecanismos para definir nuevos tipos. Acciones primitivas y mecanismos para definir nuevas acciones. La potencia de un lenguaje está dada no tanto en los elementos primitivos sino en los mecanismos para construir otros nuevos. Introducción a la Programación Orientada a Objetos

11 Problemas y Soluciones
El software es el conjunto de programas que permiten que los dispositivos físicos de una computadora puedan ser utilizados. 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

12 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

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

14 El proceso de desarrollo de Software
Estudio de Factibilidad D O C U M E N T A I 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 establece qué hará el sistema y sirve de punto de partida para la documentación. Especificación de Requerimientos Análisis y Diseño del Sistema Implementación Verificación Mantenimiento Introducción a la Programación Orientada a Objetos

15 El proceso de desarrollo de Software
Estudio de Factibilidad D O C U M E N T A I A partir del análisis de los requerimientos 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 interfases 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. Especificación de Requerimientos Análisis y Diseño del Sistema Implementación Verificación Mantenimiento Introducción a la Programación Orientada a Objetos

16 El proceso de desarrollo de Software
Estudio de Factibilidad D O C U M E N T A I 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. Especificación de Requerimientos Análisis y Diseño del Sistema Implementación Verificación Mantenimiento Introducción a la Programación Orientada a Objetos

17 El proceso de desarrollo de Software
Estudio de Factibilidad D O C U M E N T A I 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. Especificación de Requerimientos Análisis y Diseño del Sistema Implementación Verificación Mantenimiento Introducción a la Programación Orientada a Objetos

18 El proceso de desarrollo de Software
Estudio de Factibilidad D O C U M E N T A I 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. Especificación de Requerimientos Análisis y Diseño del Sistema Implementación Verificación Mantenimiento Introducción a la Programación Orientada a Objetos

19 Incumbencias Los graduados de nuestras carreras están capacitados para: Participar en cada una de las etapas del proceso de desarrollo de software seleccionando y aplicando metodologías y herramientas adecuadas. Desarrollar nuevas metodologías y herramientas. Administrar y Evaluar proyectos de software aplicando criterios de calidad y productividad. Auditar y Certificar proyectos y sistemas de software considerando pautas técnicas y normas de seguridad. Elaborar pautas técnicas y normas de seguridad que permitan resguardar y controlar recursos físicos y lógicos. svr 8/25/2008 En las aplicaciones de mediana y gran escala con frecuencia hay varias alternativas de diseño La implementación es en cambio menos creativa, consiste en general código que pueda ser ejecutado por la computadora. Puede haber varios algoritmos alternativos para cada servicio Introducción a la Programación Orientada a Objetos

20 Calidad de Software La calidad de un producto de software puede definirse como su capacidad para satisfacer los requisitos establecidos. Parte de los requisitos están establecidos en la especificación de requerimientos. La calidad puede medirse de acuerdo a distintos factores. Algunos de estos factores son percibidos por el usuario o cliente. Otros factores son transparentes para el usuario o cliente, aunque por supuesto lo afectan indirectamente. Introducción a la Programación Orientada a Objetos

21 Calidad de Software Correctitud
Un producto de software correcto actúa de acuerdo a los requerimientos especificados. Eficiencia Un producto de software es eficiente si tiene una baja demanda de recursos de hardware, en particular tiempo de CPU, espacio de memoria y ancho de banda. Portabilidad Un producto de software es portable si puede ejecutarse sobre diferentes plataforma de hardware y de software. Ejemplo de poco eficiente public boolean tieneDigito (int numero, int digito){ //Se asume numero > 0 boolean tiene = false; int cant = contarDigitos (numero) for (int i= 1;i <=cont; i++){ if (numero % 10 == digito) tiene = true; numero = numero / 10; } returno tiene; while (numero > 0 ) { tiene = (numero % 10 == digito); Introducción a la Programación Orientada a Objetos

22 Calidad de Software Simplicidad
Un producto de software es simple si es fácil de usar, su interfaz es amigable y no requiere demasiado entrenamiento ni capacitación. Confiabilidad Un producto de software es confiable se reacciona adecuadamente aun en circunstancias no especificadas en los requerimientos. Introducción a la Programación Orientada a Objetos

23 Productividad de Software
Extensibilidad Un producto de software es extensible si es fácil adaptarlo a cambios en la especificación. El primer requerimiento para la extensibilidad es la legibilidad. Reusabilidad Un módulo de software es reusable si puede utilizarse para la construcción de diferentes aplicaciones. Cuando hablamos de que es fácil de adaptar significa que pueden agregarse nuevos módulos con modificaciones mínimas sobre los anteriores. La verificación está también acotada. Observemos que cuando hablamos de reusabilidad no estamos hablando de la aplicación, sino de los módulos que conforman un sistema. Por ejemplo un módulo que brinde servicios para dibujar figuras geométricas puede ser usados en diferentes aplicaciones. Introducción a la Programación Orientada a Objetos

24 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. El lenguaje de programación debe brindar mecanismos que permitan la aplicación de la metodología y contribuyan a favorecer la calidad y productividad. El mecanismo de abstracción sigue siendo dividir el problema en subproblemas para reducir la complejidad. La metodología nos indica cómo dividir. Introducción a la Programación Orientada a Objetos

25 El concepto de Objeto El término objeto se utiliza para referirse a dos conceptos relacionados pero diferentes. En un problema a resolver podemos identificar los objetos o entidades relevantes. Durante la ejecución del programa que modela el problema se crean objetos de software. Cada objeto relevante del problema está asociado a un objeto de software que lo representa en ejecución. El concepto central en la POO es el de OBJETO Introducción a la Programación Orientada a Objetos

26 El concepto de Objeto Programa en Ejecución Objetos de Software Problema Objetos Reales abstracción En ejecución, cada objeto del problema esta asociado a una representación abstracta, un objeto de software Introducción a la Programación Orientada a Objetos

27 El concepto de Objeto Los objetos de un problema pueden caracterizarse a través de atributos y un comportamiento. Un atributo es una propiedad o cualidad y se representa como un dato. El comportamiento está dado por el conjunto de servicios que el objeto brinda. Los objetos se agrupan en clases de acuerdo a los atributos y servicios que los caracterizan. Supongamos el problema de modelar la información mantenida por el Ministerio de Educación de la Provincia de Buenos Aires referida a las escuelas primarias. En el problema podemos identificar a cada ciudad, cada escuela, cada director, cada maestra. De cada uno de estos objetos del problema se mantiene un modelo en ejecución. Por ejemplo una ciudad tiene un código postal, una superficie. Cada escuela pertenece a una ciudad, tiene un director y varias maestras. Introducción a la Programación Orientada a Objetos

28 El concepto de Clase Una clase es un patrón o esquema que especifica los atributos y servicios compartidos por todos los objetos que pertenecen a ella. Las clases se relacionan entre sí de maneras diferentes. En esta materia vamos a presentar tres formas de relación: dependencia, asociación y herencia. Introducción a la Programación Orientada a Objetos

29 Objetos y Clases En la etapa de análisis de un sistema se identifican objetos y se los caracteriza de acuerdo a sus atributos y su comportamiento. En la etapa de diseño los objetos se agrupan en clases. Los objetos de una misma clase comparten los mismos atributos y servicios. El resultado de un diseño orientado a objetos es un diagrama de clases escrito en un lenguaje de modelado. El diagrama especifica la colección de clases y sus relaciones. Se establecen los servicios que implica este comportamiento Introducción a la Programación Orientada a Objetos

30 Objetos y Clases En la implementación se escribe el código de cada clase en un lenguaje de programación, manteniendo las relaciones especificadas en el diagrama. En la ejecución del programa se crean objetos de software que son instancias de una clase En esta etapa una clase puede pensarse como un generador a partir del cual se crean objetos de software. Introducción a la Programación Orientada a Objetos

31 Diagrama de clases Un lenguaje de modelado permite construir distintos tipos de diagramas para describir diferentes aspectos de un sistema de software. Es una herramienta muy útil para las etapas de diseño e implementación de programas y también para la documentación. Un diagrama de clases permite especificar la estructura de un sistema en función de las clases que lo componen. Introducción a la Programación Orientada a Objetos

32 Diagrama de clases Las clases son dibujadas como rectángulos conformados por: Nombre de la clase Atributos de la clase Comentarios Atributos de las instancias Servicios Responsabilidades Introducción a la Programación Orientada a Objetos

33 Diagrama de clases Cada atributo va a estar asociado a un tipo.
Los servicios pueden ser constructores, comandos o consultas. Por el momento no especificaremos la sección responsabilidades. Usaremos los comentarios para especificar responsabilidades de la clase y de cada servicio. El diseño puede completarse con elementos adicionales como por ejemplo los casos de prueba. Introducción a la Programación Orientada a Objetos

34 Caso de Estudio:Ciudad
El Ministerio de Educación de una provincia mantiene datos que le permiten obtener información demográfica. El sistema está conformado por varias clases, una de las cuales permite modelar a cada ciudad de la provincia. Cada ciudad se modela a través de atributos Código Postal, población actual, superficie medida en kilómetros cuadrados y la densidad. Este último valor se obtiene como el cociente entre la población y la superficie de la ciudad. Introducción a la Programación Orientada a Objetos

35 Caso de Estudio:Ciudad
Atributos Ciudad Se asumen valores no negativos <<atributos de instancia>> CP: entero poblacion : entero superficie: real La responsabilidad de controlar que los valores no son negativos se le asigna a las clases que usen a la clase Ciudad. Introducción a la Programación Orientada a Objetos

36 Caso de Estudio:Ciudad
Constructores Un constructor es un servicio provisto por la clase y se caracteriza porque recibe el mismo nombre que la clase. El constructor se invoca cuando se crea un objeto y permite inicializar los valores de los atributos de instancia. Una clase puede brindar varios constructores. Introducción a la Programación Orientada a Objetos

37 Caso de Estudio:Ciudad
Constructores Ciudad <<atributos de instancia>> CP: entero poblacion : entero superficie: real <<constructores>> Ciudad (c : entero) Ciudad(c: entero,p:entero,s:real) El código queda establecido en el momento en que se crea la ciudad. Este diseño especifica que puede crearse una instancia especificando sólo el código postal o especificando el código, la población y la superficie. Introducción a la Programación Orientada a Objetos

38 Caso de Estudio:Ciudad
Comandos Los comandos son servicios que modifican los valores de los atributos. Por lo general cada clase ofrece un comando para establecer el valor de cada atributo de instancia. Introducción a la Programación Orientada a Objetos

39 Caso de Estudio:Ciudad
Comandos Ciudad <<atributos de instancia>> CP: entero poblacion : entero superficie: real <<constructores>> <<comandos>> establecerPoblacion (pob : entero) establecerSuperficie (sup : real) El código queda establecido en el momento en que se crea la ciudad. Este diseño especifica que pueden modificarse los valores de la población y la superficie. Introducción a la Programación Orientada a Objetos

40 Caso de Estudio:Ciudad
Comandos Ciudad <<atributos de instancia>> CP: entero poblacion : entero superficie: real Se incrementa la población de acuerdo al valor actual más cre <<constructores>> <<comandos>> aumentarPoblacion (cre : entero) El comentario describe la funcionalidad del comando. Introducción a la Programación Orientada a Objetos

41 Caso de Estudio:Ciudad
Consultas Las consultas son servicios que computan un valor y devuelven un resultado (getter). La inversa no es necesariamente válida, es decir que un servicio devuelva un resultado no lo convierte en una consulta. Por lo general se incluye una consulta para retornar el valor de cada atributo de instancia. Introducción a la Programación Orientada a Objetos

42 Caso de Estudio:Ciudad
Consultas Ciudad <<atributos de instancia>> CP: entero poblacion : entero superficie: real <<constructor>> <<comandos>> <<consultas>> obtenerCP(): entero obtenerPoblación() : entero obtenerSuperficie() : real Introducción a la Programación Orientada a Objetos

43 Caso de Estudio:Ciudad
Consultas Ciudad <<atributos de instancia>> CP: entero poblacion : entero superficie: real cantidad de habitantes por kilómetro cuadrado. Asume superficie mayor que 0. <<constructor>> <<comandos>> <<consultas>> densidad () : real Introducción a la Programación Orientada a Objetos

44 Caso de Estudio:Ciudad
Decisiones de Diseño Este diagrama implica dos decisiones de diseño importantes: la densidad no se mantiene como un atributo sino un servicio que calcula un valor a partir de los otros almacenados es responsabilidad de la clase que “usa” el servicio densidad invocarlo sólo si la superficie es mayor que 0. Cuando hablamos de programa tenemos que distinguir entre el TEXTO que especifica el modelo de la EJECUCIÓN del programa. Cuando pensamos en el texto un programa en Java es una colección de clases. Cuando pensamos en la ejecución del programa pensamos en objetos comunicándose a través de mensajes. Introducción a la Programación Orientada a Objetos

45 Caso de Estudio:Ciudad
Implementación en Java La implementación en Java de este diagrama consiste en definir una clase Ciudad Ciudad class Ciudad { } Atributos de la clase Atributos de las instancias Servicios Cuando hablamos de programa tenemos que distinguir entre el TEXTO que especifica el modelo de la EJECUCIÓN del programa. Cuando pensamos en el texto un programa en Java es una colección de clases. Cuando pensamos en la ejecución del programa pensamos en objetos comunicándose a través de mensajes. Responsabilidades Introducción a la Programación Orientada a Objetos

46 Caso de Estudio:Ciudad
Implementación en Java La palabra class está reservada. El primer caracter de un identificador debe ser una letra, luego puede estar seguida de otras letras, dígitos, guiones bajos. Java es sensible a mayúsculas y minúsculas. Las llaves { } delimitan la definición de la clase. En su interior se definen los atributos y servicios que caracterizan a la clase. Otros delimitadores cuyo significado iremos viendo son los corchetes, paréntesis, comas, puntos y puntos y comas. Introducción a la Programación Orientada a Objetos

47 Caso de Estudio:Ciudad
Implementación en Java Cada atributo va a quedar asociado a un variable o atributo de instancia. Ciudad <<atributos de instancia>> CP: entero poblacion : entero superficie: real class Ciudad { private int CP; private int poblacion; private float superficie; } Introducción a la Programación Orientada a Objetos

48 Caso de Estudio:Ciudad
Implementación en Java Los comentarios se denotan con: // para comentarios de una línea /* */ para delimitar comentarios de varias líneas Java es libre de la línea. El ; es terminador de instrucción. La palabra reservada private es un modificador, indica que el alcance de las tres variables es la clase completa. Si bien Java no exige que las declaraciones aparezcan antes del código, adoptaremos la convención de escribir los atributos antes que los servicios. Introducción a la Programación Orientada a Objetos

49 Caso de Estudio:Ciudad
Implementación en Java Cada variable tiene asociado un tipo. Los tipos int y float son tipos elementales. Un tipo elemental determina un conjunto de valores atómicos y un conjunto de operaciones que se aplican sobre estos valores. En ejecución, una variable de un tipo elemental mantiene un valor que corresponde al tipo y participa en las operaciones establecidas por su tipo. Introducción a la Programación Orientada a Objetos

50 Caso de Estudio:Ciudad
Constructores en Java Un constructor es un servicio que se invoca cuando se crea un objeto de clase Ciudad. Ciudad <<constructores>> Ciudad (c : entero) public Ciudad ( int c) { CP = c; } Introducción a la Programación Orientada a Objetos

51 Caso de Estudio:Ciudad
Constructores en Java Ciudad <<constructores>> Ciudad (c : entero) Ciudad (c : entero, p: entero, s: real) public Ciudad(int c,int p,float s) { CP = c; poblacion = p; superficie = s; } Introducción a la Programación Orientada a Objetos

52 Caso de Estudio:Ciudad
Constructores en Java El primer constructor recibe un parámetro. El pasaje de parámetros en Java es por valor. El valor de la variable c se asigna a la variable CP, que es un atributo de instancia. Las otras dos variables se inicializan con valores por omisión establecidos de acuerdo al tipo. Introducción a la Programación Orientada a Objetos

53 Caso de Estudio:Ciudad
Constructores en Java El segundo constructor va a invocarse cuando se cree un objeto de clase Ciudad y se establezcan los valores iniciales de los tres atributos de instancia. Este constructor recibe tres parámetros. El nombre Ciudad está sobrecargado. Introducción a la Programación Orientada a Objetos

54 Caso de Estudio:Ciudad
Constructores en Java Si una clase brinda varios constructores el número o tipo de parámetros debe ser diferente en cada uno. Si en una clase no se define explícitamente un constructor, el compilador crea automáticamente uno. Si la clase incluye uno o más constructores, el compilador no agrega ningún otro implícitamente. Introducción a la Programación Orientada a Objetos

55 Caso de Estudio:Ciudad
Comandos y Consultas en Java En Java los comandos y consultas se llaman métodos. Ciudad <<comandos>> establecerPoblación (p : entero) public void establecerPoblacion(int p) { poblacion = p ; } La palabra void indica que el método no retorna un valor. Introducción a la Programación Orientada a Objetos

56 Caso de Estudio:Ciudad
Comandos y Consultas en Java Se incrementa la población de acuerdo al valor actual más cre Ciudad <<comandos>> aumentarPoblación (cre : entero) public void aumentarPoblacion(int cre) { //Se incrementa la población de acuerdo al valor actual más cre poblacion += cre ; } Es equivalente a poblacion=poblacion+cre Introducción a la Programación Orientada a Objetos

57 Caso de Estudio:Ciudad
Comandos y Consultas en Java Ciudad <<consultas>> obtenerPoblación (): entero public int obtenerPoblacion() { return poblacion; } Introducción a la Programación Orientada a Objetos

58 Caso de Estudio:Ciudad
Comandos y Consultas en Java Ciudad cantidad de habitantes por kilómetro cuadrado. Asume superficie mayor que 0. <<consultas>> densidad () :real public float densidad() { //cantidad … return poblacion/superficie; } Java admite expresiones con operandos de diferentes tipos Introducción a la Programación Orientada a Objetos

59 Contenido de esta clase
Presentación de la materia (objetivos, motivación) Problemas y Soluciones El proceso de desarrollo de Software. Etapas Calidad y Productividad Programación Orientada a Objetos. Objetos y Clases Atributos y Servicios Constructores, Comandos y Consultas Implementación de Clases en Java Introducción a la Programación Orientada a Objetos

60 Contenido de la próxima clase
Objetos y Clases Atributos de instancia y de clase Servicios. Constructores, Comandos y Consultas Modificadores de acceso Creación y comunicación entre objetos. Implementación y Verificación de una Clase en Java Tester con valores establecidos Alternativas de diseño para Cuenta Bancaria Introducción a la Programación Orientada a Objetos


Descargar ppt "Introducción a la Programación Orientada a Objetos Sonia Rueda"

Presentaciones similares


Anuncios Google