Está en la página 1de 69

Programacin Avanzada

Anlisis
Modelado del Dominio

Contenido

Introduccin
Modelo de Dominio
Conceptos
Asociaciones
Atributos
Generalizaciones
Otros elementos
Restricciones

Programacin Avanzada | Anlisis: Modelado del Dominio

Introduccin

La esencia del anlisis orientado a objetos


es la descomposicin del problema en
conceptos individuales
Un Modelo de Dominio contiene
principalmente los conceptos y sus
relaciones que sean significativos en el
dominio del problema:

Significativos para el modelador


El problema y los requerimientos determinan
qu es significativo

Programacin Avanzada | Anlisis: Modelado del Dominio

Modelo de Dominio

Est enfocado en conceptos del dominio y


no en entidades de software
Contenido:

Introduccin: Breve descripcin que sirve


como introduccin al modelo
Conceptos: Clases que representan conceptos
significativos presentes en el dominio
Tipos: Data types que describen propiedades
de las clases que representan conceptos

Programacin Avanzada | Anlisis: Modelado del Dominio

Modelo de Dominio (2)

Contenido (cont.)

Relaciones: Relaciones de asociacin o


generalizacin entre las clases que
representan conceptos
Restricciones: Expresiones que restringen
las posibles instancias de los conceptos del
modelo
Diagramas: Representaciones (usualmente
uno solo) de conceptos, tipos y relaciones
presentes en el modelo

Programacin Avanzada | Anlisis: Modelado del Dominio

Conceptos

Un concepto es una idea, cosa o


elemento de la realidad o problema
que se est modelando.
Ejemplo:
Venta
fecha
hora
importe

Programacin Avanzada | Anlisis: Modelado del Dominio

v1 : Venta

v2 : Venta

Conceptos

Identificacin de Conceptos

Es muy comn omitir conceptos en esta


fase (identificacin) que pueden ser
descubiertos en una fase o etapa posterior

Al descubrirlos se los agrega al Modelo de


Dominio

Es posible encontrar conceptos


interesantes que no tengan atributos (que
tengan un rol de comportamiento ms que
de informacin)

Programacin Avanzada | Anlisis: Modelado del Dominio

Conceptos

Identificacin de Conceptos (2)

Comenzar la construccin de un
Modelo de Dominio haciendo una lista
de conceptos candidatos
Existen dos tcnicas para ello:

Lista de categoras de conceptos


Identificacin de sustantivos

Programacin Avanzada | Anlisis: Modelado del Dominio

Conceptos

Identificacin de Conceptos (3)

Lista de categoras de conceptos:

Consiste en repasar la lista de categoras de


conceptos buscando los conceptos del dominio del
problema que apliquen a cada categora

Categora
Objetos fsicos o tangibles
Descripciones de cosas
Lugares

Avin
DescripcionVuelo

Transacciones

Reserva

Roles

Piloto

Programacin Avanzada | Anlisis: Modelado del Dominio

Ejemplo

Aeropuerto

Conceptos

Identificacin de Conceptos (4)

Lista de categoras de conceptos (cont.)

La lista se puede continuar con:

contenedores de cosas
cosas contenidas en contenedores
sistemas externos
sustantivos abstractos
organizaciones
eventos
reglas y polticas
catlogos
registro de asuntos financieros o legales
servicios e instrumentos financieros

Programacin Avanzada | Anlisis: Modelado del Dominio

10

Conceptos

Identificacin de Conceptos (5)

Identificacin de sustantivos

Se identifican los sustantivos de una descripcin


textual del problema (visin del problema y/o casos
de uso) y se los considera como conceptos o
atributos candidatos
No es posible realizar esta actividad en forma
totalmente automtica

El lenguaje natural es ambiguo


No todo sustantivo refiere a un concepto significativo

Programacin Avanzada | Anlisis: Modelado del Dominio

11

Conceptos

Identificacin de Conceptos (6)

Identificacin de sustantivos (cont.)

Ejemplo:
Un cliente llega a un puesto de venta para reservar
un pasaje de avin El empleado hace la reserva en
el sistema de aerolnea.

Consideramos estos sustantivos como los


primeros candidatos para ser conceptos

Programacin Avanzada | Anlisis: Modelado del Dominio

12

Conceptos

Sugerencias

Cmo crear un Modelo de Dominio:


1.

2.
3.

4.

Listar los conceptos candidatos usando cualquiera de


