Professional Documents
Culture Documents
POOA Teoría 1. Introducción
POOA Teoría 1. Introducción
Tema 1. INTRODUCCIÓN
Tema 1. INTRODUCCIÓN - 1
ÍNDICE
1. Programación Orientada a Objetos
2. Plataforma de Desarrollo JAVA
3. Método de Desarrollo PUD
4. Dirigido por Casos de Uso
5. Lenguaje de Modelado UML
6. Iterativo e Incremental
7. Centrado en la Arquitectura MVC
8. Patrones de Diseño
Tema 1. INTRODUCCIÓN - 2
1. PROGRAMACIÓN
ORIENTADA A OBJETOS
BASES DE LA PROGRAMACIÓN (I):
• Abstracción: proceso mental de extracción de las
características esenciales de algo, ignorando los detalles
superfluos
• Encapsulación: proceso por el que se ocultan los detalles del
soporte de las características de una abstracción
• Modularización: proceso de descomposición de un sistema en un
conjunto de módulos (‘piezas’) poco acoplados (independientes) y
cohesivos (con significado propio)
Tema 1. INTRODUCCIÓN - 3
1. PROGRAMACIÓN
ORIENTADA A OBJETOS
BASES DE LA PROGRAMACIÓN (II):
• Jerarquización: proceso de estructuración por el que se produce
una organización (jerarquía) de un conjunto de elementos en grados
o niveles de responsabilidad, de incumbencia o de composición,
entre otros. Jerarquía de composición
Jerarquía de clasificación
Tema 1. INTRODUCCIÓN - 4
1. PROGRAMACIÓN
ORIENTADA A OBJETOS
EVOLUCIÓN DE LOS LENGUAJES DE PROGRAMACIÓN (I):
BASES CÓDIGO ENSAMBLADOR PROGRAMACIÓN
MÁQUINA DE ALTO NIVEL
Abstracción {0,1} Identificadores Subprogramas
Encapsulación Nula Nula Reglas de Ámbito
Modularización Nula Macros Subprogramas
Jerarquización Nula Nula Expresiones,
Registros y
Subprogramas
Tema 1. INTRODUCCIÓN - 5
1. PROGRAMACIÓN
ORIENTADA A OBJETOS
EVOLUCIÓN DE LOS LENGUAJES DE PROGRAMACIÓN (II):
BASES PROGRAMACIÓN PROGRAMACIÓN MODULAR
ESTRUCTURADA
Abstracción Estructuras de Espacios de nombres
Encapsulación Control de Flujo Privacidad en Módulos
de Ejecución
Modularización Módulos
Jerarquización Jerarquías de dependencia
cliente/servidor entre los
módulos
Tema 1. INTRODUCCIÓN - 6
1. PROGRAMACIÓN
ORIENTADA A OBJETOS
EVOLUCIÓN DE LOS LENGUAJES DE PROGRAMACIÓN (II):
BASES TIPOS ABSTRACTOS PROGRAMACIÓN
DE DATOS ORIENTADA A OBJETOS
Abstracción Vista Pública Herencia y Polimorfismo
Encapsulación Vista Privada =
Modularización TAD’s Clases
Jerarquización Jerarquías de composición Jerarquías de clasificación
y dependencia
OO = TAD’s + Herencia
Tema 1. INTRODUCCIÓN - 7
1. PROGRAMACIÓN
ORIENTADA A OBJETOS
ELEMENTOS DE LA POO (I):
Clase: descripción de los datos y de las operaciones que
describen el comportamiento de un cierto conjunto de
elementos homogéneos.
Ej. Clase Intervalo
- datos: extremos inferior y superior;
- operaciones: intersección, longitud, desplazar, …
Objeto: ejemplar concreto (instancia) de una clase, que responde
al comportamiento definido por las operaciones de la clase a la
que pertenece, adecuándose al estado de sus datos particulares.
Ej. Objetos de la clase Intervalo :
- constantes: (8,10), (-100,100),…
- variables: misHorasDeTrabajo, miPresiónArterial, …
Tema 1. INTRODUCCIÓN - 8
1. PROGRAMACIÓN
ORIENTADA A OBJETOS
ELEMENTOS DE LA POO (II):
Mensaje: invocación de una operación sobre un objeto. Un
objeto es el agente activo que lanza el mensaje y otro objeto es
el agente pasivo que recibe el mensaje. El objeto receptor del
mensaje debe contemplar dicha operación entre las definidas en
su clase.
Ej. Mensajes a objetos de la Clase Intervalo
- (8,10).longitud = 2; (-100,100).desplazar(3) => (-97,103),…
- misHorasDeTrabajo.interseccion(tusHorasDeTrabajo), …
Método: definición de una operación de una clase.
Ej. Métodos de la Clase Intervalo
- longitud: extremo superior menos extremo inferior;
- desplazar: acumular cantidad a ambos extremos;
Tema 1. INTRODUCCIÓN - 9
1. PROGRAMACIÓN
ORIENTADA A OBJETOS
ELEMENTOS DE LA POO (III):
Atributo: cada uno de los datos de una clase, y por tanto,
presente en todos los objetos de esa clase.
Ej. Atributos de la clase Intervalo
- extremos inferior y superior
Estado: conjunto de los valores de los atributos que tiene un
objeto, por pertenecer a una clase, en un instante dado.
Ej. Estados de objetos de la clase Intervalo
- 8 en el extremo inferior y 14 en el extremo superior de
presiónArterial;
- 9 en el extremo inferior y 18 en el extremo superior de
misHorasDeTrabajo;
Tema 1. INTRODUCCIÓN - 10
1. PROGRAMACIÓN
ORIENTADA A OBJETOS
ELEMENTOS DE LA POO (IV):
Herencia: transmisión de atributos y métodos de una clase a otra
clase.
Ej. A partir de la Clase Intervalo
- IntervaloCerradoCerrado [x,x], IntervaloAbiertoCerrado
(x,x],…
Polimorfismo: enlace dinámico de expresiones a clases y/o de
mensajes a métodos.
Ej. Objetos intercambiables de las clases Intervalo,
IntervaloCerradoCerrado, …
Tema 1. INTRODUCCIÓN - 11
1. PROGRAMACIÓN
ORIENTADA A OBJETOS
RELACIÓN DE LOS ELEMENTOS DE LA POO:
Una clase es la definición de los atributos y métodos que
describen el comportamiento de un cierto conjunto de objetos
homogéneos.
Un objeto es un ejemplar concreto de una clase que responde a
los mensajes correspondientes a los métodos de ésta,
adecuándose al estado de sus atributos.
La clase hija hereda los atributos y métodos de la clase padre y
se especializa añadiendo y/o redefiniendo atributos y métodos.
En el polimorfismo, el objeto activo sólo necesita conocer qué
mensajes puede aceptar el objeto pasivo, no qué clase de objeto
cree que es y, por tanto, qué método ejecuta en cada instante.
Tema 1. INTRODUCCIÓN - 12
1. PROGRAMACIÓN
ORIENTADA A OBJETOS
COMPARATIVA DE LA POO vs PROGRAMACIÓN ESTRUCTURADA:
PROGRAMACIÓN BASES DE LA POO
ESTRUCTURADA PROGRAMACIÓN
Registro + Funciones Abstracción, Encapsulación Clase
y Modularidad
Variable de Tipo Registro Abstracción, Encapsulación Objeto
Función Modularidad Método
Llamada a Función Abstracción Mensaje
Campo de un Registro Encapsulación Atributo
y Modularidad
Estado de una Variable Registro Encapsulación Estado
Registros de Campos Variables Abstracción y Modularidad Herencia
Punteros a Funciones Abstracción y Encapsulación Polimorfismo
Tema 1. INTRODUCCIÓN - 13
1. PROGRAMACIÓN
ORIENTADA A OBJETOS
SÍNTESIS DE LA POO:
“En vez de un procesador de celdas de memoria…
tenemos un universo de objetos de buen comportamiento
que cortésmente solicitan entre sí llevar a cabo diversos
deseos” [Ingalls. Byte,1981]
La Programación Orientada a Objetos es
un nuevo equilibrio entre procesos y datos
que aporta un enfoque antropomórfico
próximo al pensamiento humano
Tema 1. INTRODUCCIÓN - 14
1. PROGRAMACIÓN
ORIENTADA A OBJETOS
OBJETIVO DE LA POO (I):
Premisas: (Leyes de Lehman y Belady)
• Ley del Cambio Continuo: Un programa que se usa en un
ámbito del mundo real, necesariamente debe cambiar o
convertirse cada vez en menos útil
• Ley de la Complejidad Creciente: Debido a que los programas
cambian por evolución, su estructura se convierte en más
compleja a menos que se hagan esfuerzos activos para
evitar este fenómeno
Tema 1. INTRODUCCIÓN - 15
1. PROGRAMACIÓN
ORIENTADA A OBJETOS
OBJETIVO DE LA POO (II):
Implicaciones:
• El incremento de abstracción, encapsulación, modularidad y
jerarquización aumentan la compresión, la escalabilidad y la
flexibilidad del software
• El incremento de la comprensión , la escalabilidad y la
flexibilidad del software reduce los costes del mantenimiento del
software (correctivo, adaptativo y perfectivo)
• La reducción de los costes del mantenimiento del software
reduce drásticamente los costes del desarrollo del software
Tema 1. INTRODUCCIÓN - 16
2. PLATAFORMA DE
DESARROLLO JAVA
COMPUESTO POR:
• lenguaje de programación
• herramientas de desarrollo
JDK (Java Development Kit)
• máquina virtual
JVM (Java Virtual Machine)
• biblioteca estándar (logotipo)
Tema 1. INTRODUCCIÓN - 17
2. PLATAFORMA DE
DESARROLLO JAVA
LENGUAJE:
• imperativo: permite la asignación de valores a variables
• orientado a objetos: permite clases, herencia y polimorfismo
• concurrente: permite la ejecución paralela de varios procesos
P. Lógico
Prolog Parlog Vulcan Prolog++
P. Funcional
LISP Clean Haskell CLOS
P. Imperativo Ada95
Ada Smalltalk Eiffel
Pascal
C
Cobol Occam Objetive-C C++
ObjectPascal
P. Concurrente
P. Orientado a Objetos
Tema 1. INTRODUCCIÓN - 18
2. PLATAFORMA DE
DESARROLLO JAVA
HERRAMIENTAS DE DESARROLLO:
• javac: compila programas Java (*.java)
• java: ejecuta programas Java compilados (*.class)
• javadoc: generación automática de documentación (*.html)
• jar: creación de archivos para distribución (*.jar)
•…
Tema 1. INTRODUCCIÓN - 19
2. PLATAFORMA DE
DESARROLLO JAVA
MÁQUINA VIRTUAL (JVM):
• ficheros compilados (*.class)
no son código nativo (*.exe)
de una plataforma, son
bytecodes (≈ensamblador OO)
• interpreta los bytecodes
• existe una JVM por cada
plataforma
• permite ejecutar el mismo
programa en cualquier
plataforma
Tema 1. INTRODUCCIÓN - 20
2. PLATAFORMA DE
DESARROLLO JAVA
BIBLIOTECA:
• clases básicas del lenguaje (java.lang)
• estructuras de datos y utilidades (java.util),
• acceso a ficheros (java.io),
• interfaces gráficas de usuario (java.awt, javax.swing),
• acceso a redes (java.net) ,
• acceso a bases de datos (java.sql),
•…
Tema 1. INTRODUCCIÓN - 21
2. PLATAFORMA DE
DESARROLLO JAVA
DISTRIBUCIONES:
• Java SE Runtime Environment (JRE): incluye la máquina virtual y
la biblioteca; lo necesario para ejecutar aplicaciones.
• Java SE Development Kit (JDK): incluye al JRE y las herramientas
para desarrollar aplicaciones.
Tema 1. INTRODUCCIÓN - 22
2. PLATAFORMA DE
DESARROLLO JAVA
IMPLANTACIONES:
• SUN: http://java.sun.com/
• IBM: http://www.ibm.com/
•…
• Compiladores a código nativo:
GCJ: http://gcc.gnu.org/java/
• Compiladores de otros lenguajes para la plataforma Java:
Jruby: http://www.jruby.org/
Groovy http://groovy.codehaus.org/
Tema 1. INTRODUCCIÓN - 23
2. PLATAFORMA DE
DESARROLLO JAVA
EDICIONES:
• J2SE (Java2 Platform, Standard Edition): Versión usada en
ordenadores personales
• J2EE (Java 2 Platform, Enterprise Edition): Estándar para el
desarrollo de aplicaciones distribuidas multicapa, basada en
componentes
• J2ME (Java 2 Platform, Micro Edition): Entorno para
desarrollar aplicaciones en dispositivos con recursos limitados
como dispositivos móviles, software empotrado en
electrodomésticos, etc.
Tema 1. INTRODUCCIÓN - 24
2. PLATAFORMA DE
DESARROLLO JAVA
HISTORIA:
Año Plataforma Lenguaje Novedades
1995 JDK 1.02 Primera núcleo inicial
1996 JDK 1.1 edición
1998 JDK 1.2 Segunda clases anidadas, clases anónimas, …
2000 JDK 1.3 edición
Tema 1. INTRODUCCIÓN - 25
2. PLATAFORMA DE
DESARROLLO JAVA
CARACTERÍSTICAS POR EL LENGUAJE:
• Orientado a objetos: excepto en los tipos primitivos
• Concurrente: dispone de primitivas de sincronización para
aplicaciones concurrentes
• Fuertemente tipado: toda variable debe declararse con un tipo
y éste no se puede cambiar durante la ejecución
• Sencillo: basado en la sintaxis y semántica de C/C++, pero
eliminando las características complejas y propensas a errores:
aritmética de punteros, herencia múltiple, gestión de la
liberación de memoria, etc.
• De propósito general: no está orientado a un tipo de
aplicaciones particular
Tema 1. INTRODUCCIÓN - 26
2. PLATAFORMA DE
DESARROLLO JAVA
CARACTERÍSTICAS POR LA BIBLIOTECA:
• Dedicada a dominios: dispone de bibliotecas específicas
CARACTERÍSTICAS POR LA MÁQUINA VIRTUAL:
• Neutra frente a la arquitectura: ejecutable (x86, RISC, …)
• Portable: La misma aplicación se puede ejecutar en diferentes
sistemas operativos
• Dinámico: las clases se enlazan a medida que se necesitan sin
necesidad de re-compilar toda la aplicación
• Gestión automática de memoria: no es necesaria la liberación
explícita de memoria
• Robusto: chequeos en tiempo de compilación y de ejecución
Tema 1. INTRODUCCIÓN - 27
3. MÉTODO DE DESARROLLO
PUD
MÉTODO/PROCESO DE DESARROLLO SOFTWARE: conjunto
total de actividades necesarias para transformar los requisitos
de un cliente en un conjunto consistente de artefactos (código
+ documentación) que representan un producto software y
para transformar cambios en dichos requisitos en nuevas
versiones del producto software.
Ej. de Actividades:
• Captura de Requisitos, Análisis de Datos, Diseño de la
Interfaz, Programación de Módulos, Pruebas de Rendimiento,
…
Ej. de Procesos de Desarrollo Software:
• Cascada, Espiral, Top-Down, Bottom-Up, …
Tema 1. INTRODUCCIÓN - 28
3. MÉTODO DE DESARROLLO
PUD
PROCESO DE UNIFICADO DE DESARROLLO (PUD): proceso de
desarrollo software
• orientado a objetos,
• dirigido por casos de uso y riesgos,
• basado en el Lenguaje Unificado de Modelado (UML)
• centrado en la arquitectura,
• iterativo e incremental.
Tema 1. INTRODUCCIÓN - 29
4. DIRIGIDO POR CASOS DE
USO
CASO DE USO: descripción de un conjunto de secuencias de
acciones, incluyendo variaciones, que un sistema lleva a cabo y
que conduce a un resultado observable de interés para un actor
determinado.
ACTOR: un conjunto coherente de roles que los
usuarios/sistemas externos de los casos de uso desempeñan
cuando interaccionan con el sistema.
Tema 1. INTRODUCCIÓN - 30
4. DIRIGIDO POR CASOS DE
USO
Ej. Aplicación Web para la matrícula en la EUI:
• Actores:
– Alumno,
– Jefe de estudios,
–…
• Casos de Uso:
– Alumno: incorporar asignatura, generar solicitud, …
– Jefe de Estudios: establecer cupos por grupo, cerrar periodo de
matricula, …
• Funciones:
– Automatiza la solicitud a distancia de matriculas válidas;
– Automatiza el cálculo del coste de las matrículas;
–…
Tema 1. INTRODUCCIÓN - 31
5. LENGUAJE DE MODELADO
UML
LENGUAJE UNIFICADO DE MODELADO: lenguaje gráfico
estándar para visualizar, especificar, documentar y comunicar
sistemas basados en software.
Referencia básica: http://www.uml.org
Tutorial: Plataforma POOA
Resumen: http://www.holub.com/goodies/uml/index.html
Tema 1. INTRODUCCIÓN - 32
5. LENGUAJE DE MODELADO
UML
DIAGRAMAS DE CASOS DE USO:
• Muestra los distintos requisitos funcionales que se esperan
de una aplicación o sistema y cómo se relaciona con su
entorno (usuarios u otras aplicaciones)
Tema 1. INTRODUCCIÓN - 33
5. LENGUAJE DE MODELADO
UML
DIAGRAMAS DE CLASES:
• Muestra entidades del mundo real, elementos de análisis y
diseño o clases de implementación y sus relaciones;
• Muestra un ejemplo ilustrativo de objetos y sus enlaces
Pueden ser objetos en memoria, objetos en base de datos,
objetos de modelado…
Tema 1. INTRODUCCIÓN - 34
5. LENGUAJE DE MODELADO
UML
DIAGRAMAS DE SECUENCIA:
• Muestran como los objetos se intercambian mensajes a
lo largo del tiempo
Tema 1. INTRODUCCIÓN - 35
5. LENGUAJE DE MODELADO
UML
DIAGRAMAS DE COMUNICACIÓN:
• Muestran los enlaces e interacciones entre los objetos
Tema 1. INTRODUCCIÓN - 36
5. LENGUAJE DE MODELADO
UML
DIAGRAMAS DE ESTADOS:
• Muestra los estados y las transiciones entre los estados
dependiendo de los eventos que se producen
Tema 1. INTRODUCCIÓN - 37
5. LENGUAJE DE MODELADO
UML
DIAGRAMAS DE ACTIVIDAD:
• Muestra el flujo de datos o
el flujo de control
Tema 1. INTRODUCCIÓN - 38
5. LENGUAJE DE MODELADO
UML
DIAGRAMAS DE DESPLIEGUE:
• Muestra las partes físicas del sistema (PCs, ficheros,
directorios, servidores, …) y conectadas por líneas de
comunicaciones
Tema 1. INTRODUCCIÓN - 39
6. ITERATIVO E INCREMENTAL
Tema 1. INTRODUCCIÓN - 40
6. ITERATIVO E INCREMENTAL
Proyecto Tres en Raya. Una única iteración.
Tema 1. Introducción
Tema 2. Programación Estructurada
Tema 1. INTRODUCCIÓN - 41
6. ITERATIVO E INCREMENTAL
Proyecto Agenda. 1ª Iteración:
Tema 3. Programación Basada en Objetos.
Tema 1. INTRODUCCIÓN - 42
6. ITERATIVO E INCREMENTAL
Proyecto Agenda. 2ª Iteración:
Tema 4. Programación Orientada a Objetos.
Tema 1. INTRODUCCIÓN - 43
6. ITERATIVO E INCREMENTAL
Proyecto Agenda. 3ª Iteración:
Tema 5. Programación Modular.
Tema 1. INTRODUCCIÓN - 44
6. ITERATIVO E INCREMENTAL
Proyecto Agenda. 4ª Iteración:
Tema 6. Programación con Excepciones
Tema 1. INTRODUCCIÓN - 45
6. ITERATIVO E INCREMENTAL
Proyecto Agenda. 5ª Iteración:
Tema 7. Programación Parametrizada
Tema 1. INTRODUCCIÓN - 46
6. ITERATIVO E INCREMENTAL
Proyecto Agenda. 7ª Iteración:
Tema 9. Programación Concurrente
Ejecución Multihilo!!!
Tema 1. INTRODUCCIÓN - 47
6. ITERATIVO E INCREMENTAL
Proyecto Agenda. 9ª Iteración:
Tema 11. Programación con BBDD
Tema 1. INTRODUCCIÓN - 48
6. ITERATIVO E INCREMENTAL
Proyecto Agenda. 10ª Iteración:
Tema 12. Programación en Web
Tema 1. INTRODUCCIÓN - 49
6. ITERATIVO E INCREMENTAL
Proyecto Agenda. 11ª Iteración:
Tema 13. Programación de Sistemas Inteligentes
Tema 1. INTRODUCCIÓN - 50
7. CENTRADO EN LA
ARQUITECTURA MVC
ARQUITECTURA: conjunto de decisiones significativas acerca
de la organización de un sistema software, la selección de los
elementos estructurales a partir de los cuales se compone el
sistema, y las interfaces entre ellos, junto con su
comportamiento, tal y como se especifica en las
colaboraciones entre esos elementos, la composición de estos
elementos estructurales y de comportamiento en subsistemas
progresivamente mayores, y el estilo arquitectónico que guía
esta organización.
Tema 1. INTRODUCCIÓN - 54
7. CENTRADO EN LA
ARQUITECTURA MVC
JERARQUÍA EN MVC
• un controlador puede delegar
tareas en otros controladores;
• un controlador puede
controlar varios modelos y
vistas;
• una vista puede estar
compuesta de varias vistas;
• una vista puede no estar
asociada a ningún modelo;
• un modelo puede estar
compuesto por varios modelos;
Tema 1. INTRODUCCIÓN - 55
7. CENTRADO EN LA
ARQUITECTURA MVC
Ej. En un taller mecánico (de más de 100 personas):
• los modelos son grupos de mecánicos organizados
jerárquicamente: equipo de mecánica, equipo de chapa, …;
• las vistas son grupos de recepcionistas: equipo comercial,
equipo administrativo, …;
• los controladores son grupos de directores: director general,
director comercial, director financiero, …
Tema 1. INTRODUCCIÓN - 56
8. PATRONES DE DISEÑO
DEFINICIÓN: es una solución a un problema de diseño que ha
demostrado su efectividad resolviendo problemas similares
de forma recurrente y que, por tanto, es reusable en
diferentes problemas de diseño en distintas circunstancias.
Ejemplos:
• Tema 2: Singleton y Facade;
• Tema 4. Composite , Facade, Prototype, Observer y Visitor
• Tema 7: Iterator;
• Tema 10: Proxy;
• Tema 11: Abstract Factory
http://es.wikipedia.org/wiki/Patr%C3%B3n_de_dise%C3%B1o
Tema 1. INTRODUCCIÓN - 57
8. PATRONES DE DISEÑO
DESCRIPCIÓN DE UN PATRÓN DE DISEÑO:
• Nombre del patrón: nombre estándar del patrón por el cual
será reconocido en la comunidad.
• Motivación: Escenario de ejemplo para la aplicación del
patrón.
• Objetivo: ¿Qué problema pretende resolver el patrón?
• Estructura: Diagramas de clases oportunos para describir las
clases que intervienen en el patrón.
• Participantes: Enumeración y descripción de las entidades
que participan en el patrón.
• Colaboraciones: Explicación de las interrelaciones que se
dan entre los participantes.
•…
Tema 1. INTRODUCCIÓN - 58