modular i dad

Download Modular i Dad

Post on 19-Oct-2015

7 views

Category:

Documents

1 download

Embed Size (px)

TRANSCRIPT

  • Programacin Orientada a Objetos

    Tema 2: Modularidad

    1

    Modularidad:

    Tipos abstractos de datos

    TEMA 2

  • Programacin Orientada a Objetos

    Tema 2: Modularidad

    2

    CONTENIDOS

    1. Abstraccin

    2. Tipos de datos

    3. Tipos abstractos de datos

    4. Modularidad

    5. Reutilizacin

    6. Paradigmas y lenguajes

    7. Diseo estructurado vs. OO

  • Programacin Orientada a Objetos

    Tema 2: Modularidad

    3

    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

    4

    Abstraccin

    Arbol

    - altura

    - tipo de madera

    - tipo de hoja

    - tipo de fruto

    Castao

    Olmo

    Abeto

    Chopo

    Abedul

    Haya

    Pino

    Persona

    DNI

    Nombre

    Edad

    calcularEdad()

  • Programacin Orientada a Objetos

    Tema 2: Modularidad

    5

    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

  • Programacin Orientada a Objetos

    Tema 2: Modularidad

    6

    Abstraccin

    Encapsulacin:

    Proceso de almacenar en un mismo

    compartimento los elementos de una

    abstraccin que constituyen su estructura y su

    comportamiento [Booch96]

  • Programacin Orientada a Objetos

    Tema 2: Modularidad

    7

    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.

  • Programacin Orientada a Objetos

    Tema 2: Modularidad

    8

    Tipos Abstractos de Datos

    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

    9

    Un 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

    Tipos Abstractos de Datos

  • Programacin Orientada a Objetos

    Tema 2: Modularidad

    10

    Ejemplo TAD Pila

    TIPO Pila[X]

    FUNCIONES

    poner: Pila[X] x X Pila[X]

    vacia: Pila[X] Boolean

    item: Pila[X] X

    new: Pila[X]

    AXIOMAS

    Para x: T, s: Pila[T];

    item(poner(s,x)) = x

    vacia(new)

    not vacia(poner(s,x))

    PRECONDICIONES

    item (s:Pila[T]) requiere not vacia(s)

    Tipos Abstractos de Datos

  • Programacin Orientada a Objetos

    Tema 2: Modularidad

    11

    Modularidad

    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.

    Los mdulos se comunican mediante interfaces bien definidas.

  • Programacin Orientada a Objetos

    Tema 2: Modularidad

    12

    Modularidad

    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

    13

    Modularidad

    Un mdulo se estructura mediante una interfaz y una

    implementacin.

    Esta compuesto por un conjunto de operaciones y

    atributos.

    Primitivas de

    acceso

    Atributos Operaciones Seccin

    Privada

    Interfaz

  • Programacin Orientada a Objetos

    Tema 2: Modularidad

    14

    Modularidad

    Reglas para obtener mdulos:

    Unidades modulares:

    El lenguaje debe proporcionar estructuras modulares con las cuales se puedan describir las diferentes unidades.

    POO Clases.

    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:

    Interfaz: operaciones que definen el comportamiento (cliente)

    Implementacin (programador)

  • Programacin Orientada a Objetos

    Tema 2: Modularidad

    15

    Modularidad

    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.

  • Programacin Orientada a Objetos

    Tema 2: Modularidad

    16

    Representacin

    NombreCli:String

    Codigo:String

    Saldo:Entero

    Operaciones

    reintegro()

    ingreso()

    verSaldo()

    calculaIntereses()

    Interfaz

    reintegro()

    ingreso()

    verSaldo()

    NO SI

    EJEMPLO: Mdulo que define cuentas bancarias

    Un modulo incluye una

    estructura de datos junto con

    un conjunto de operaciones

    para manipularla.

    Modularidad

  • Programacin Orientada a Objetos

    Tema 2: Modularidad

    17

    Reutilizacin

    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

    18

    Reutilizacin

    Beneficios esperados de la reutilizacin:

    CONSUMIR elementos reutilizables:

    Oportunidad (se reduce el tiempo de desarrollo).

    => Mejora la productividad.

    Disminuye el esfuerzo del mantenimiento.

    Aumenta fiabilidad.

    Aumenta eficiencia.

    PRODUCIR elementos reutilizables:

    Inversin: preservar la experiencia de los mejores desarrolladores.

    Si un elemento software se utilizar en muchos proyectos es rentable invertir en mejorar su calidad.

    Consumir antes de producir

  • Programacin Orientada a Objetos

    Tema 2: Modularidad

    19

    Reutilizacin

    Qu debemos reutilizar?

    PERSONAL:

    La experiencia previa ayuda en el nuevo desarrollo.

    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

    20

    Reutilizacin

    Por qu no es comn la reutilizacin? Naturaleza repetitiva de la programacin (ordenar, buscar, recorrer, ...)

    Cuntas veces en los ltimos 6 meses has