las dos tcnicas presentadas (o una combinacin de
ambas)
Incluirlos en el Modelo de Dominio
Agregar las asociaciones necesarias para registrar
relaciones que necesiten ser preservadas
Agregar los atributos necesarios para satisfacer los
requerimientos de informacin

Sugerencia: Generar y mantener el diagrama en paralelo


Programacin Avanzada | Anlisis: Modelado del Dominio

13

Conceptos

Sugerencias (2)

Nombres y modelado

La estrategia del cartgrafo se aplica tanto a


la construccin de mapas y a la de Modelos
de Dominio:
Usar

nombres que existan en el territorio


Excluir caractersticas irrelevantes
No incluir cosas inexistentes

Programacin Avanzada | Anlisis: Modelado del Dominio

14

Conceptos

Sugerencias (3)

Granularidad de la especificacin

Durante el proceso de modelado, es mejor


sobre-especificar con muchos conceptos de
granularidad fina, que sub-especificar
El costo de eliminar un concepto que result
innecesario es menor que el de agregar uno
que fue omitido
Siempre es posible agregar o eliminar
conceptos durante el proceso de modelado

Programacin Avanzada | Anlisis: Modelado del Dominio

15

Conceptos

Sugerencias (4)

Error comn al identificar conceptos

El error ms comn al crear un Modelo de


Dominio es representar algo como un atributo
cuando debi ser un concepto
Si no se piensa en un concepto X
bsicamente como un nmero, un texto o un
booleano (o data types en general) entonces
X probablemente sea un concepto
En caso de duda, representarlo como un
concepto

Programacin Avanzada | Anlisis: Modelado del Dominio

16

Conceptos

Sugerencias (5)

Error comn al identificar conceptos (cont.)


Vuelo
destino

vs.
Vuelo

finaliza en

Aeropuerto
nombre

Programacin Avanzada | Anlisis: Modelado del Dominio

17

Conceptos

Sugerencias (6)

Supngase la siguiente situacin:

Una instancia de Producto representa a un


producto fsico en una tienda
Un producto tiene un nmero de serie, una
descripcin, un precio y un cdigo, que no aparecen
en ninguna otra parte
Los que trabajan en la tienda no tienen memoria
Cada vez que un producto fsico es vendido, la
correspondiente instancia de Producto es
eliminada del sistema

Programacin Avanzada | Anlisis: Modelado del Dominio

18

Conceptos

Sugerencias (7)

En el caso de que un producto se agote nadie


podr saber cul era el precio de ese producto
Ese dato estaba incluido en solamente en las
instancias que conformaban el inventario
Notar tambin que existe informacin repetida

Programacin Avanzada | Anlisis: Modelado del Dominio

19

Conceptos

Sugerencias (8)

Especificaciones y descripciones:

Se necesitan conceptos que sean descripciones de


otros conceptos
En el caso del producto necesitamos una
DescripcionProducto que registre la informacin de
los productos
Estos conceptos no representan los productos, sino
informacin acerca de ellos
Si todas las instancias de Producto son eliminadas,
la EspecificacionProducto permanece

Programacin Avanzada | Anlisis: Modelado del Dominio

20

Conceptos

Sugerencias (9)

Especificaciones y descripciones (cont.)

Ejemplo:
Producto
numSerie
descripcion
codigo
precio

p1 : Producto

p2 : Producto

numSerie = "40-51-2"
descripcion = "Video..."
codigo = "VCR99A"
precio = 270

numSerie = "40-51-4"
descripcion = "Video..."
codigo = "VCR99A"
precio = 270

vs.
Producto
numSerie

EspProducto

descripcion
codigo
precio

p1 : Producto
numSerie = "40-51-2"

p2 : Producto

: EspProducto

descripcion = "Video..."
codigo = "VCR99A"
precio = 270

numSerie = "40-51-4"
Programacin Avanzada | Anlisis: Modelado del Dominio

21

Asociaciones

Es necesario identificar aquellas asociaciones


entre conceptos que:

Sean necesarias para satisfacer los requerimientos


de informacin
Ayuden a la comprensin del Modelo de Dominio

Una asociacin es una relacin entre conceptos


que indica alguna conexin interesante o
significativa entre ellos
En general surgen del conocimiento de una
relacin que debe ser preservada por una cierto
tiempo

Programacin Avanzada | Anlisis: Modelado del Dominio

22

Asociaciones (2)

Se distinguen dos categoras de


asociaciones:

De comprensin: Permiten comprender


mejor el problema
Need-to-know: Permiten satisfacer las
requerimientos de informacin

