Vous êtes sur la page 1sur 22

Universidad Tecnolgica de El Salvador Escuela de Ciencia y Tecnologa Estndares de programacin/Optimizacin INGENIERIA DE SOFTWARE ORIENTADA A OBJETOS

Tema:

El Modelo de Objetos.
Introduccin.

Modelo de Objetos: captura la estructura esttica del sistema, mostrando: Objetos Relaciones entre objetos Atributos Operaciones Es el ms importante, puesto que el sistema se construye alrededor de los objetos. Conceptos, notacin y ejemplos. Objetos y clases. Objeto: Concepto, abstraccin o cosa con fronteras definidas y significado para nuestro problema. Permite una mejor comprensin del mundo y proporciona la base para una implementacin sobre el ordenador. No existe una representacin exacta. Todos los objetos tienen una identidad y son distinguibles unos de otros Clase: Describe grupos de objetos con propiedades (atributos) similares, comportamiento (operaciones) comunes, relaciones con otros objetos y semntica comn. Cada objeto sabe cul es su clase, ya que es una instancia de la misma. Elemento esencial para la abstraccin y generalizacin.

Diagrama de objetos. Notacin grfica para modelar los objetos, clases y sus relaciones. Dos clases de diagramas: De clases De objetos (instancias) Diagrama de clases: esquema, patrn o plantilla para describir muchos casos posibles de datos. Describe clases de objetos. Diagrama de objetos: describe cmo se relacionan un grupo particular de objetos entre s. Notacin de clases y objetos.

Atributos. Los atributos presentan las siguientes caractersticas: Valor de un dato dentro de un objeto. Cada atributo tiene un valor para cada objeto. El nombre de un atributo es nico dentro de una clase. Debera ser un dato puro, no un objeto (no tiene identidad): si un objeto necesita otro objeto habr que modelarlo como asociacin. Adems del nombre podemos especificar el Tipo y el Valor por defecto. Los identificadores de objetos explcitos no se necesitan en el Modelo de Objetos. Notacin de atributos.

Operaciones y Mtodos. Funcin o transformacin que se aplica a o por los objetos en una clase. Tienen un objeto destino como argumento implcito (el objeto actual). Polimorfismo: la misma operacin puede aplicarse a clases diferentes dentro de una jerarqua de herencia. Mtodo: implementacin de una operacin para una clase. Las operaciones con mtodos en varias clases deben compartir la misma signatura (tipos de sus argumentos y valor que devuelven). Notacin de Operaciones y Mtodos.

Notacin para las clases.

Enlaces y Asociaciones. Enlace: conexin fsica o conceptual entre objetos. Asociacin: grupo de enlaces con la misma estructura y semntica comn. Sentido de una asociacin: Inherentemente son bidireccionales. directa (forward) e inversa (inverse). Implementacin comn en los lenguajes de programacin mediante punteros o referencias, aunque en la fase de modelizacin no es recomendable esta prctica. Las asociaciones pueden ser binarias, ternarias o de rdenes superiores. Los nombres de las asociaciones son opcionales en la notacin (se escriben en cursiva). Ejemplo de Enlace y Asociacin:

Multiplicidad. Especifica cuntos objetos de una clase pueden relacionarse con un nico objeto de una clase asociada. Se especifica mediante: un subconjunto (posiblemente infinito) de enteros no negativos: 0..n, o bien uno o varios intervalos no conexos: 1..4, 7. No debemos preocuparnos de ajustar la multiplicidad demasiado pronto en nuestro Modelo de Objetos. En los Diagramas de Objetos la multiplicidad se especifica mediante smbolos especiales en los extremos de las lneas de las asociaciones.

Atributos de los enlaces. Propiedades de los enlaces de una asociacin. Opcionales en los enlaces uno-a-uno y uno-a-muchos. Obligatorios en los enlaces muchos-a-muchos.

Modelando una asociacin como una clase. Adems de los atributos de un enlace, permite aadir un nombre y operaciones. Son tiles cuando: Los enlaces pueden participar en asociaciones con otros objetos. Los enlaces estn sujetos a operaciones.

