Programación III

23
Programación III Introducción

description

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 - PowerPoint PPT Presentation

Transcript of Programación III

Page 1: Programación III

Programación III

Introducción

Page 2: Programación III

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

Page 3: Programación III

• 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)

Page 4: Programación III

Desarrollar SoftwareTransformació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.

Page 5: Programación III

Paradigmas y técnicas (cont) 1) Programación estructuradasurge 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.

Page 6: Programación III

• 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.

Paradigmas y técnicas (cont)

Page 7: Programación III

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

Page 8: Programación III

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.

Page 9: Programación III

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

Page 10: Programación III

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

Page 11: Programación III

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.

Page 12: Programación III

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

Page 13: Programación III

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

Page 14: Programación III

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

Page 15: Programación III

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.

Page 16: Programación III

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

Page 17: Programación III

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.

Page 18: Programación III

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

Page 19: Programación III

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.

Page 20: Programación III

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.

Page 21: Programación III

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.

Page 22: Programación III

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

Page 23: Programación III

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)