Programacin Avanzada | Anlisis: Modelado del Dominio

23

Asociaciones

Deteccin de Asociaciones

Lista de categoras de asociaciones comunes


que pueden resultar de utilidad al momento de
realizar un Modelo de Dominio
Categora

Ejemplo

A es una parte fsica de B


A es una parte lgica de B

Ala - Avin
Tramo - Ruta

A est contenido fsicamente en B

Pasajero - Avion

A est contenido lgicamente en B

Vuelo - PlanVuelo

A es un miembro de B

Piloto - Aerolinea

Programacin Avanzada | Anlisis: Modelado del Dominio

24

Asociaciones

Deteccin de Asociaciones (2)

Lista de categoras de asociaciones (cont.)

La lista se puede continuar con

A es una descripcin de B
A es un tem de una transaccin B
A es conocido/registrado/capturado en B
A es una subunidad organizacional de B
A usa o maneja B
A se comunica con B
A esta relacionado con la transaccin B
A es una transaccin relacionada con la transaccin B
A est cerca de B
A es propiedad de B

Programacin Avanzada | Anlisis: Modelado del Dominio

25

Asociaciones

Asociaciones a Considerar

Considerar la inclusin de las siguientes


asociaciones:

Asociaciones para las que el conocimiento


de la relacin debe ser preservado por una
cierta duracin (need-to-know)
Asociaciones derivadas de la Lista de
Asociaciones
De ser necesario incluir asociaciones de
comprensin

Programacin Avanzada | Anlisis: Modelado del Dominio

26

Asociaciones

Asociaciones a Considerar (2)

Sugerencias

Concentrarse en identificar conceptos ms


que asociaciones
Evitar mostrar asociaciones derivables o
redundantes
Demasiadas asociaciones tienden a
confundir ms que a ilustrar

Programacin Avanzada | Anlisis: Modelado del Dominio

27

Asociaciones

Asociaciones a Considerar (3)

Ideal: punto intermedio entre un modelo


minimal slo con asociaciones need-to-know y
otro con todas las asociaciones concebibles
Criterio: que satisfaga todos los requerimientos
de informacin y adems permita una
comprensin de los conceptos en el problema
el equilibrio
buscado

slo
need-to-know
Programacin Avanzada | Anlisis: Modelado del Dominio

todas las
concebibles
28

Asociaciones

Notacin

La asociacin se lee: A asociada a B


nombre

*
A

direccin
de lectura

asociada a

rol2

multiplicidad

1
B
rol1
agregacin

extremos de
asociacin
Programacin Avanzada | Anlisis: Modelado del Dominio

rol
29

Asociaciones

Notacin - Multiplicidades

La multiplicidad limita la cantidad de veces


que una instancia determinada est
conectada a otras a travs de una
asociacin
asoc
Eso se indica en el extremo de asoc.
a1 b1
opuesto
a1 b2
Indica la cantidad de
a2 b2
instancias
de
B
que
pueden
asoc AB
a3 b1
conectarse con un A cualquiera

asoc

Programacin Avanzada | Anlisis: Modelado del Dominio

a1
a2

b3
b3

30

Asociaciones

Notacin Multiplicidades (2)

Se expresa como un subconjunto de los


naturales (subrango o enumerado)
m N tal que max(m)>0
Ejemplos:

*
1..*
0..1
5
3,5,8

Cualquier cantidad (cero o ms)


Al menos uno (uno o ms)
Opcionalmente uno (cero o uno)
Exactamente cinco
Exactamente tres, cinco u ocho

Programacin Avanzada | Anlisis: Modelado del Dominio

31

Asociaciones

Notacin - Roles

Especifican el papel que juegan las clases en una


asociacin
Pueden ser necesarios para eliminar
dueo
ambigedades
Persona
Empresa
empleado

p1 : Persona

p1 es dueo o
empleado de e?
y p2?
Programacin Avanzada | Anlisis: Modelado del Dominio

dueo

e : Empresa
p2 : Persona
empleado
32

Asociaciones

Notacin - Restricciones

En ocasiones es necesario especificar que


existe una restriccin entre dos asociaciones
Por ejemplo, que un par de instancias solo
estn conectadas mediante una asociacin
dueo
Persona

Empresa

{xor}
empleado

De esta forma una persona no puede ser dueo


y empleado de la misma empresa

Programacin Avanzada | Anlisis: Modelado del Dominio

33

Asociaciones

Notacin Restricciones (2)

Otro ejemplo, si dos instancias estn


