1 / 23

Programación III

Programación III. Introducción. Qu é se espera de un sistema? Calidad del Software. Confiabilidad: 1) correcto (cumpla con las especificac. ) 2) robust o (reacción en situaciones extremas) Extensibilidad: adaptación a los cambios

varian
Download Presentation

Programación III

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. Programación III Introducción

  2. Qué se espera de un sistema? Calidad del Software. • Confiabilidad: 1) correcto (cumpla con las especificac.) 2) robusto (reacción en situaciones extremas) • Extensibilidad: adaptación a los cambios • Reutilización: capacidad de re-emplear el código • Compatibilidad: interoperable con otros productos, uso de estándar, ej formato de arch. • Facilidad de uso: amigable

  3. Calidad del Software (cont) • Portabilidad: distintas plataformas • Eficiencia: mín cantidad de recursos de hard, tiempo de proceso, etc • Funcionalidad: cumplir los requerimientos • Oportunidad: llegar al mercado en el momento justo • Costo: desarrollo, operación y mantenimiento

  4. Desarrollar Software Transformación entre el problema a resolver y el modelo de la solución 1) Modelar el problema en vez de la solución y que la máquina se ocupe de la traducción. Enfoque de Lisp, Prolog, RPG, Stress, APL, orientados a det. tipo de problemas, fuera de su ámbito son difíciles de manejar 2) Procesamiento del lenguaje natural, rama de la Inteligencia artificial, aún inmaduro 3) OO, crear objetos que representen elementos tanto del espacio de la solución como del espacio del problema.

  5. Paradigmas y técnicas (cont) 1) Programación estructurada surge 60, empleo de secuencia, selección e interacción, elimina el goto. Ej Fortran, Algol, C y Pascal 2) Programación modular - Abstracción de procesos • división del problema en un conjunto de módulos o subprogramas autónomos • diseño descendente, un refinamiento de lo general a lo particular top-down.

  6. Paradigmas y técnicas (cont) • Diseño ascendente, bottom-up, acciones de uso frecuente agrupadas en bibliotecas, no modificables • ej Lenguajes Fortran 77, Algol 80, C Pascal - Abstracción de datos • Implementación de tipos definidos por el programador, datos + las operaciones definidas sobre los mismos.

  7. Ocultamiento de la info • Impedir que el usuario del TAD haga uso indebido empleando aspectos de la implementación. • Separar el qué del cómo. • El cliente sólo debe poder emplear la interfase • Interfase contrato partes cliente y servidor • Cliente info para usar el módulo correctamente • Proveedor info para que comprenda el uso que se hara de ese módulo • Precondiciones, postcondiciones e invariantes

  8. Beneficios del encapsulamiento • Permite cambios en la implementación ej pasar de una estructura de pila a lista • Impide violación de las restricciones sobre los datos internos ej datos vínculados entre sí, arco de un grafo.

  9. POO • Nace con lenguajes como Simula, Smalltalk, hace 20 años. • Aspectos nuevos: - Uso de la POO en aplicaciones comerciales - Aparición de metodologías avanzadas de desarrollo OO

  10. Ventajas de OO • Conceptos comunes a lo largo del ciclo de vida • Reducción de la brecha entre el ámbito del problema y el de la solución • Centrada en los datos en vez de en los procesos, siendo los primeros más estables • Aumento del nivel de complejidad de los sistemas, los objetos se pueden construir a partir de otros pre-existentes, uso de bibliotecas

  11. Ventajas de POO (cont) • Herencia y polimorfismo, permite la re- utilización y extensión del código, ya probado en otro contexto. • Uso de prototipos, se deja la implementación para el final. • Programación en ambientes de interfaz de usuario gráfica y programación guiada por eventos. • En éstos ambientes se manipulan más objetos que procesos y la ejecución deja de ser secuencial para estar manejada por el usuario.

  12. Características de POO • Todo es un objeto • Un programa es un conjunto de objetos que interactúan a través de mensajes • Composición, cada objeto se crea contruyendo un agregado de otros objetos • Cada Objeto tiene un tipo, clase, que le dice que mensajes puede aceptar • Todos los objetos de la misma clase admiten los mismos mensajes

  13. Características de POO (cont) • Es no procedimental, está basado en datos • La OO tiende a económizar en el desarrollo en todas sus etapas, fomentando al re utilización de componentes pre-fabricados y probados. • Se basa en abstracción, encapsulamiento (ocultación de información), herencia y polimorfismo

  14. Lenguajes Puros Vs Híbridos • Puros: Smalltalk, Eifel • Híbridos: Java, C++ Son derivados de lenguajes anteriores mantienen algunas características no OO • Java sólo mantiene datos primitivos • C++ mantiene otras como característifas como fc fuera de clases, punteros, etc

  15. JAVA • El desarrollo fue realizado en Sun Microsystem por el grupo de Gosling. Comenzaron basándose en C y C++ pero luego debieron modificar el enfoque. • Lenguaje independiente de la plataforma y del SO para dispositivos empotrados • Comenzaron a desarrollarlo bajo el nombre de Oak en 1991 • En el 95 fue rebautizado a Java y rápidamente se convirtió en el lenguaje más popular para desarrollos web.

  16. Características de JAVA • Leng programación + entorno ejecución • Interpretado: se compila en bytes codes que son interpretados por la máquina virtual JVM • Posee una extensa biblioteca de clases estándares incorporada. • Permite el desarrollo de aplicaciones, como otros lenguajes C, C++, etc y de applets, aplicación diseñada para ser tranferida por la WEB y ejecutada en cualq navegador (java), permitiendo contenido dinámico • Se basa en: abstracción, encapsulamiento, herencia y polimorfismo

  17. Abstracción • Las personas normalmente gestionan la complejidad empleando la abstracción • Es el proceso de capturar lo fundamental ignorando los detalles. • Descomponer un sistema complejo en sus partes fundamentales y describir esas partes en un lenguaje sencillo y preciso • Un método poderoso es hacerlo es mediante clasificación jerárquica.

  18. Abstracción (cont) • Aplicando la abstracción al diseño de estructuras de datos, se generan los TAD tipos abstractos de datos (tipos programados) • TAD: modelo engloba estructura de dato, las operaciones soportadas y los parametros. • Qué hace pero no cómo. • En Java los Tad son las clases. • Las clases permiten encapsulamiento

  19. Encapsulamiento • Ocultar los detalles de la implementación, el interior de la clase está oculto, sólo se pueden ver la interfases externas por los otros objetos. • Permite modificar la implementación, siempre y cuando mantenga la interfaz. • La clase define la estructura y el comportamiento (datos + código) • Cada miembro de la clase puede ser privado o público. La interfaz pública representa lo que los usuarios de la clase pueden acceder.

  20. Herencia • Proceso mediante el cual un objeto adquiere las propiedades de otro objeto. • Ej pastor aleman, es un perro, que además es un mamifero, que es un animal, etc • Sólo se necesita definir las cualidades que lo hacen único dentro de la clase • En objeto puede ser una instancia más específica de un caso más general. • Las subclases heredan todos los atributos y métodos de la superclase, clase padre, ascendente.

  21. Herencia (cont) • Todas las clases que se definen en Java heredan de otra existente explicita o implícitamente. La superclase es Object • En java no está implementada la herencia múltiple, que permite heredar de más de un padre, se reemplaza con interfases.

  22. Polimorfismo • Permite que una interfaz sea utilizada como una clase de acción general. La acción específica se determina de acuerdo a la situación. • Permite enviar el mismo mensaje a objetos de diferente clase, cada uno de ellos responde a ese mismo mensaje de forma diferente, de acuerdo a como ha sido implementado. • Anulación (overriding) un método se define en una clase y en las clases derivadas, las instancias van a responder distinta

  23. Polimorfismo (cont) • Sobrecarga: métodos con el mismo nombre empleado sobre tipo de datos distintos • En Java sólo el operador + con cadenas de caracteres y otros datos primitivos (int, double). • Cuando una clase tiene múltiples métodos de igual nombre y distinta signatura (nombre, tipo y nro de argumentos)

More Related