Roles. Rol: uno de los extremos de una asociacin. Nombre de Rol: nombre que identifica de forma nica el final de una asociacin. Atributo derivado cuyo valor es un conjunto de objetos relacionados. Deben ser nicos en las asociaciones de una clase. Suelen aparecer como nombres en los enunciados de los problemas. En relaciones n-arias: un rol en cada extremo. Proporcionan una forma de ver las asociaciones como recorrido desde un objeto hacia otro conjunto de objetos. Su uso es opcional. A veces resulta ms claro su uso que los nombres de las asociaciones. Necesarios en las relaciones entre objetos de la misma clase, o cuando existe ms de una asociacin entre el mismo par de clases.

Ordenacin.

Se utiliza en la parte muchos de una asociacin en la que los objetos deben estar ordenados.

Cualificadores. Asociacin cualificada: relaciona dos clases mediante un cualificador. Puede considerarse como un tipo de asociacin ternaria. Cualificador: atributo especial que puede reducir la multiplicidad de una asociacin. Pueden utilizarse en asociaciones uno a muchos o muchos a muchos. Distinguen conjuntos de objetos en el extremo "muchos" de la asociacin. Mejora la semntica y aumenta la visibilidad de caminos de navegacin. Se representa mediante un cuadro en el extremo ms prximo a la clase a la que cualifica. Ejemplo: directorio + nombre de archivo. Notacin de cualificacin: 1) Un directorio contiene ms de un archivo.

El nombre del directorio ms el nombre del archivo en el directorio, identifican de forma nica al archivo,

2) otro ejemplo realizando ahora agrupamientos.

Agregacin. Relacin parte-todo o parte-de: el ensamblaje se relaciona con sus componentes. Verifica las propiedades transitiva y antisimtrica. Tambin es comn la agregacin recursiva. En caso de duda, utilizar una asociacin ordinaria. Preguntas tiles para identificar agregaciones: Se puede utilizar la frase parte de? Se propagan algunas operaciones del todo a las partes de forma automtica? Se propagan algunos valores de los atributos del todo a alguna o todas de las partes? Existe una asimetra intrnseca en la asociacin, por la cual un objeto est subordinado a otro (la eliminacin del todo implica la de las partes)? Notacin de agregacin: Agregados fijos: estructura fija, con el nmero y tipos de subpartes predefinidos.

Agregados variables: tienen un nmero finito de niveles, pero el nmero de partes vara.

Agregados Recursivos. Agregados recursivos: contienen, directa o indirectamente, un caso de la misma clase.

Propagacin de las Operaciones. Aplicacin automtica de una operacin a una red de objetos cuando se aplica la operacin a un objeto inicial.

La propagacin de una operacin a las partes es un buen indicador de agregacin.

Generalizacin Y Herencia. Generalizacin: relacin entre una clase (superclase) y una o ms versiones refinadas de ella (subclases). Relacin "es-un". Las subclases heredan las caractersticas, atributos y operaciones de su superclase. Una instancia de una subclase es una instancia de sus clases antecesoras o ascendientes. Distincin entre generalizacin y herencia:

10

Generacin: relacin entre clases. Herencia: mecanismo para compartir caractersticas. Ascendientes y descendientes: generalizacin en mltiples niveles. Discriminador: atributo de tipo enumerado, que indica la propiedad del objeto que se est abstrayendo para una relacin de generalizacin. Solo debera discriminarse una propiedad a la vez. Fichero: Contenido: de texto, binario, de datos. Acceso: secuencial, directo, indexado. Carcter: ejecutable, no ejecutable. Generalizacin como extensin y restriccin: Una instancia de una clase es una instancia de todas sus clases ascendientes y no puede omitir o suprimir un atributo de sus ascendientes. Una subclase puede aadir nuevas caractersticas: extensin. Una subclase puede redefinir una caracterstica de sus ascendientes: restriccin. Por ejemplo: limitar los valores en un rango menor (crculo es una elipse de a = b) Agregacin vs. Generalizacin. La agregacin relaciona instancias (relacin y). La generalizacin relaciona clases (relacin o). Notacin de generalizacin y herencia.

11

Redefinicin (override). Una subclase reemplaza una caracterstica de su superclase definiendo una caracterstica con el mismo nombre. Motivos para redefinir: Especificar un comportamiento que dependa de la subclase. Aplicar de forma ms rigurosa las especificaciones de una caracterstica. Mejorar el rendimiento. No se debe reemplazar la signatura de una caracterstica. Debe preservar: Tipos de los atributos. Nmero y tipos de argumentos de funciones. Tipo del valor devuelto por una operacin.