conectadas por una asociacin, tambin lo
deben estar por otra asociacin
dueo

Persona

Empresa
{subset}
empleado

De esta forma una persona que sea duea de


la empresa tiene que ser empleado

Programacin Avanzada | Anlisis: Modelado del Dominio

34

Asociaciones

Notacin Restricciones (3)

Es posible tambin indicar que existe un orden


entre las instancias con las cuales
otra instancia est relacionada
Curso

*
{ordered}

Alumno

Aqu interesa el orden de los alumnos en cada


curso (por ejemplo por cdula)

Programacin Avanzada | Anlisis: Modelado del Dominio

35

Asociaciones

Notacin - Agregacin

Es una forma ms fuerte de asociacin


Significa que un elemento es parte de otro
Existen dos variantes

Agregacin compartida (agregacin)


Agregacin compuesta (composicin)

Agregacin compartida
Habitacion

Pared
1..2

Programacin Avanzada | Anlisis: Modelado del Dominio

36

Asociaciones

Notacin - Agregacin

Agregacin compuesta

Un elemento es exclusivo del compuesto


(mximo de la multiplicidad es 1)
Generalmente una accin sobre el compuesto
se propaga a las partes (tpicamente en la
destruccin)
Mano

Dedo
1

Programacin Avanzada | Anlisis: Modelado del Dominio

0..5

37

Atributos

Es necesario identificar aquellos


atributos que permitan satisfacer
los requerimientos de informacin
Un atributo se entiende como un
data value de un objeto
El tipo de un atributo es un data
type

Programacin Avanzada | Anlisis: Modelado del Dominio

38

Atributos

Notacin

Al mostrar un atributo es necesario


especificar al menos su nombre
Propiedades opcionales

Tipo, multiplicidad, valor inicial, visibilidad,


etc.
Persona
nombre
telefono
edad

Representacin
mnima
Programacin Avanzada | Anlisis: Modelado del Dominio

Persona
-nombre[1] : String
+telefono[*] : String
-edad[1] : Integer = 0

Representacin
completa
39

Atributos

Notacin (2)

Alcance de atributos

Empleado
sueldo
De instancia

Programacin Avanzada | Anlisis: Modelado del Dominio

Empleado
sueldo
De clase

40

Atributos

Notacin (3)

Un atributo (o cualquier elemento) que sea


derivable se marca con un /
Lo usual es adjuntarle una nota
especificando la forma en que se calcula
Persona
edad = hoy - fechaNacim

Programacin Avanzada | Anlisis: Modelado del Dominio

nombre
fechaNacim
/edad

41

Atributos

Sugerencias

No utilizar atributos como clave fornea

Los atributos no deben ser utilizados para


relacionar elementos del modelo
Piloto

Avion

nombre

nombrePiloto

vs.
Avion

comanda

Piloto
nombre

Programacin Avanzada | Anlisis: Modelado del Dominio

42

Atributos

Sugerencias (2)

Tipos primitivos y no-primitivos

Los tipos de los atributos son en general tipos


primitivos (Integer, String, Real, etc.)
De ser necesario es posible definir tipos noprimitivos para un problema
datatype
NoPrimitivo

Concepto
atrib : NoPrimitivo

1
Concepto

datatype
NoPrimitivo

atrib
Programacin Avanzada | Anlisis: Modelado del Dominio

43

Generalizaciones

Es posible especificar variantes de un


concepto cuando

Los subtipos potenciales representan


variantes interesantes de un cierto concepto
Un subtipo es consistente con su supertipo
(se aplica subsumption)
Todos los subtipos tienen atributos comunes
que pueden ser factorizados en el supertipo
Todos los subtipos tienen asociaciones
comunes que pueden ser factorizadas en el
supertipo

Programacin Avanzada | Anlisis: Modelado del Dominio

44

Generalizaciones

Notacin
abstracto

Evaluacion

concreto

Curso

fecha

Examen
minimo

Parcial
inst : InstanciaParcial

enumeration
InstanciaParcial
unico
primero
segundo

enumerado
(data type)
Programacin Avanzada | Anlisis: Modelado del Dominio

45

Generalizaciones

Sugerencias

Modelado de estados

Modelar los estados de un concepto


solamente cuando resulte imprescindible
para comprender el problema
No modelar los estados de un concepto X
como subtipos de X
Para esto utilizar

Atributos
Conceptos (con cuidado)

Programacin Avanzada | Anlisis: Modelado del Dominio

46

Generalizaciones

Sugerencias (2)

