Title: ITESM Campus Cuernavaca Maestr
1ITESM Campus CuernavacaMaestría en Ciencias
ComputacionalesAmbientes de Programación
AvanzadaSesión 1
- Dr. Oscar Mayora Ibarra
- Teléfono Fax 329 7169 329 7168
- Emailomayora_at_itesm.mx
- WEB http//www.mor.itesm.mx/omayora
- WAP http//www.mor.itesm.mx/omayora/index.wml
- Asesoría Lunes 900 1000 A.M.
2Ambientes de Programación Avanzados
3Programa Sintético
- Módulo I Principios de POO y UML
- Evaluación Examen Escrito
- Módulo II Herramientas de Modelado con UML
- Evaluación Exposición sobre Modelado con UML del
proyecto final - Módulo III Programación Avanzada
- Evaluación Exposición de Tema
4Evaluación
5Referencias
- Grady Booch, Análisis y Diseño Orientado a
Objetos con aplicaciones. 2ª. Edición, Addison
Wesley. - Grady Booch, James Rumbaugh and Ivar Jacobson.
UML, El lenguaje unificado de modelado Addison
Wesley -
- Deitel Deitel, JAVA, How to Program Fourth
Edition, Prentice Hall -
- Patrick Naughton and Herbert Schildt, JAVA 2, The
Complete Java Reference, McGraw Hill,
6INTRODUCCIÓN
Complejidad y Software
7Complejidad
Cuánta Gente? Cuántos Recursos? Cómo colaborar?
8Complejidad inherente al software
- Deriva de 4 elementos
- Complejidad del dominio del problema
- Complejidad de gestión
- Complejidad Inherente a la flexibilidad
- Complejidad de caracterización del comportamiento
9Complejidad Inherente al SW
- Complejidad del dominio
- Los dominios pueden ser muy sofisticados.
- Desacoplamiento de impedancia entre usuarios y
desarrolladores. No hablan el mismo idioma !!
10Complejidad Inherente al SW
- Complejidad de gestión
- La tarea del equipo de desarrollo de SW es dar la
ilusión de simplicidad al usuario aunque se trate
de un sistema muy complejo
11Complejidad Inherente al SW
- Complejidad de flexibilidad
- Un equipo de desarrollo se puede ocupar de
prácticamente todos los bloques del proyecto sin
necesidad de ayuda de otros profesionales
12Complejidad Inherente al SW
- Complejidad de caracterización del comportamiento
- Cuando se afirma que un sistema se describe con
una función contínua, quiere decir que no puede
contener sorpresas ocultas... - ...En sistemas discretos cualquier cambio
externo puede afectar el estado interno de modo
más brusco. Parnas.
13Consecuencias de la complejidad ilimitada
- Entre más complejo es el sistema, mayor es el
riesgo de derrumbamiento total. - Gran inversión de tiempo y recursos humanos.
- Mayor planeación y mejor modelado para minimizar
el efecto del mantenimiento y la evolución.
14Atributos de un sistema complejo
- Sistemas altamente jerarquizados
- Varios subsistemas relacionados
- Interpretaciones ambiguas de los distintos
componentes - Identificar los componentes primitivos
- Sistemas casi descomponibles
- Sus partes no son totalmente independientes. Los
enlaces internos son más fuertes que los externos - Tienen patrones comunes
- Se componen de clases genéricas que se combinan
- Tienen su origen en sistemas simples
- Un sistema complejo diseñado desde 0 NO FUNCIONA
15Ordenando por Descomposición
- 1 Descomposición Algorítmica
- 2 Descomposición de Objetos
16Descomposición algorítmica
Automóvil
Sist. Elec.
Sist Mec.
Encendido
Luces
Motor
Carbura.
17Descomposición orientada a objetos
Automóvil
Sist. Eléctrico
Sist. Mecánico
Chasis
18Algorítmica VS Orientada a Objetos
- Enfatiza el orden de los eventos
- Utiliza bloques y módulos para representar
procesos - Su crecimiento y mantenimiento implican alta
complejidad
- Enfatiza los agentes que causan acciones
- Facilita el reuso de mecanismos comunes
- Son más resistentes al cambio
- Disminuye la complejidad
19Diseño de los Sistemas Complejos
- Arquitectura
- El propósito del diseño es crear una estructura
interna (arquitectura) clara y relativamente
simple sobre el sistema que se quiere
implementar. - Restricciones
- Satisfacer especificaciones funcionales
determinadas - Ajustarse a las limitaciones impuestas por el
medio - Respetar requisitos implícitos o explícitos sobre
rendimiento y uso de recursos - Satisfacer restricciones sobre las herramientas
disponibles para realizar el diseño
20Elementos de Modelos de Diseño
- Notación
- El lenguaje para expresar el modelo
- Proceso
- Las actividades que conducen a la construcción
ordenada de los módulos del sistema - Herramientas
- Los artefactos que ayudan para construir el
modelo de modo que éste pueda autoverificarse y
validarse
21En Resumen
- La complejidad del software es inherente a la
naturaleza del mismo. - La tarea del equipo de desarrollo de SW es la de
crear una ilusión de sencillez. - La complejidad toma a menudo formas de
jerarquías. - Los sistemas complejos evolucionan de formas
intermedias estables.
22En Resumen
- Existen factores limitantes de la cognición
humana que se pueden enfrentar mediante la
descomposición, abstracción y jerarquización. - Los sistemas complejos se pueden visualizar desde
el punto de vista de sus procesos o sus
componentes. - El diseño OO conduce intrínsicamente a una
descomposición de los sistemas y ofrece varias
notaciones y modelos para representarlos.
23Modelo Orientado a Objetos
24Antecedentes de la Programación Orientada a
Objetos
- Evolución de los Paradigmas de Programación
- Avances en Otras Disciplinas con Impacto en la
Tecnología de Objetos
25Paradigmas de Programación
- Programación Procedural
- Programación Orientada a Lógica
- Programación Orientada a Reglas
- Programación Orientada a Objetos
26Programación Procedural
- Programación Estructurada
- Separación de datos y procesos
- Algoritmos organizados en modo jerárquico
- Uso de estructuras de datos
- Desarrollo top-down''
27Programación Orientada a Lógica
- Entender relaciones entre entidades del programa
- Uso de enunciados lógicos para probar silogismos
que ayudan a la definición y solución de
problemas. - Cálculo de predicados de primer orden
- Razonamiento deductivo del tipo Modus Ponens
- Lisp - Prolog
28Programación Orientada a Reglas
- Colección de definiciones para describir el
comportamiento de un sistema ante un patrón
determinado - Utiliza condiciones If Then Else para
resolver problemas - Usa elementos de programación lógica y procedural
29Conceptos del POO Principales Entidades de un
programa OO
Clases
Objetos
Atributos
Métodos
Herencia
30Programación Orientada a Objetos
- Objeto Caja negra que envía y recibe mensajes
- Contiene código y datos encapsulados de modo
indivisible - Contra ejemplo C (funciones y estructuras)
- Se define a través de clases
- Se comunica a través de mensajes.
- Envío y/o recepción de mensajes
- Actúa a través de métodos
- Acciones contenidas en los mensajes
31Ejemplo 1 Suma de objetos a1 b2 cab
- Lenguaje No OO (p.ej. C) Lenguaje OO (p.ej.
Smalltalk)
Esto se lee Toma el objeto a que vale 1 y
mándale el mensaje con el argumento b que
a su vez vale 2 El objeto a recibe el mensaje
y realiza la operación de agregarse a sí mismo el
valor del argumento recibido. Se crea un nuevo
objeto, se le da el valor de 3 y se le asígna a
c.
Toma a que vale 1 y b que vale 2 Usa la
función aditiva del lenguaje y súmalos Toma el
resultado y ponlo en la variable c.
32Ejemplo 2 Suma de objetosLista de Nombres
- Lenguaje No OO (p.ej. C) Lenguaje OO (p.ej.
Smalltalk)
a List fromString Juan Pérez. b List
fromString Juan López. c a b
struct list ( ltdefinición de la estructura
listgt) list a, b, c a Juan Pérez b
Juan López c a b
Juan Pérez, Juan López
ERROR!!!!
33Ejemplo 3 Suma de Objetos
c
a
b
34Modelo de Objetos Fundamentos
- Abstracción
- Características esenciales del objeto en relación
a la perspectiva del observador - Encapsulamiento
- Oculta detalles de la implementación de un objeto
en diferentes niveles - Modularidad
- Fragmentación de las abstracciones en unidades
discretas que reducen la complejidad - Jerarquía
- Ordena y clasifica las abstracciones en función
de sus clases y partes de pertenencia
35Modelo de Objetos Elementos Secundarios
- Tipos
- Interacción de los datos en modo congruente
- Concurrencia
- Interacción simultánea de varios objetos
- Persistencia
- Conservación del estado de un objeto en el tiempo
y en el espacio
36Modelos de Objetos Otros Conceptos
- Herencia
- Definición de una clase en función de otra.
- Herencia Simple
- Heredar de un solo padre. P. Ej. JAVA
- Herencia Múltiple
- Hereder de más de un padre. P. Ej. C
37Modelos de Objetos Otros Conceptos
- Polimorfismo
- Propiedad de los objetos que pertenecen a una
única jerarquía de compartir una función común
que se comporta en modo diferente dependiendo del
objeto específico en donde la función será usada. - Elementos que comparten el mismo comportamiento /
interface pero son implementados en modo distinto - Compartir / Reutilizar código de alto nivel
38Ejemplo de Herencia y Polimorfismo
El Cálculo de Percepciones es distinto en cada
caso!!!
Clase Empleado
Clase Oficinista
Clase Destajista
Clase Comisionista
Clase Trabajador_Hora
39Modelos de Objetos Otros Conceptos
- Overloading (Sobrecarga)
- Uso del mismo Nombre para dos o más clases
Conceptualmente Relacionadas - En este caso la ambigüedad queda resuelta en base
a la información del contexto (signatura) - Polimorfismo paramétrico
40Resumiendo... Principales Entidades de un
programa OO
- Clase Concepto que encapsula datos y
procedimientos para describir una entidad del
mundo - Objeto Instancia de una clase. Definido a
partir de la clase - Atributo Características que definen el estado
del objeto - Método Las acciones que se realizan con los
objetos - Herencia Definición de una clase a partir de una
previamente conocida
41Resumiendo... Metodología orientada a objetos
para solucionar un problema.
- 1. Especificación del problema
- 2. Determinar la(s) Clase (s)
- 3. Definir el (los) método(s)
- 4. Definir los Objetos
- 5. Gráfico General
- 6. Programar la Solución