paradigma orientado a objetos abstracción encapsulamiento modularidad jerarquía polimorfismo ...

31
PROGRAMACION ORIENTADA A OBJETOS

Upload: pedro-jaimez

Post on 07-Feb-2015

67 views

Category:

Documents


4 download

TRANSCRIPT

  • Diapositiva 1
  • Diapositiva 2
  • PARADIGMA ORIENTADO A OBJETOS Abstraccin Encapsulamiento Modularidad Jerarqua Polimorfismo Clases y Objetos Mensajes y Mtodos Herencia Sobrecarga de operadores y funciones
  • Diapositiva 3
  • QUE ES ORIENTACION A OBJETOS? Conjunto de disciplinas (ingeniera) que desarrollan y modelan software que facilita la construccin de sistemas complejos a partir de componentes. Segn Booch deben existir los siguientes elementos para ser un modelo O.O.: Abstraccin Modularidad Encapsulamiento Jerarqua Polimorfismo
  • Diapositiva 4
  • ABSTRACCION Capacidad para encapsular y aislar la informacin del diseo y ejecucin Es importante para comprender el complejo mundo. Propiedad que permite representar las caractersticas esenciales de un objeto sin preocuparse de las dems. Sirve para separar el comportamiento esencial de un objeto de su implementacin.
  • Diapositiva 5
  • ABSTRACCION MECANISMOS DE ABSTRACCION Estructuras de control Procedimientos Mdulos Tipos Abstractos de Datos TADs Objetos Definir una abstraccin es describir una entidad del mundo real y utilizarla en un programa. CLASE: Elemento clave de P.O.O., es una descripcin abstracta de un grupo de objetos donde cada uno se diferencia por su estado y posibilidad de realizar operaciones.
  • Diapositiva 6
  • ENCAPSULAMIENTO La encapsulacin sirve para separar la interface de una abstraccin y su implementacin. La encapsulacin esconde la implementacin del objeto que no contribuye a sus caractersticas esenciales. La encapsulacin da lugar a que las clases se dividan en dos partes: Interface: captura la visin externa de una clase, abarcando la abstraccin del comportamiento comn a los ejemplos de esa clase. Implementacin: comprende la representacin de la abstraccin, as como los mecanismos que conducen al comportamiento deseado.
  • Diapositiva 7
  • ENCAPSULAMIENTO Permite asegurar que el contenido de la informacin de un objeto esta oculto al mundo exterior. A no conoce lo que hace B. Permite dividir en mdulos un programa y estos mdulos se desarrollan mediante clases.
  • Diapositiva 8
  • MODULARIDAD Es la propiedad que tiene un sistema que ha sido descompuesto en un conjunto de mdulos cohesivos y vagamente conexos. Cada mdulo se puede compilar separadamente, aunque tengan conexiones con otros mdulos. En un diseo estructural, modularizacin comprende el agrupamiento significativo de subprogramas. En DOO, la modularizacin debe ceirse a la estructura lgica elegida en el proceso de diseo.
  • Diapositiva 9
  • COHESIN Y ACOPLAMIENTO Caractersticas no slo aplicables al enfoque orientado a objetos son: COHESIN. Un objeto tiene un alto nivel de cohesin si ejecuta una tarea sencilla y requiere poca interaccin con mtodos que se ejecutan en otros objetos. Es una extensin del concepto de ocultamiento de la informacin. Un objeto coherente debe hacer (idealmente) una sola cosa.
  • Diapositiva 10
  • COHESIN Y ACOPLAMIENTO Por esta razn, la inteligencia del sistema debe distribuirse de manera igualitaria entre las clases de una aplicacin. Como cada objeto conoce y acta sobre algunos pocos elementos (generalmente bien definidos y claros) Si una clase tiene una lista excesivamente larga de responsabilidades, tal vez debera considerarse su divisin en varias clases menores. ACOPLAMIENTO. Es una medida de la interconexin entre objetos. Indica en qu medida una clase utiliza atributos y/o mtodos de otra. ENTONCES Alta cohesin (funcionalidad bien delimitada) y bajo acoplamiento (limitada interdependencia funcional)
  • Diapositiva 11
  • MODULARIDAD Dividir un programa en componentes individualizados reduce en alguna manera su complejidad. C++ Se separan los mdulos interface de los mdulos con implementacin, estando los primeros en ficheros con extensin.h llamados header files, mientras que los segundos se almacenan en ficheros con extensin.c,.cc,.cp o.cpp. La dependencia entre ficheros se realiza a travs de la macro #include.
  • Diapositiva 12
  • MODULARIDAD
  • Diapositiva 13
  • Bertrand Meyer sugiere cinco criterios para juzgar la capacidad de mtodos de diseo para conseguir modularidad, y los relaciona al DOO: descomponibilidad: la facilidad con que un mtodo de diseo ayuda al diseador a descomponer un problema grande en problemas ms pequeos, hacindolos ms fcil de resolver. Componibilidad: el grado con el que un mtodo de diseo asegura que los componentes del programa (mdulos), una vez diseados y construidos, pueden ser reutilizados para crear otros sistemas. comprensibilidad la facilidad con la que el componente de un programa puede ser entendido, sin hacer referencia a otra informacin o mdulos. continuidad: la habilidad para hacer pequeos cambios en un programa y que se revelen haciendo los cambios pertinentes en uno o muy pocos mdulos. proteccin: una caracterstica arquitectnica, que reduce la propagacin de efectos colaterales, si ocurre un error en un mdulo dado
  • Diapositiva 14
  • JERARQUIA Es una clasificacin u ordenacin de las abstracciones. Por jerarqua denotamos el orden de relacin que se produce entre abstracciones diferentes. Los tipos de jerarqua ms tiles: Herencia (generalizacin/especializacin, padre/hijo, jerarqua del tipo "es un"...). Una clase (subclase) comparte la estructura o comportamiento definido en otra clase, llamada superclase. ESTRUCT. DE CLASES Herencia mltiple : Una clase comparte la estructura o comportamiento de varias superclases. Agregacin : Comprende relaciones del tipo "es parte de" al realizar una descomposicin. ESTRUCT. DE OBJETOS
  • Diapositiva 15
  • JERARQUIA DE CLASES Herencia: Relacin entre clases. Una clase comparte estructura y comportamiento en una o ms. Taxonoma de animales
  • Diapositiva 16
  • JERARQUIA DE CLASES Generalizacin /Especializacin La generalizacin es la relacin entre una clase y una ms clases especializadas de la misma clase. La clase de la que se est especializando se llama superclase y la especializada es la subclase. Los atributos y operaciones de un grupo de subclases corresponden a la superclase, stos son compartidos por todas las subclases. Las subclases heredan las caractersticas de la superclase. Toda instancia de una subclase, es instancia de la superclase. Relacin de Generalizacin: es-un un-tipo-de
  • Diapositiva 17
  • GENERALIZACION Toda subclase hereda todas las caractersticas de sus clases antecesoras y adems, sus propios atributos y operaciones. Las palabras que se escriben al lado de los tringulos de un diagrama se denominan discriminadores.
  • Diapositiva 18
  • GENERALIZACION
  • Diapositiva 19
  • JERARQUIA DE OBJETOS Agregacin: Agrupamiento fsico de estructuras relacionadas lgicamente. Es la relacin donde los objetos son componentes de otro objeto, que se asocia, y representa el ensamblaje completo. Un objeto se denomina compuesto si se compone de otros objetos. Relacion de Agregacin: parte-de tiene-un
  • Diapositiva 20
  • AGREGACION No tiene sentido utilizar la agregacin si no existen propiedades comunes de los objetos componentes a ser asociados en el objeto que los compone. La existencia de un objeto componente puede depender del objeto agregado del cul forma parte. Las partes pueden existir no fuera del agregado, y pueden no aparecer en muchos agregados. En otros casos los objetos componentes tienen una existencia dependiente.
  • Diapositiva 21
  • AGREGACION Si dos objetos estn fuertemente acoplados se llama agregacin, si por el contrario, son independientes pero pueden estar relacionados, se llama asociacin. La agregacin puede ser: por contenido fisico (CarroMotor,Chasis,Ruedas,Transmision) por contenido Conceptual (CompaaDepartamentoSeccion)
  • Diapositiva 22
  • JERARQUIA C++ Ofrece mucha flexibilidad, pudiendo disponer de tres compartimentos en cada clase: -Privado : declaraciones accesibles slo a la clase (completamente encapsulado) #Protegido: declaraciones accesibles a la clase y a sus Subclases. +Pblico : declaraciones accesibles a todos los clientes. Adems de estos tres tipos, soporta la definicin de clases cooperativas a las que se les permite acceder a la parte privada de la implementacin. Estas clases se denominan friends.
  • Diapositiva 23
  • POLIMORFISMO Propiedad no fundamental. Es la posibilidad de que una entidad tome muchas formas. Ej. Mamiferos -> COMER Permite que una misma funcin se comporte de diferente forma segn sea la clase sobre la que se aplica sin importar si es una derivacin o extensin de clases. La llamada a una misma operacin puede invocar a mtodos distintos.
  • Diapositiva 24
  • POLIMORFISMO Dicho de otra manera, puede haber implementaciones diferentes (con la misma semntica) para una misma operacin. Deriva de la propiedad, anterior a POO, de que se invocara a un subprograma u otro segn el tipo de los parmetros.
  • Diapositiva 25
  • POLIMORFISMO Requiere ligadura tarda o postergada (dinmica) -> solo en L.P.O.O., es decir, no puede determinar la direccin del cdigo hasta el momento de la ejecucin. El compilador asegura que la funcin existe y verifica los tipos de argumentos y el valor del retorno pero NO conoce el cdigo exacto a ejecutar. Se inserta un segmento especial de cdigo que calcula la direccin en tiempo de ejecucin
  • Diapositiva 26
  • CARACTERISTICAS DE LOS L.P.O.O. Tipificacin Estricta (fuerte) Declarar el tipo de informacin que puede contener una variable. Los errores se detectan durante el diseo e implementacin NO en la ejecucin. Encapsulamiento Compilacin Incremental Se crea e implementa en modo sistemtico. Genericidad Las clases parametrizadas (plantillas templates) Sirve para soportar reusabilidad -> son elementos genricos.
  • Diapositiva 27
  • OTRAS CARACTERISTICAS Paso de Mensajes Paso bidimensional de mensajes entre mdulos, es decir, pasar seales entre mdulos sin pasar ningn dato. Polimorfismo Los L.P.O.O. Permiten operaciones con igual nombre. Excepciones Poder detectar, informar y manejar condiciones excepcionales utilizando construcciones del lenguaje. Concurrencia Creacin de procesos paralelos independientes del sistema operativo.
  • Diapositiva 28
  • OTRAS CARACTERISTICAS Persistencia Los objetos han de poder permanecer despus de la ejecucin del programa. Datos compartidos Los mdulos se deben poder comunicar mediante memoria compartida, adems del paso de mensajes OTRAS PROPIEDADES Concurrencia Genericidad Persistencia Manejo de excepciones
  • Diapositiva 29
  • OTROS CONCEPTOS Tipificacin Esttica (L.P.O.O. Hbridos) Tipificacin Dinmica (L.P.O.O. Puros) Ligadura temprana o anterior = ESTATICA, manejada por los compiladores. El compilador genera una llamada a un nombre especfico de funcin y el enlazador (linker) resuelve la llamada a la direccin absoluta del cdigo. Ligadura tarda o postergada = DINAMICA, manejada por los interpretes y L.P.O.O.
  • Diapositiva 30
  • OTROS CONCEPTOS En Lenguajes Clsicos: la modularizacin se centra en los subprogramas (funciones, procedimientos y subrutinas). En L.O.O. se resuelve a travs de TADs, es decir, donde se empaquetan fsicamente las clases y objetos de la estructura lgica.
  • Diapositiva 31
  • OTROS CONCEPTOS Acoplamiento : Exige independencia de mdulos. Cohesin : Cada mdulo debe realizarse con una sola funcin relacionada con el problema. Describe la naturaleza de las interacciones dentro de un modulo de sw. Un modulo cohesivo solo hace (idealmente) una cosa. Booch -> MODULARIDAD: Propiedad de un sistema que ha sido descompuesto en un conjunto de mdulos cohesivos y debilmente acoplados