Você está na página 1de 67

Teora de Objetos

Ing. Luis Zuloaga Rotta

Definicin de Objeto
Todo aquello a lo que podemos reconocerle una identidad, un estado y un comportamiento. Es una coleccin de elementos de datos junto con las funciones asociadas para operar sobre ellos y para comunicarse con otros objetos.

Tipos de Objetos

Concretos: Persona-Carro-PC

Roles: Doctor-Propietario-Maestro
Relacional: Sociedad-Hijo-Matrimonio Eventos: Venta-Compra-Arribo Exponibles: Icono-Window-Imagen-Men

Datos y funciones
Dentro de los objetos residen los datos as como las funciones o mtodos que operan sobre ellos. Los datos y las funciones asociados se dice que estn encapsulados y ocultos; si se desea modificar los datos de un objeto se debe conocer exactamente cuales son las funciones que interactan con los mismos ya que ninguna otra funcin puede acceder a ellos.

Estructura interna de un Objeto


Atributos (datos o valores) Operaciones (mtodos o servicios)
Los atributos describen el estado del objeto. Un atributo consta de dos partes: un nombre de atributo y un valor de atributo. Los mtodos describen el comportamiento asociado a un objeto. Representan las acciones que pueden realizarse por o sobre un objeto.

Ejemplos de Objetos
Desde el punto de vista informtico los objetos son tipos abstractos de datos (tipos que encapsulan datos y funciones que operan sobre esos datos). Ejemplos de objetos:
Numero racional
Dato (valor actual) Operaciones (sumar, multiplicar, )

Vehculo
Datos (velocidad, kilometraje, posicin, precio,) Operaciones (acelerar, frenar, parar, )

Avin
Datos (fabricante, modelo, matricula, capacidad, ) Operaciones (aterrizar, despegar, volar, )

Conjunto
Dato (numero elementos) Operaciones (adicionar, quitar, visualizar, )

Caractersticas de los Objetos


Se agrupan en tipos llamados clases. Tienen datos internos que definen su estado actual. Soportan la ocultacin de datos. Pueden heredar propiedades de otros objetos. Pueden comunicarse con otros objetos pasando mensajes. Tienen mtodos que definen su comportamiento.

Clases
Una clase es la descripcin de un conjunto de objetos; consta de datos y mtodos que resumen caractersticas comunes de un conjunto de objetos. Cada vez que se construye un objeto a partir de una clase estamos creando lo que se llama una instancia de esa clase.
Ejec105 : Maleta Viaj325: Maleta

Cobr2154 : Maleta

Est1235: Maleta

Maleta
ATRIBUTOS
Denominacion Color Precio Capacidad Abrir ( ) Cerrar ( ) Calcular peso ( )

OPERACIONES

Representacin grfica de una Clase (Notacin de Ege)


Un objeto se dibuja como una caja rectangular. La caja se etiqueta con el nombre del objeto y representa el lmite o frontera entre el interior y el exterior de un objeto. Los campos y funciones miembro en el interior de la caja estn ocultos al exterior (encapsulados). El acceso a las caractersticas de los miembros (datos y funciones) es posible a travs del interfaz del objeto

NOMBRE CLASE ATRIBUTOS


(DATOS MIEMBRO)

OPERACIONES
(FUNCIONES MIEMBRO)

Propiedades fundamentales
Sirven para definir a un objeto de modo inequvoco: una identidad, un estado, y un comportamiento (que depende del estado).
PLANCHA

nroserie = 23456A tipo = vapor color = rosada estado = desenchufada enchufar( ) regular_temperatura( ) flujo_vapor( )

Implementacin de una Clase en Java

Identidad
Es la propiedad que diferencia un objeto de otro similar. En esencia la identidad de un objeto caracteriza su propia existencia. La identidad hace posible distinguir cualquier objeto sin ambigedad e independientemente de su estado.

Esto permite, entre otras cosas, la diferenciacin de dos objetos que tengan atributos idnticos.

