Programación III introducción Qué se espera de un sistema? Calidad del Software



Descargar 10,55 Kb.
Fecha de conversión07.04.2017
Tamaño10,55 Kb.

Programación III

  • Introducción

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

Portabilidad: distintas plataformas

  • 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
  • Calidad del Software (cont)

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.

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.

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.

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

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.

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

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

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.

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

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

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

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.

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

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.

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

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.

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.

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.

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

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)


La base de datos está protegida por derechos de autor ©absta.info 2016
enviar mensaje

    Página principal