2. TEMAS PARA EXPOSIONES
27 y 28 de Noviembre
1) Web Servicies Mónica Gonzalez y Violetta
2) SOA – Arquitectura Orientada a Servicios Javier Rojas y
Maximiliano Rodriguez
3) PHP Elba Guerray Christian Poliycroniadys
4) JSP Efrain Vasquez y Christian Becles
5) Javascript Laura García y Edar Castro
6) Eclipse (plugins C++, C, PHP,..)
5) Qt / C++ y QtJambi Rafael Andara y Aldo Grazzina
http://es.wikipedia.org/wiki/Portada
3. TEMAS PARA EXPOSIONES
26 y 28 de Noviembre
[Presentación 15min]
Contenido
●
Qué es?
●
Areas de aplicación
●
Ejemplos Básicos
●
Relaciones con otras herramientas
(versiones, plungins, interfaces)
4. Introducción
●
Fases del ciclo de vida del software:
1) Análisis, 6%
2) Diseño, 5%
3) Implementación, 7%
4) Depuración, 15%
5) Mantenimiento, 67%
5. Factores calidad del
software
●
Eficiencia
●
Portabilidad
●
Verificabilidad
●
Integridad (protección contra procesos sin derecho de acceso)
●
Facilidad de uso
●
Robustez (situaciones anómalas)
●
Extensibilidad
●
Reutilización
●
Compatibilidad, ...
6. Abstracción en programación
●
Capacidad para encapsular y aislar la información
del diseño y ejecución.
●
Mecanismos en programación:
− Procedimientos y funciones
− Tipos de datos abstractos (TDA)
− Objetos: son TDA a los que se añaden mecanismos
como herencia, métodos, etc.
7. Programación Orientada a
Objetos (POO)
●
La programación orientada a objetos trata de
amoldarse al modo de pensar del hombre y no
al de la máquina.
●
Esto es posible gracias a la forma racional con
la que se manejan las abstracciones que
representan las entidades del dominio del
problema, y a propiedades como la jerarquía o
el encapsulamiento.
8. Programación Orientada a
Objetos (POO)
●
El elemento básico de este paradigma no es la
función (elemento básico de la programación
estructurada), sino un ente denominado Objeto.
9. Programación Orientada a
Objetos (POO)
●
Un objeto es la representación de un concepto para
un programa, y contiene la información necesaria
para abstraer dicho concepto:
− los datos que describen su estado
− las operaciones que pueden modificar dicho estado, y
determinan las capacidades del objeto.
10. Programación Orientada a
Objetos (POO)
●
Un objeto es un trocito de programa
●
Un programa es un conjunto de objetos
●
Se programan cosas que pueden ser muy complejas
y para mantener esa complejidad bajo control hay
que partir el problema en piezas controlables
− Divide y vencerásl
11. Programación Orientada a
Objetos (POO)
¿Los objetos son objetos?
●
Los objetos de programación NO son objetos materiales
●
Inicialmente los objetos se inventaron para estructurar
programas de simulación flujo viales: un auto, un peatón,
una calle, un semáforo, ...
●
Actualmente se usan para estructurar objetos materiales,
servicios, conceptos, ..., en general cualquier abstracción
mental.
12. Programación Orientada a
Objetos (POO)
Ejemplos de objetos
●
Una estructura algebraica (ej. un grupo)
●
Un ámbito de trabajo (ej. colores)
●
Un objeto material (ej. un satélite)
●
Un servicio inmaterial (ej. www)
●
Algo muy “real”: una cuenta corriente
13. Programación Orientada a Objetos
(POO) Clases de Objetos
●
Habitualmente un programa emplea muchos objetos de
la misma clase
− muchos coches, muchos satélites, muchas conexiones
www, muchos transistores, ...
●
Los programadores definen clases
class Car { ... detalles ... }
●
Y luego crean objetos de las clases definidas
Car miAuto = new Car (...);
14. Programación Orientada a
Objetos (POO)
●
Ventajas de uso:
− Reusabilidad (mecanismos de abstracción y herencia)
●
En programación convencional: uso de funciones y
procedimientos
− Adecuación a entornos de bases de datos.
− Idónea para tratamiento de Interfaces de Usuario.
− Adecuada en prototipos y simulación.
15. Características de POO, I
●
El modelo objeto
(Booch, Object-Oriented Analysis and Design with Applications,1994):
− Abstracción
Las características esenciales del objeto
Documento: insertar, borrar, ...
− Encapsulamiento (ocultamiento de información)
Una clase contiene:
+ una interfaz pública
+ una implementación
Documento: posicionPrevia
16. Características de POO, II
− Modularidad
●
Subdivisión de una aplicación en otras más pequeñas
(módulos).
− Un módulo es un conjunto de clases
Editor, Fuente, Documento, …
17. Características de POO, III
− Jerarquía
●
Ordenamiento de las abstracciones
●
Tipos:
− Herencia (“es-un”); generalización/especialización
●
Herencia simple o múltiple
Mensaje es-un Documento
− Agregación (“parte-de”)
Mensaje: Destinatarios,Asunto,Contenido
18. Características de POO, IV
− Polimorfismo
●
Una misma operación (método) realizada de diferente
modo
− Documento: Añadir texto, imagen, …
− Mensaje: Añadir destinatario, …
− Otras propiedades
●
concurrencia (multitarea)
●
Persistencia (guardar)
●
uso de excepciones (errores)
19. Importancia de las palabras
●
Nombres:
− Objetos
− Propiedades de objetos
●
Adjetivos:
− Valores de las propiedades
Verbos:
− Comportamiento de los objetos
“El coche tiene color rojo y se mueve”
“El documento tiene letra grande y se muestra”
21. Lenguajes de POO, II
●
The journal of object-oriented programming (1988)
●
Primeros lenguajes POO:
− Simula-67
●
Objeto (datos+métodos). Clase. Herencia.
− Smalltalk-80
●
Verdadero primer lenguaje de POO
●
Concepto de paso de mensajes (activación de métodos)
22. Otros aspectos de la POO
●
Beneficios:
− Mejor mantenimiento
− Estructuras más reales de la información
− Escalabilidad
− Adaptabilidad
23. Otros aspectos de la POO, II
●
Inconvenientes:
− Necesidades de estandarización (OMG, Object
Management Group)
− Coste de conversión de software legado (legacy)
24. Conceptos de POO, I
●
Conceptos principales:
− Clase
− Objeto (una instancia de una clase)
− Jerarquía de herencia entre clases
25. Conceptos de POO, II
●
Objetos:
− objeto=datos+métodos
− miembros de un objeto (o clase):
●
datos
●
métodos
− identificador del objeto
●
nombre de variable
27. Creación y destrucción de
objetos
●
Equivalencia de conceptos con programación clásica:
− Tipo =~Clase
− Dato = ~Objeto
− Variable: existe en ambos tipos de programación
●
Creación (uso de constructor):
− Ejemplo:
robot1 = Robot(1,2) robot2 = Robot(3)
●
Destrucción
− Automática (Java, Garbage collection)
28. Encapsulamiento
●
Miembros privados y públicos
●
Interfaz pública de una clase:
− Miembros públicos (datos y métodos)
− Se pueden invocar desde fuera de la clase
29. Encapsulamiento, II
●
Ejemplo
− clase Robot
●
Datos:
− privado x (entero)
− privado y (entero)
●
Constructores:
●
público Robot (entero, entero)
●
público Robot (entero)
31. Representación
clase: Robot
Datos
x
y
Métodos
Robot (entero, entero)
Robot (entero)
void avanzar (entero, entero)
void avanzar (entero)
entero getY ()
entero getX ()
32. Ejecución de métodos
●
Un método es un algoritmo que se puede ejecutar a partir de un
objeto.
− Se dice que un método se ejecuta cuando el objeto recibe un
mensaje de ejecución del método.
− Puede acceder a todos los miembros de la clase y a sus
argumentos, que son otros objetos.
●
Ejemplo:
− Objeto robot1 (Robot)
− robot1=Robot(3,2)
− robot1.avanzar(1,2)
33. Herencia
●
Representa el concepto de “ser un tipo especial de”
o “ser un/a”
●
Se establece mediante la definición de subclases,
que dan lugar a una jerarquía de clases
●
Ejemplo:
RobotConFrontera como subclase de Robot
hereda sus miembros (x, y)
y métodos (avanzar, getX, getY)
36. Herencia, II
●
La definición en RobotConFrontera de:
●
void avanzar (entero, entero)
●
void avanzar (entero)
− es un “overriding” (especialización, redefinición, etc) de
los métodos ya definidos en la clase Robot
38. Herencia, IV
●
Clase abstracta:
− No admite una instancia directa. Ejemplo: clase Figura.
Sería inválido
− objeto f (Figura)
− f=Figura(....)
aunque sí sería válido
− objeto f (Figura)
− f=Cuadrado(3)
39. Herencia, V
●
Sobrecarga (overloading) de un método:
− En una clase, el mismo nombre de método definido de
modos distintos
●
Ejemplo: el método “avanzar” está sobrecargado en
la clase Robot
40. Herencia, IV
●
“Overloading” y “Overriding” son casos de polimorfismo:
− El mismo método definido de modos distintos
●
Ligadura dinámica:
− objeto r (Robot)
− r=RobotConFrontera(2,3,0,0)
− Al ejecutar r.avanzar(3), ¿qué definición se aplica?
− la de Robot (ligadura estática)
− la de RobotConFrontera (ligad. dinámica)
41. Framework
●
Conjunto de clases que se coordinan para realizar
una función
●
Para construir una aplicación hay que
subclasificarlas
●
El “main” usualmente incluido en el Framework
●
Diagramas de clases
− Necesidad de un estándar de representación gráfica
42. UML
●
Unified Modeling Language
●
Diagramas (condensación gráfica de estructuras de clases y
relaciones entre objetos y clases)
43. UML
●
Unified Modeling Language
●
Diagramas (condensación gráfica de estructuras de clases y
relaciones entre objetos y clases)