Estado
Agrupa los valores de todos los atributos de un objeto en un momento dado, en donde un atributo es una pieza de informacin que califica el objeto contenedor.
El estado de un objeto, en un momento dado, se corresponde con una seleccin determinada de valores a partir de valores posibles de los diversos atributos.

un AUTO
Audi azul 25000 US$ 2010 1200cc nuevo

AUTO
modelo color precio ao motor estado

un AUTO
Fiat plateado 5500 US$ 1990 1200cc viejo

Comportamiento
Los datos describen la abstraccin de las caractersticas individuales que poseen todos los objetos. Las operaciones cambian el objeto (su comportamiento) de alguna forma, es decir, cambian valores de uno o ms atributos contenidos en el objeto. Aunque existen gran nmero de operaciones que se pueden realizar sobre un objeto, generalmente se dividen en tres grandes grupos:
Operaciones que manipulan los datos de alguna forma especfica (aadir, borrar, cambiar formato, ) Operaciones que realizan un clculo o proceso Operaciones que comprueban un objeto frente a la ocurrencia de algn evento de control.

Mtodos y mensajes
Los procedimientos y funciones, denominados mtodos, residen en el objeto y determinan cmo actan los objetos cuando reciben un mensaje. Un mensaje es la accin que hace un objeto. Un mtodo es el procedimiento o funcin que se invoca para actuar sobre un objeto y especifica cmo se ejecuta un mensaje. Los mensajes que recibe o enva un objeto son los nicos conductos que asociacian el objeto con el mundo externo. Los datos de un objeto estn disponibles slo para ser manipulados por los mtodos del propio objeto.

Diferencia entre Clase y Objeto


Un objeto es un simple elemento, no importa lo complejo que pueda ser.
Una clase describe una familia de elementos similares, es un esquema o plantilla que se utiliza para definir o crear objetos.

Estado de un objeto
Cada uno los objetos de una clase tendr generalmente un estado particular propio. El estado esta relacionado con los valores de algunos de sus atributos (una botella puede estar llena, puede estar medio llena o vaca segn el volumen de su contenido), y con algunas operaciones comunes que comparte con los otros (como <<llenar>>, <<vaciar>>), pero tiene otros atributos (como el color y modelo de una botella) no relacionados con el estado.

Asociacin entre Clases


Expresa una conexin semntica bidireccional entre clases. Una asociacin es una abstraccin de los enlaces que existen entre los objetos instancias de las clases asociadas.
Clase A Clase B

Asociacin

Rolenames para una Asociacin entre Clases


Al extremo de una asociacin se llama rol o funcin. Cada asociacin binaria posee dos roles, uno en cada extremo. El rol describe como una clase ve a otra clase a travs de la asociacin. Para una sola asociacin, los nombres de las clases bastan para identificar el rol o funcin; el nombrado de los roles tiene mayor inters cuando existe mas de una asociacin entre dos clases.
EMPRESA
Empleador

PERSONA
Empleado

AVION

Piloto

PERSONA
Pasajero

Multiplicidad de una Asociacin


Los roles contienen tambin una informacin de multiplicidad que precisa el nmero de instancias que participan en la asociacin.
1 0..1 m..n uno y slo uno cero o uno de "m" a "n" muchos cero a muchos uno a muchos

*
0..* 1..*

empleador

obrero

Empresa

* 0..1
ejecutivo

Persona

Comunicacin entre objetos: mensajes


A los objetos slo se puede acceder a travs de su interfaz pblico. Un objeto accede a otro objeto envindole un mensaje. Un mensaje es una peticin de un objeto a otro objeto al que le solicita ejecutar uno de sus mtodos. No todos los mensajes de un objeto responden; es preciso que pertenezcan al interfaz accesible.
AUTO
MODELO: explorer PUERTAS: 2 COLOR: plata AO PROD: 2003 NRO PLACA: LJ3456 FOTO: auto1.jpg
PRECIO: 12500 FIJAR PRECIO AUTO ( ) REGISTRO ( ) TASAR AUTO ( )

tasarAuto ( )

Partes de un Mensaje
Identidad del receptor. El mtodo que se ha de ejecutar. Informacin especial necesaria para realizar el mtodo invocado (argumentos o parmetros requeridos).