Modelado de estados (cont.)


Lampara

Lampara
encendida? : Boolean

Encendida

Correcto
Programacin Avanzada | Anlisis: Modelado del Dominio

Apagada

Incorrecto
47

Tipos Asociativos

Un tipo asociativo es un elemento que es


tanto clase como asociacin
Motivacin para usar tipos asociativos

Una empresa contrata a diferentes personas


para trabajar y a cada una le asigna un
sueldo particular
Una persona puede ser contratada por
diferentes empresas y puede recibir un
sueldo diferente por cada trabajo
Interesa saber cunto cobra una persona en
cada trabajo

Programacin Avanzada | Anlisis: Modelado del Dominio

48

Tipos Asociativos (2)

Incluir el sueldo en la Persona no es correcto


ya que una Persona puede tener ms de un
sueldo y ste depende del trabajo
Incluir el sueldo en la Empresa tampoco es
correcto ya que la Empresa paga sueldos
distintos a cada empleado
Esto conduce a la nocin de tipos
asociativos, los cuales permiten agregar
propiedades a las asociaciones

Programacin Avanzada | Anlisis: Modelado del Dominio

49

Tipos Asociativos

Notacin

1..*

Empresa

Persona

trabaja
sueldo
El tipo asociativo
permite
representar
multiplicidades
y atributos

Programacin Avanzada | Anlisis: Modelado del Dominio

50

Tipos Asociativos

Modelado Avanzado

Cmo se modela cuando se necesitan mltiples


instancias de la misma clase de asociacin para
un mismo par de instancias?
Ejemplo: registrar todos los sueldos de una persona
dentro de una empresa
*

1..*

Empresa

Persona

1
Empresa-Persona

La relacin
Empresa-Persona
acepta mltiples
trabajos
Programacin Avanzada | Anlisis: Modelado del Dominio

*
Trabaja
-sueldo
51

Modelo de Dominio

Errores Comunes

Modelar un estado mediante conceptos


sin ser estrictamente necesario
Modelar el concepto ms general del
problema sin ser necesario
Modelar un data type como concepto
y viceversa
Mal uso de las clases de asociacin

Programacin Avanzada | Anlisis: Modelado del Dominio

52

Modelo de Dominio

Errores Comunes (2)

Omisin de una especificacin para las


instancias
Incluir elementos del diseo
(interfaces, dependencia, etc.)
Representar asociaciones como
atributos (uso de claves forneas)
Redundancia y sobre especificacin
Especificar el tipo de estructura en una
multiplicidad de *

Programacin Avanzada | Anlisis: Modelado del Dominio

53

Restricciones

Es muy comn el hecho de que un


Modelo de Dominio no alcance a
representar exactamente la realidad
planteada
Existen casos donde un modelo
representa fielmente la mayora de los
aspectos de la realidad sin embargo
permite otros que no son deseables

Programacin Avanzada | Anlisis: Modelado del Dominio

54

Restricciones

Motivacin
trabaja en

Empresa
1

Vendedor
*

Producto
produce }

| vende

El modelo representado por este


diagrama: Refleja fielmente la realidad?
Programacin Avanzada | Anlisis: Modelado del Dominio

55

Restricciones

Motivacin (2)
Permite o considera como vlidos casos como:
Un vendedor vende un producto producido
por una empresa para la cual l no trabaja
e1 : Empresa

e2 : Empresa

v1 : Vendedor

p1 : Producto

Todas las multiplicidades


estn satisfechas!
(esta configuracin de
objetos es vlida respecto
al Modelo de Dominio)

La empresa de v1 (o sea e1) debera producir el producto que


l vende (o sea p1), o v1 debera trabajar en la empresa e2
Programacin Avanzada | Anlisis: Modelado del Dominio

56

Restricciones

Motivacin (3)

Es muy comn enfrentarse ante este tipo


de situaciones
Existen dos alternativas para solucionar el
problema

Modificar el Modelo de Dominio para evitar


que configuraciones no deseadas puedan
ser vlidas
Adjuntar restricciones al modelo tales que
invaliden aquellas configuraciones no
deseadas

Programacin Avanzada | Anlisis: Modelado del Dominio

57

Restricciones

Modificar del Modelo

En muchos casos es posible eliminar


situaciones como la descrita mediante
una modificacin al modelo
Es comn que esta modificacin no sea
menor por lo que es posible que

Insuma demasiado tiempo


La versin modificada sea muy complicada
La versin modificada restrinja los casos no
deseados pero introduzca otros nuevos