12

Redefinir operaciones por: Extensin. Restriccin. Optimizacin. Conveniencia. Reglas prcticas: Todas las operaciones de consulta y actualizacin se heredan por todas las subclases. Las operaciones de actualizacin que modifiquen atributos o asociaciones restringidas, deben mantener la misma restriccin. Las operaciones comportamiento. heredadas se pueden refinar aadiendo un nuevo

Clases abstractas. Las clases abstractas sirven para definir un comportamiento y/o estructura comn a un conjunto de subclases. Una clase abstracta no es instanciable (no existen objetos de esa clase). Sin embargo, sus subclases pueden ser clases concretas (que s son instanciables).

13

Organizan caractersticas comunes de varias clases (a). Pueden definir el protocolo para una operacin sin proporcionar un mtodo correspondiente (operacin abstracta). Una clase concreta no puede contener operaciones abstractas. La naturaleza abstracta de una clase es siempre provisional.

14

Herencia Mltiple. Permite a una clase tener ms de una superclase, y heredar las caractersticas de todos sus padres. Las principales ventajas son:

15

Una mayor potencia a la hora de definir nuevas clases. Oportunidades adicionales de reutilizacin. Acercamiento a la forma natural de pensar. Ejemplo: (El tringulo relleno, significa que las clases no son disjuntas).

La desventaja se encuentra en los problemas de implementacin (por ejemplo, la herencia repetida de C++). Clase vnculo (join): clase con ms de un padre. Herencia mltiple accidental. Un instructor es inherentemente Profesor y Alumno, cmo modelar un Profesor de una Universidad que recibe clases en otra? Resolucin de H. mltiple:

16

Caractersticas De Clase. Las clases pueden ser consideradas tambin como Metaobjetos. Atributos de clase: Describen un valor comn para todos los objetos de la clase. Permiten almacenar informacin que puede usarse como valor por defecto en la instanciacin. Permiten almacenar informacin sobre las instancias de la clase.

Operaciones de clase: Operacin que tiene lugar sobre atributos de la clase. Se invoca sobre la clase y no sobre una instancia concreta. Ejemplo: new. o Smalltalk: x:= Dictionary new o C++: en la declaracin del objeto se llama al constructor de la clase Ejemplo de caractersticas de clase.

17

Claves Candidatas. Una clave candidata es un conjunto mnimo de atributos que identifican un objeto o enlace. El identificador de objeto (OID) es siempre una clave candidata. Es un concepto lgico muy utilizado en el mundo de los SGBDR. Se denotan en los diagramas de clases mediante corchetes.

18

Restricciones. Es una relacin funcional entre entidades (clase, objeto, atributo, enlace o asociacin) dentro del Modelo de Objetos que limita los valores que la entidad puede tomar.

19

Restricciones sobre enlaces:

Restricciones generales. Se expresan mediante lenguaje natural o ecuaciones. Se denota mediante una lnea de puntos entre las clases implicadas y con la descripcin entre llaves. Objetos, enlaces y atributos derivados. Un objeto derivado se define como una funcin de uno o ms objetos. Es redundante, pero se introduce en el Modelo para facilitar la comprensin. Tambin existen enlaces y atributos derivados.

20

Modelo De Datos Vs Modelo De Objetos. Una BD se desarrolla mediante un Modelo de Datos. 1) Se construye el Modelo de Datos sobre el dominio de la aplicacin. 2) Se transforma del Modelo de Datos en un Diseo de la BD mediante la aplicacin de una serie de transformaciones estndar (normalizacin). Un Sistema de Objetos se construye modelando mediante tcnicas diferentes, pues las tcnicas del Modelo de Datos son bastante limitadas para soportar el Modelo de Objetos. Consejos prcticos. No comenzar construyendo diagramas de clases; primero, es necesario comprender el problema. Intentar mantener el Modelo sencillo.

21

Seleccionar con cuidado los nombres. No introducir punteros o referencias a otros objetos como atributos. Intentar evitar asociaciones n- arias. No intentar establecer el grado de multiplicidad perfecto al principio. No introducir atributos de enlace dentro de la clase. Utilizar asociaciones cualificadas donde sea posible. Intentar evitar generalizaciones profundamente anidadas. Intentar asociaciones uno a uno. No se sorprenda si su modelo requiere una revisin. Documentar siempre los Modelos de Objetos.

22