Nombre de un mensaje
Un mensaje incluye el nombre de una operacin y cualquier argumento requerido por esa operacin. Con frecuencia es til referirse a una operacin por su nombre sin considerar sus argumentos.

Mensajes y Mtodos
Cuando un objeto recibe un mensaje se realiza la operacin solicitada ejecutando un mtodo. Un mtodo es el algoritmo ejecutado en respuesta a la recepcin de un mensaje cuyo nombre se corresponde con el nombre del mtodo.

Paso de Mensajes
Los objetos se comunican entre s a travs del uso de mensajes. Esencialmente el protocolo de un mensaje implica dos partes: el emisor y el receptor. Cuando un objeto emisor enva un mensaje a un objeto receptor especifica lo siguiente:
Un receptor (objeto receptor). Un nombre de mensaje (en relacin al mtodo invocado). Argumentos o parmetros (si se necesitan).
Los parmetros o argumentos pueden ser:
Datos utilizados por el mtodo invocado Un mensaje propiamente dicho

accin <objeto>.<mtodo (parmetro 1, ,parmetro n)>

Clase Parametrizada
Son modelos de clases. Una clase parametrizable es una clase que es usada para crear una familia de otras clases. Una clase parametrizable no puede ser utilizada tal cual. Conviene primero instanciarla, a fin de obtener una clase concreta que podr a su vez ser instanciada en objetos.
Item

Clase Parametrizada
Atributo 01 Atributo 02

Operacion 1 ( ) Operacion 2 ( )

Clase Parametrizada
Lista Item

Una clase parametrizable es alguna suerte de contenedor, y tambin es conocida como un template(plantilla), como los
templates de C++. Este tipo de clases no aparece generalmente en el anlisis. Las clases parametrizables se utilizan sobre todo en diseo detallado para incorporar, por ejemplo, componentes reutilizables.

Atributo

Adicionar ( ) Remover ( )

Lista<Ordenes>
Lista<Empleados>
Atributo Adicionar ( ) Remover ( ) Adicionar ( ) Remover ( ) Atributo

Clase utilidad
Es una coleccin de slo operaciones. Aquellas operaciones de uso general que no pueden acomodarse dentro de una clase particular, se encapsulan dentro de una clase utilidad para uso por las otras clases del sistema. Son clases que no pueden ser instanciadas, y que son tiles para agrupar elementos dentro de un mdulo, como por ejemplo las funciones de una biblioteca matemtica.

Clase Utilidad

Operacion 01 ( ) Operacion 02 ( )

Clase parametrizada utilidad


Es una clase parametrizada que contiene slo un conjunto de operaciones. Representa la plantilla (template) que es utilizado para crear clases utilidad.
Item Clase Utilidad

Operacion 01 ( ) Operacion 02 ( )

Metaclase
Es una clase cuyas instancias son clases en lugar de objetos. Las clases parametrizadas y las clases parametrizadas utilidad son ejemplos de metaclases.
Clase Parametrizada
Atributo 01 Atributo 02 Operacion 1 ( ) Operacion 2 ( )

Item

Item Clase Utilidad

Operacion 01 ( ) Operacion 02 ( )

Programacin orientada a objetos

Caractersticas de la Programacin Orientada a Objetos


La idea fundamental en los lenguajes orientados a objetos es combinar en una sola unidad datos y funciones que operan sobre esos datos; tal unidad se denomina objeto. Caractersticas de la POO:
Abstraccin. Encapsulacin. Herencia. Composicin. Polimorfismo.

Abstraccin
Es una de las vas fundamentales por la que los humanos combatimos la complejidad. La abstraccin surge del reconocimiento de las similitudes entre ciertos objetos, situaciones o procesos del mundo real, y en la decisin de concentrarse en esas similitudes e ignorar por el momento las diferencias.

La abstraccin centra su atencin en las caractersticas esenciales de un objeto en relacin a la perspectiva del observador

