PARADIGMA ORIENTADO A OBJETOS Abstracción Encapsulamiento Modularidad Jerarquía Polimorfismo ...
Preview:
Citation preview
- 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