Programacin Avanzada | Anlisis: Modelado del Dominio

58

Restricciones

Adjuntar Restricciones

Otra alternativa al problema es la imposicin de


restricciones (en particular invariantes)
Un invariante es un predicado que expresa una
condicin sobre los elementos del Modelo de
Dominio y que siempre debe ser verdadero

Cuando es evaluado contra una cierta configuracin de


objetos dando un resultado de falso significa que la
configuracin de objetos no es vlida

UML no especifica el modo en que un invariante


deba ser expresado

Puede utilizarse notacin informal o formal

Programacin Avanzada | Anlisis: Modelado del Dominio

59

Restricciones

Invariantes - Informal

Los invariantes pueden ser expresados


informalmente en lenguaje natural
Un ejemplo de esto puede ser
Invariante:

Todo vendedor debe vender un producto que


sea producido por la empresa para la cual trabaja

Programacin Avanzada | Anlisis: Modelado del Dominio

60

Restricciones

Invariantes - Informal (2)

Ventajas

Es entendido por todos

Desventajas

Es ambiguo: una restriccin compleja


puede

Ser difcil de escribir y/o leer


Fcilmente dar lugar a confusiones

No puede ser procesado en forma


automtica

Programacin Avanzada | Anlisis: Modelado del Dominio

61

Restricciones

Invariantes - Formal

UML contiene un lenguaje que fue diseado


especficamente para la especificacin de este
tipo de restricciones
Es relativamente simple e intuitivo
Este lenguaje es el Object Constraint Language
Ejemplo:

context Vendedor inv:


self.producto.empresa->includes(self.empresa)

Programacin Avanzada | Anlisis: Modelado del Dominio

62

Restricciones

Invariantes - Formal (2)

Ventajas:

Una restriccin tiene un significado nico y


preciso
Puede ser procesada en forma automtica

Desventajas:

El lenguaje a utilizar puede resultar


extremadamente complejo
Requiere el aprendizaje de las
construcciones del lenguaje

Programacin Avanzada | Anlisis: Modelado del Dominio

63

Restricciones Habituales

Unicidad de Atributos (Identificacin de


Instancias)

Dominio de Atributos

No puede existir circularidad en la navegacin

Atributos Calculados

El valor de un atributo pertenece a cierto dominio

Integridad Circular

Un atributo tiene un valor nico dentro del universo de


instancias de un mismo tipo (una instancia es
identificada por ese valor)

El valor de un atributo es calculado a partir de la


informacin contenida en el dominio

Reglas de Negocio

Invariante que restringe el dominio del problema

Programacin Avanzada | Anlisis: Modelado del Dominio

64

Restricciones

Ejemplos
trabaja en

Empresa
/cantEmp

Vendedor
edad

Producto
produce }

Unicidad de Atributos
(Invariante)

codigo

Programacin Avanzada | Anlisis: Modelado del Dominio

| vende

No hay dos productos con


el mismo cdigo (el cdigo
identifica al producto)

65

Restricciones

Ejemplos (2)
trabaja en

Empresa
/cantEmp

Vendedor
edad

1..*

1..*

1..*

Producto
produce }

Dominio de Atributos
(Invariante)

1..*

codigo

Programacin Avanzada | Anlisis: Modelado del Dominio

| vende

En la empresa no puede
haber vendedores mayores
de 65 aos de edad

66

Restricciones

Ejemplos (3)
trabaja en

Empresa
/cantEmp

Vendedor
edad

1..*

1..*

1..*

Producto
produce }

Integridad Circular
(Invariante)

1..*

codigo

Programacin Avanzada | Anlisis: Modelado del Dominio

| vende

Un vendedor no puede
vender productos de una
empresa en la que no
trabaja

67

Restricciones

Ejemplos (4)
trabaja en

Empresa
/cantEmp

Vendedor
edad

1..*

1..*

1..*

Producto
produce }

Atributos Calculados
(Invariante)

1..*

codigo

Programacin Avanzada | Anlisis: Modelado del Dominio

| vende

El atributo cantEmp es la
cantidad de empleados de
la empresa

68

Restricciones

Ejemplos (5)
trabaja en

Empresa
/cantEmp

Vendedor
edad

1..*

1..*

1..*

Producto
produce }

Reglas de Negocio
(Invariante)

1..*

codigo

Programacin Avanzada | Anlisis: Modelado del Dominio

| vende

Ningn vendedor menor


de 30 aos puede vender
el producto de cdigo X

69

También podría gustarte