Encapsulamiento
La encapsulacin es una caracterstica que permite el ocultamiento de la informacin como un concepto avanzado de la teora de objetos. Es la propiedad que permite incluir en una sola clase los datos y los mtodos o funciones que operan sobre esa informacin. La encapsulacin de informacin y operaciones es muy importante. Los mtodos de un objeto slo pueden manipular directamente datos asociados con el objeto.

Objeto
Datos privados
Datos pblicos

Funciones privados

Funciones pblicas

El encapsulamiento oculta los detalles de la implementacin de un Objeto

Herencia
La herencia es la propiedad que permite a los objetos ser construidos a partir de las caractersticas de otros objetos.
El objetivo de la herencia es la reutilizacin del cdigo previamente desarrollado, siendo esta la real potencia de la POO. La herencia supone una clase base y una jerarqua de clases que contienen las clases derivadas de la clase base.

AVE

CRIATURA
tipo peso habitat crear( ) esperanza_vida( )

PEZ MAMIFERO
periodo_gestacion

Jerarqua y Herencia

PERSONA
nombre fecha_nacimiento origen

HOMBRE
esposa

MUJER
esposo

Tipos de Herencia
Herencia simple (jerrquica)
La simple es aquel tipo de herencia en la cual un objeto puede tener slo un ascendiente, o dicho de otro modo, una subclase puede heredar datos y mtodos de una nica clase as como aadir o quitar comportamiento de la clase base.

Herencia mltiple (en malla)


La mltiple es aquel tipo de herencia en la cual una clase puede tener ms de un ascendiente inmediato, o lo que es igual, adquirir datos y mtodos de ms de una clase.

FIGURA

PERSONA

CIRCULO

CUADRILATERO

TRIANGULO

PROFESOR

INVESTIGADOR

TRAPECIO

RECTANGULO

PROF_UNIVERSITARIO

Herencia Simple

Herencia Mltiple

Herencia mltiple (problemas)


La propiedad referida slo est en una de las clases padre. La propiedad concreta existe en ms de una superclase. Diferentes tipos de conflictos:
De nombres De valores Por defecto Por dominio Por restricciones
ESTUDIANTE EMPLEADO

Atributos -nombre estudiante -direccion -campus -carrera -ao PROFESOR ESTUDIANTE Atributos -nombre -direccion -campus -salario -estudios -carrera -ao -dias_vacaciones

Atributos -nombre empleado -direccion -estudios -campus -salario -dias_vacaciones Mtodos -Aumento_salario( )

Mtodos heredados -Aumento_salario( )

Ejemplos de conflictos
PERSONA

Conflicto de nombres:
nombre_estudiante nombre_empleado

Conflicto de valores:
campus
(atributos con igual nombre tienen valores en cada clase)

ESTUDIANTE

EMPLEADO

PROFESOR ESTUDIANTE

CLASE DERIVADA POR HERENCIA MLTIPLE

Clases Abstractas
Con frecuencia cuando se disea un modelo orientado a objetos es til introducir clases a cierto nivel que pueden no existir en la realidad pero que son construcciones conceptuales tiles. Estas clases se conocen como clases abstractas. Una clase abstracta normalmente ocupa una posicin adecuada en la jerarqua de clases que le permite actuar como un depsito de mtodos y atributos compartidos para las subclases del nivel inmediato inferior. Las clases abstractas no tienen instancias directamente. Las clases derivadas de una clase abstracta se conocen como clases concretas y pueden ser instanciadas. Tinta Impresora

Laser

Matricial

Sobrecarga
Es una propiedad que describe una caracterstica adecuada que utiliza el mismo nombre de operacin para representar operaciones similares que se comportan de modo diferente cuando se aplican a clases diferentes. Los nombres de las operaciones se pueden sobrecargar, esto es, las operaciones se definen en clases diferentes y pueden tener nombres idnticos, aunque su cdigo programado puede diferir. Si los nombres de una operacin se utilizan para nuevas definiciones en clases de una jerarqua, la operacin a nivel inferior se dice que anula la operacin a un nivel ms alto (overriding), es decir se redefine la operacin heredada.

Ejemplo de sobrecarga
Empleado
Atributos - nombre - salario - edad Operacion - Incrementar salario = salario*inflacion + comision

