Академический Документы
Профессиональный Документы
Культура Документы
CONTENIDOS
1. 2. 3. 4.
5.
6. 7.
Abstraccin Tipos de datos Tipos abstractos de datos Modularidad Reutilizacin Paradigmas y lenguajes Diseo estructurado vs. OO
Abstraccin
Supresin intencionada, u ocultamiento, de algunos detalles de un proceso o artefacto, con el objeto de destacar de manera ms clara otros aspectos, detalles o estructuras. Capacidad de centrarse en las caractersticas esenciales de las distintas partes de un sistema, ignorando sus propiedades accidentales. Permite dividir la informacin en componentes aislados que posteriormente se ensamblan para construir el todo. Limitacin de la capacidad humana para operar la complejidad: Ordenando el caos: divide et impera. En SW: Abstraccin Modularidad
Programacin Orientada a Objetos Tema 2: Modularidad
Abstraccin
Abedul Olmo Castao Pino Chopo Abeto
Haya
Abstraccin
Abstraccin aplicada:
Diferentes niveles: Nos centramos en los elementos ms grandes e importantes. Progresivamente: Tratamos volmenes de informacin menores que revelen ms detalles.
Diferentes tipos: Funcional o procedural, de Datos.
Abstraccin
Encapsulacin:
Proceso de almacenar en un mismo compartimento los elementos de una abstraccin que constituyen su estructura y su comportamiento [Booch96]
Tipos de Datos
Un tipo de dato es un conjunto de valores y un conjunto de operaciones definidas por sus valores. Tipo de dato = Representacin + Operaciones. Ejemplos:
Tipo de datos entero, operaciones de +,-,*,/. Tipo cadena, operaciones de concatenacin, subcadena, etc.
Los TADs permiten ampliar los tipos de datos definidos por el lenguaje de programacin. Un tipo de dato definido por el programador se denomina TAD. Un TAD es un tipo de datos que consta de datos y operaciones que se pueden realizar sobre esos datos. Los TADs ocultan la implementacin de las operaciones definidas por el usuario asociadas con el tipo de datos. La ocultacin de informacin de un TAD significa que poseen interfaces pblicos (operaciones que se pueden realizar), sin embargo, las implementaciones de esos interfaces son privados.
Programacin Orientada a Objetos Tema 2: Modularidad
TAD consta de :
TIPO: tipo (=cjto de objetos) que se est especificando FUNCIONES: signatura (tipo de los argumentos y resultado)
AXIOMAS: definicin implcita del valor de la funcin INVARIANTES: condicin booleana que debe mantenerse con exactitud
PRECONDICIONES
POSTCONDICIONES
10
TIPO Pila[X]
FUNCIONES poner: Pila[X] x X Pila[X] vacia: Pila[X] Boolean item: Pila[X] X new: Pila[X]
Modularidad
11
Propiedad que tiene un sistema que ha sido descompuesto en un conjunto de mdulos cohesivos y dbilmente acoplados [Booch96]
Alta cohesin:
Un mdulo con responsabilidades altamente relacionadas y que no hace una gran cantidad de trabajo.
Bajo acoplamiento:
Un mdulo que no depende de demasiados otros mdulos. Favorece:
Comprensin modular: Es posible entender un mdulo sin conocer los otros. Continuidad modular: Un cambio en la especificacin afecta slo a un mdulo o a unos pocos. Proteccin modular: El efecto de una situacin anormal producida en un mdulo afecta slo a ste o a unos pocos.
Modularidad
12
Programa modular: formado por un conjunto de mdulos. Mdulo: unidad bsica de descomposicin de un sistema software. Los mdulos deben ser lo ms independientes posibles. Un mtodo de construccin de software es modular si ayuda a producir sistemas software a partir de elementos autnomos interconectados por una estructura simple y coherente. La programacin modular trata de descomponer un programa en un pequeo nmero de abstracciones coherentes que pertenecen al dominio del problema y cuya complejidad interna esta oculta por el interfaz.
Programacin Orientada a Objetos Tema 2: Modularidad
Modularidad
13
Un mdulo se estructura mediante una interfaz y una implementacin. Esta compuesto por un conjunto de operaciones y atributos.
Interfaz
Primitivas de acceso
Seccin Privada
Atributos
Operaciones
Modularidad
14
Ocultacin de informacin:
Todos los mdulos deben seguir el principio de ocultacin de informacin. Una abstraccin de datos puede verse como que tiene dos caras:
Modularidad
15
Principio abierto-cerrado: Un mdulo se considera a la vez cerrado (terminado, til o activo) y abierto (cambios y modificaciones). No debe afectar a los dems mdulos.
Un mdulo est abierto si est disponible para ampliarlo. Un mdulo est cerrado si est disponible para su uso. Los dos objetivos son incompatibles con las tcnicas tradicionales:
o est abierto no se puede utilizar todava. o se cierra cualquier cambio provoca cambios en cadena.
Modularidad
EJEMPLO: Mdulo que define cuentas bancarias
Representacin NombreCli:String Codigo:String Saldo:Entero Interfaz reintegro() ingreso() verSaldo()
16
Un modulo incluye una estructura de datos junto con un conjunto de operaciones para manipularla.
NO
SI
Reutilizacin
17
Por qu el software no es como el hardware (catlogos de dispositivos que se combinan)? Por qu cada nuevo proyecto software arranca de la nada? Creciente importancia de los componentes en la industria del software: (COM, JavaBeans, ). Internet favorece la reutilizacin. La tecnologa OO har realidad en un futuro cercano el sueo de una industria basada en componentes.
Programacin Orientada a Objetos Tema 2: Modularidad
Reutilizacin
18
Reutilizacin
19
DISEO:
Difcil garantizar compatibilidad diseo-implementacin. Seguir un enfoque donde la diferencia entre mdulo diseo y mdulo de implementacin desaparece. Necesidad de generalidad en los componentes.
PATRONES DE DISEO:
Ideas aplicables a toda una gama de dominios. Un patrn propone una solucin para un problema de diseo.
Programacin Orientada a Objetos Tema 2: Modularidad
Reutilizacin
20
Obstculos:
Sndrome N.I.H. (Not Invented Here): Reaccin cautelosa frente a componentes nuevos. Coste adicional de aprendizaje. Econmicos: Se centran en los costes a corto plazo. Estrategias de las compaas software: Y si el cliente no vuelve a necesitarnos?.
Dificultades tcnicas:
Disear cdigo reutilizable es difcil. Hacemos las mismas cosas pero no de la misma forma. Difcil captura de las similitudes. Permitir adaptacin. La nocin correcta de mdulo debe reconciliar:
Paradigmas - Lenguajes
A lo largo del tiempo se han utilizado diferentes maneras de construir sistemas (paradigmas) persiguiendo parecidos objetivos. Paradigma de Construccin de un Sistema: Coleccin de conceptos que guan el proceso de construccin de un sistema, determinando su estructura. Estos conceptos controlan la forma en que pensamos y formulamos los sistemas. Un lenguaje de programacin refleja un paradigma:
PARADIGMA Imperativo Funcional Lgico Orientado a Objetos LENGUAJE COBOL, Pascal, C Lisp, Miranda, Haskel Prolog Smalltalk, Eiffel, C++, Java ELEMENTOS Algoritmos Funciones-Reglas If-Then Predicados-Reglas If-Then Clases y Objetos
21
Paradigmas - Lenguajes
La abstraccin es la clave para disear buen software. Los lenguajes de programacin de alto nivel permiten al programador abstraerse de la arquitectura de la mquina donde se ejecuta el software (de propsito general).
22
23
Acciones/ Funciones
Las tres fuerzas de la computacin
Objetos/ Datos
Procesadores
A) Unidades de descomposicin funcional Enfoque tradicional
B) Basndose en los principales tipos de datos Enfoque OO
Programacin Orientada a Objetos Tema 2: Modularidad
24
A C
Secuencia
B
Bucle
D
Condicional
25
EXTENSIBILIDAD
Funcin principal: Cima del sistema El programa principal es una propiedad voltil Sistemas reales no tienen cima Mejor la visin de un conjunto de servicios Centrado en la interfaz Primera pregunta: Que har el sistema? La arquitectura del software debe basarse en propiedades ms profundas. Ordenacin temporal prematura
Programacin Orientada a Objetos Tema 2: Modularidad
26
Inconvenientes de la descomposicin funcional: Se desarrollan elementos software para satisfacer necesidades especficas de otro elemento del nivel superior. Cultura del proyecto actual Las estructuras de datos son descuidadas. Funciones y datos deben jugar un papel complementario. Cuando un sistema evoluciona los datos son ms estables que los procesos.
REUTILIZACIN
27
28
29
Objeto
Los datos normalmente estn ocultos y nicamente son accesibles dentro del propio objeto
Algunas operaciones estn tambin ocultas, y representan servicios de utilidad dentro del propio objeto
30
31
Orientacin a Objetos
Desarrollo de software orientado a objetos : Definicin Mtodo de desarrollo de software que basa la arquitectura del sistema en mdulos deducidos de los tipos de objetos que se manipulan (en lugar de basarse en la funcin o funciones a las que el sistema est destinado a asegurar). Hay que centrar la atencin no sobre lo que HACE el sistema, sino principalmente sobre lo que ES el sistema, en trminos de datos, de componentes, en trmino de manejo de entidades, de reaccin a las solicitudes.
Programacin Orientada a Objetos Tema 2: Modularidad
32