Administrativo

Ingeniero

Atributos Atributos - especialidad - beneficios Operacion - salario [40 80] - comision = 0.05*presupuesto - edad [25 65] Operaciones -Incrementar salario = (salario+comision)*inflacion -Comision = 0.03*presupuesto

La sobrecarga puede estar situada entre dos clases que no estn relacionadas jerrquicamente. Lenguajes como C y Pascal soportan este tipo de operaciones a travs de los operadores aritmticos, operaciones de E/S y operadores de asignacin de valores.

Objetos compuestos
AUTO nro_autos_vends concesionario color ao

Un objeto puede contener a otros objetos. A los objetos que pueden contener otros objetos se conocen como objetos compuestos. En la mayora de los sistemas los objetos no contienen en el sentido estricto a otros objetos, sino que contienen referencias a otros objetos. Un objeto compuesto consta de una coleccin de dos o ms objetos componentes, los cuales tienen una relacin del tipo parte-de con el objeto compuesto. Cuando un objeto compuesto se instancia para producir una instancia del objeto, todos sus objetos componentes se deben instanciar al mismo tiempo.

MOTOR nro_cilindros potencia cilindrada valvulas_cilindro

SISTEMA FRENOS tipo proveedor nivel_liquido

SISTEMA TRANSMISION tipo_embrague caja_cambio

CHASIS tipo color

Un ejemplo de un objeto compuesto es la clase auto. Un auto consta de diversas partes tales como un motor, un sistema de frenos, un sistema de transmisin y un chasis. Estas partes constituyen los objetos componentes del objeto auto de modo que cada uno de estos objetos componentes pueden tener atributos y mtodos que los caracterizan. AUTO Atributos nro_autos_disponibles nro_autos_vendidos Atributos compartidos concesionario Atributos de instancia modelo color precio ao Objetos componentes motor sistema_frenos sistema_transmision chasis MOTOR nro_cilindros potencia cilindrada valvulas_cilindro SISTEMA FRENOS tipo proveedor nivel_liquido

SISTEMA TRANSMISION tipo_embrague caja_cambio

CHASIS tipo color

Objeto compuesto

var 1: obj1 var 2: obj2

Estructura de objetos compuestos


obj2

obj1

Orden compra

var 1: cliente var 2: articulo

Orden compra

var 1: cliente var 2: articulo

articulo

cliente

articulo

Polimorfismo
Propiedad por la cual un mismo objeto u objetos de una misma clase u objetos de clases diferentes, responden de distinta manera a un mismo mensaje. La utilizacin de operadores o funciones de formas diversas, dependiendo de cmo estn operando se denomina polimorfismo.

La sobrecarga es una clase de polimorfismo.


La gran ventaja ofrecida por el polimorfismo y la sobrecarga es permitir que los nuevos tipos de datos sean manipulados de forma similar que los tipos de datos predefinidos, logrando as ampliar el lenguaje de programacin.

Operaciones
Son funciones o transformaciones que se aplican a todos los objetos de una clase particular. La operacin puede ser una accin ejecutada por el objeto o sobre el objeto. No se debe utilizar el mismo nombre en operaciones que tengan un significado totalmente diferente.
PERSONA nombre edad trabajar ( ) votar( ) UNIVERSIDAD nombre direccion ensear ( ) graduar( )

RECTANGULO ancho largo /area

dibujar ( ) borrar( ) calcular_area( )

Notacin extendida de una clase


Los objetos no incluyen ninguna informacin sobre sus operaciones a diferencia de las clases, ya que las operaciones son idnticas para todos los objetos de una misma clase, en cambio si de los atributos ya que varan entre objetos en relacin con su valor.

NOMBRE DE LA CLASE
Atributo1 : Tipo1 = Valor-Omision1 Atributo2 : Tipo2 = Valor-Omision2 Operacion1 (Lista Tipo -- Arg1) : Tipo -- Result1 Operacion2 (Lista Tipo Arg2) : Tipo Result2

Argumentos de una Operacin


Las operaciones pueden tener argumentos, es decir una lista de parmetros, cada uno con un tipo, y pueden tambin devolver resultados, cada uno con un tipo. Las operaciones se incorporan en la tercera seccin de la clase, como se muestra en la figura.
FIGURA
posicion color mover (v : Vector) : Boolean rotar(angulo) : Boolean

ARCHIVO nombre extensin tipo imprimir(d: dispositivo, n : entero) : Boolean borrar( ) : Boolean

Especificacin detallada de una clase


ALUMNO
DNI : char[10] nombre : char[50] fecha_nacimiento : date numero_expediente : int credito_educativo : money = 0

Tipo atributo

Atributo

Valor inicial de atributo

Operacin
alta ( ) poner_nota (asignatura: char[5], ao: int, nota: float ) matricular (curso: asignatura, ao: int) listar_expediente ( )

Argumentos de operacin

Otros conceptos relacionados con operaciones


Consultas (query): operaciones que no alteran al objeto. Accesos: operaciones para leer o escribir los atributos de un objeto. Mtodos: especificacin de bajo nivel para implementar una operacin. Poliformismo: una misma operacin que se implementa en formas diferentes. Parametrizacin: definida por el nmero y tipo de argumentos de un mtodo. Firmas: definida por el tipo y nmero de argumentos y el tipo de resultados que devuelve.

Operaciones: Vida de los objetos


Los objetos son entidades que existen en el tiempo; por ello deben ser creados o instanciados. Esta creacin se hace a travs de operaciones especiales llamadas constructores o inicializadores que se ejecutarn implcitamente por el compilador o explcitamente por el programador mediante la invocacin a los citados constructores.

Operaciones: Constructor y destructor


Un mtodo constructor de una clase es un mtodo especial que:
tiene el mismo nombre que la clase, crea un objeto y/o inicializa estado del objeto, no tiene tipo de retorno.

Un mtodo destructor, en contraposicin al constructor, elimina el vnculo y libera el espacio de memoria de un objeto, para que pueda ser ocupado nuevamente.

Constructor y Destructor
Los objetos ocupan un espacio en memoria y en consecuencia existen en el tiempo y debern crearse o instanciarse. Por la misma razn se debe liberar el espacio ocupado por los objetos en la memoria. Los constructores y destructores se declaran como parte de la definicin de una clase.

clase criatura // atributos string : tipo real : peso tipoHabitat : habitat // operaciones constructor criatura( ) inicio fin_constructor metodo predadores(E criatura: predador) inicio fin_metodo entero funcin esperanza_vida( ) inicio fin_funcion fin_clase // fin criatura Clase mamifero hereda_de criatura // atributos real : periodo_gestacion // operaciones fin_clase // fin mamifero

Clase persona hereda_de mamifero // atributos string : apellidos, nombre date : fecha_nacimiento pais : origen // operaciones fin_clase // fin persona Clase hombre hereda_de persona // atributos mujer : esposa string : nombre // operaciones fin_clase // fin hombre Clase mujer hereda_de persona // atributos hombre : esposo string : nombre // operaciones fin_clase // fin mujer

Reglas de Visibilidad
Privada ( - ): visible slo para la clase y para las clases amigas (C++). Protegida( # ): visible slo para las clases derivadas (subclases). Pblica ( + ): visible para todas las clases con las que esta asociada.

Clase asociacin
ALUMNO
1 0..*

Realiza >
0..* 0..*

Nombre
1

TRABAJO Tema

DIPLOMA Mencion
1

Nota

HABITACION Numero

La asociacin entre la clase Alumno y la clase Trabajo es del tipo n a n. La clase Trabajo describe el tema, la solucin aportada por el Alumno no se conserva. En el caso de los controles de conocimientos, cada Alumno escribe individualmente sobre un Trabajo dado y la nota obtenida no puede almacenarse en un Alumno en particular (porque ste realiza varios trabajos) ni en un Trabajo (porque hay que registrar tantas notas como alumnos). La nota es un atributo de la relacin entre la clase Alumno y la clase Trabajo.

Cualificador
Consiste en seleccionar un subconjunto de objetos entre el conjunto de objetos que participan en una asociacin. Se realiza por medio de una tupla de atributos particulares (llamada clave) y se utiliza conjuntamente con un objeto de la clase de partida. La clave se representa sobre el rol de la clase de partida bajo el nombre de cualificador o calificador. La clave pertenece a la asociacin y no a las clases asociadas. El cualificador es un atributo especial que reduce la multiplicidad efectiva de una asociacin. Las asociaciones uno a muchos y muchos a muchos pueden ser cualificadas.
DIRECTORIO

Contiene >
1..* 0..*

FILE

DIRECTORIO

FILE

path

nombre

path

ID_file 1..* 1

nombre

Calificador

Cualificador
Si el valor de un atributo depende de un contexto particular, hay que pensar recalificar el atributo como cualificador. Por ejemplo, ID_empleado no es una propiedad nica para una persona que tenga dos trabajos, lo que hace es cualificar la asociacin Empresa a Persona nombrada como Emplea>.
EMPRESA

Emplea>
0..* 0..*

PERSONA

EMPRESA

PERSONA

direccion

nombre

direccion

ID_empl 0..* 1

nombre

Cualificador

Navegabilidad
Dada una asociacin simple entre dos clases, es posible navegar de los objetos de un tipo a los del otro tipo. A menos que se indique lo contrario, la navegacin a travs de una asociacin es bidireccional. Esto conceptualmente es correcto pero existen ocasiones en donde se desea restringir este mecanismo y trabajar de forma unidireccional para dotar de mayor detalle a nuestro modelo.

Diagrama de clases mostrando navegabilidad


CLIENTE ID cliente nombre direccion telefono RUC categoria estado : : : : : : : char char char String char char String EMPLEADO ID empleado nombre telefono fecha ingreso estado : : : : : char char char Date String + + + + ORDEN VENTA nro venta fecha venta monto venta estado venta : : : : Number Date Double String : : : : int int int int 0..* 1

1 0..*

+ empleado () : int + nueva venta () : int

venta () detalle () totalizar venta () selecc cliente ()

+ historiaCredito () : int + poner categoria () : int + cliente () : int

PERSONA JURIDICA - limite credito : int

1..* PRODUCTO - ID producto : char - denominacion : char - stock minimo : int + producto () : int 1 0..* DETALLE ORDEN - cantidad : int - precio : float - descuento : float + adic item () : int PERSONA NATURAL - nro tarjeta credito : int

. Navegabilidad
Las asociaciones describen la red de relaciones estructurales que existen entre las clases y que dan lugar a los enlaces entre los objetos. Los enlaces pueden ser vistos como canales de navegacin entre los objetos. En principio, las asociaciones son navegables en ambas direcciones. En ciertos casos slo es til una direccin de navegacin. La navegabilidad se representa por una flecha orientada hacia la clase sobre la que es psible la navegacin.
USUARIO

PASSWORD

Id usuario
Direccin de navegavilidad

derecho

Expresiones de Navegabilidad
La sintaxis de las expresiones de navegacin viene dada por las cuatro reglas siguientes :
destino::=conjunto . selector destino::=conjunto . ~ selector destino::=conjunto [ expresion_booleana ] destino::=conjunto . selector [ valor_de_clave ]

El selector corresponde bien a un nombre de atributo de los objetos del conjunto, bien a un nombre de asociacin de la clase de objetos, o bien a un nombre de rol opuesto sobre un enlace que concierne a los objetos del conjunto. El destino es un conjunto de valores o de objetos cuyo nmero depende de la multiplicidad del conjunto y de la asociacin.

PERSONA nombre
hijo 1..*

padre 2

PERSONA nombre
hijo

padre id persona 2

UnaPersona.Hijos designa todos los hijos de una persona dada. UnaPersona. ~Hijos designa los padres de una persona dada. UnaPersona.Hijos[edad>=18aos] designa todos los hijos mayores de edad de una persona dada. UnaPersona.Hijo[UnNombre] identifica un hijo dado de manera no ambigua.

Você também pode gostar