Está en la página 1de 15

Generacin De Codigo C++ a partir de modelos UML

Laboratorio de sistemas de Informacin


Facultad de Informtica - Universidad Politcnica de Valencia
Este documento trata de la etapa de implementacin del desarrollo del
ciclo de vida y en particular de la creacin de cdigo fuente para implementar
un sistema.
Claramente el cdigo fuente ue se escri!e para implementar un sistema
tiene ue !asarse en los modelos generados en las etapas previas del
desarrollo de soft"are# especialmente del dise$o de diagramas de clase# de
secuencia y de estados. %a creacin de cdigo puede ser informada
simplemente por estos modelos o !asada en su transformacin &o la de alguno
de ellos' en fragmentos de cdigo. Esta clase presenta una forma de
transformar diagramas de dise$o de clases U(% en cdigo C)).
%a leccin comien*a discutiendo la distancia &gap' entre el dise$o y los
editores de U(%. %uego se centra en los fragmentos de cdigo ue pueden ser
generados por varias clases de elementos del modelo ue pueden encontrarse
en un diagrama de clases U(% incluyendo+
clases#
relaciones de generali*acin#
relaciones de delegacin#
atri!utos#
asociaciones# y
operaciones.
%a!oratorio de ,istemas de Informacin
Facultad de Informtica
Universidad Politcnica de Valencia
1
Perspectiva general del documento
la distancia &gap' entre dise$o y cdigo
cdigo para clases
cdigo para las relaciones de generali*acin
cdigo para las relaciones de delegacin
cdigo para atri!utos
cdigo para asociaciones
cdigo para operaciones
%os modelos generados durante la etapa de dise$o del desarrollo de
soft"are especifican las relaciones y comportamiento de las clases individuales
de un sistema -asta cierto punto y cierta formalidad# pero no con un nivel de
detalle ni con una notacin ue pudiera ser usada directamente como su
implementacin. Para crear un e.ecuta!le todav/a necesitamos escri!ir el
cdigo fuente del sistema. Para este fin e0isten -erramientas ue pueden
utili*arse de apoyo e incluso automati*ar partes de la actividad de generacin
de cdigo &e.. Compiladores# depuradores# generadores de cdigo'.
1 continuacin descri!iremos el uso de una de estas -erramientas+ el
generador de cdigo de C)) de 2ose. 2ose actualmente viene con dos
generadores de cdigo# uno ue genera cdigo C)) a partir del dise$o del
diagrama de clases y otro ue genera cdigo 3ava. 4uestra discusin cu!rir
solamente el generador de cdigo C)).
El generador de cdigo C)) de 2ose produce cdigo fuente C)) a partir
de la informacin contenida en un modelo de 2ose. El cdigo generado para
cada componente del modelo se determina por la especificacin del
componente en el modelo y las propiedades de la generacin de cdigo ue
pueden ser especificadas para el componente individual o ser aplicadas al
modelo como un todo &el 5ltimo puede denominarse propiedades del proyecto'.
Estas propiedades especifican una informacin de lengua.e espec/fico
reuerido para fi.ar un componente U(% en un fragmento de cdigo C)) y
permiten al programador controlar el cdigo generado para cada uno de los
componentes.
1 continuacin vamos a presentar los patrones de cdigo generados por
los diferentes tipos de componentes ue pueden encontrarse en un diagrama
de clases.
%a!oratorio de ,istemas de Informacin
Facultad de Informtica
Universidad Politcnica de Valencia
2
Diagramas de Estado
Diagramas de Clase
Diagramas de Secuencia
Etapa de Diseo
Diagrama de clases +
propiedades relacionadas con el cdigo
CODIGO
La distancia semntica entre los modelos de diseo y el cdigo
Implementacin
pro!imacin General"
#so de las $erramientas de generacin de cdigo de una $erramienta CSE
para sua%i&ar la distancia semntica
Para cada clase U(%# el generador de cdigo C)) produce los
siguientes fragmentos de cdigo+
una clase C)) ue implementa la clase U(% tiene el mismo nom!re ue
ella
comentarios e0traidos del formulario de especificacin de la clase U(%
un constructor de clase
un destructor de clase
,i la clase U(% es una clase a!stracta# es decir una clase ue no tiene
instancias directas# la clase C)) ue se crea para su implementacin se
declara como una clase a!stracta mediante un constructor virtual puro.
,i la clase U(% es una clase 6-o.a7 &una clase ue no tiene su!clases'
no podemos especificarlo en la clase C)). ,e podr/a implementar un
anali*ador sintctico ue compro!ara ue la clase no tiene su!clases. En U(%
una clase -o.a se representa poniendo la cadena 6leaf7 entre corc-etes !a.o el
nom!re de la clase.
,i la clase U(% -a sido estereotipada como una clase interface
entonces -eredaremos de una clase ue defina la interfa* &con mtodos
virtuales puros'.
,i la clase U(% pertenece a una serie de pauetes anidados entonces
dentro de un fic-ero de ca!ecera se incluir las sentencias 8include ue
definan la .eraru/a de pauetes ue contiene la clase creada.
%a!oratorio de ,istemas de Informacin
Facultad de Informtica
Universidad Politcnica de Valencia
'
Cdigo para clases
ca(ecera de clase
modi)icadores de clase *a(stract+ lea),
constructor
anotaciones e!tra-das de la especi)icacin de clase
clases esteorotipadas como catlogos de inter)aces
declaracin de pa.uetes
Como se muestra en la transparencia de arri!a# el generador de cdigo
C)) produce una clase C)) llamada %i!raryItem para implementar la clase
U(% %i!raryItem.
El contenido del campo de documentacin del formulario de
especificacin de la clase U(% se transforma en un comentario ue precede la
definicin de la clase.
%a clase C)) %i!raryItem fue declarada con un constructor virtual puro
ya ue la clase U(% %i!raryItem era una clase a!stracta. En U(% las clases
a!stractas se denotan poniendo sus nom!res en cursiva. 2ose provee un
modificador 6a!stract7 en el formulario de especificacin de clases ue puede
ser usado para especificar ue una clase es a!stracta.
4tese tam!in ue el generador de cdigo C)) gener una sentencia
8include indicando la estructura anidada de pauetes ue contiene la clase
%i!raryItem y un constructor y destructor para esta clase.
Un e.emplo de clase C)) generada para implementar una clase
estereotipada como una interface se muestra en la siguiente transparencia.
%a!oratorio de ,istemas de Informacin
Facultad de Informtica
Universidad Politcnica de Valencia
/
00Entity Class11
LibraryItem
Esta es una clase .ue representa
los o(2etos de una li(rer-a
EntityClasses
Cdigo para clases - Ejemplo 1
334ic$ero )uente 553EntityClass5$
366
Esta es una clase .ue representa
el o(2eto incluido en la li(rer-a
63
pu(lic class Li(raryItem 7
Li(raryItem*, 7889
CODIGO C++
%a transparencia de arri!a muestra el fic-ero interface.- creado para
implementar una clase U(% ue -a sido estereotipada como una clase de
interface. 4tese ue no se -a creado un constructor para esta clase
99interface::.
El cdigo por defecto ue se genera para una relacin de generali*acin
entre dos clases en un diagrama de clases U(% consiste en una declaracin
de -erencia en la ca!ecera de la clase C)) ue implementa la su!clase.
1dems# si la superclase no pertenece al mismo pauete ue la su!clase se
genera una sentencia 8include ue importa el fic-ero ue representa al
pauete.
4tese ue# el cdigo generado para las clases U(% ue tienen ms de
una superclase se resuelve utili*ando la -erencia m5ltiple.
%a!oratorio de ,istemas de Informacin
Facultad de Informtica
Universidad Politcnica de Valencia
:
Cdigo para relaciones de generalizacin
la su!clase se declara ue -ereda de la superclase llamando
al constructor de la superclase
si la su!clase -a sido estereotipada como una clase
99interface::# la superclase de!e ser tam!in a!stracta
si la superclase no pertenece al mismo pauete ue la
su!clase tam!in se genera una sentencia 8include para importar el
Cdigo para clases - Ejemplo 2
334ic$ero )uente 553SortedSet5$
36
Esta es una clase .ue representa
el o(2eto incluido en la li(rer-a
63
pu(lic class SortedSet 7
%irtual SortedSet*, ; <89
CODIGO C++
00Inter)ace11
SortedSet
%a transparencia de arri!a muestra el cdigo C)) generado para la clase
U(% %oan(enu. Este cdigo incluye+ una sentencia de -erencia ue apunta a
la clase (enu ue implementa la relacin de generali*acin entre %oan(enu y
(enu en el diagrama U(%;y una sentencia 68include7 ue importa (enu desde
el fic-ero donde -a sido definido &tools.-'.
4tese tam!in ue la clase C)) %oan(enu de!er/a revisarse para ue
no tuviera su!clases ya ue la clase U(% %oan(enu se declara como una
clase -o.a en el diagrama U(%. El diagrama de la transparencia utili*a la
notacin estndar U(% para denotar las clases -o.a. <e acuerdo con esta
notacin# una clase -o.a se denota poniendo la cadena 6leaf7 entre corc-etes
!a.o su nom!re. En 2ose -ay una propiedad especial llamada 6final7 ue puede
usarse para determinar si la clase es una -o.a o no. ,i el valor de esta
propiedad se esta!lece a 6true7 &6false7' la clase se especifica como una clase
-o.a &no -o.a'.
%a!oratorio de ,istemas de Informacin
Facultad de Informtica
Universidad Politcnica de Valencia
=
00#Inter)ace11
LoanMenu
{leaf}
00tools5$11
>enu
#I? ?ac@age
Cdigo para relaciones de generalizacin - Ejemplo
334ic$ero )uente 553EntityClass5$
366
Esta es una clase .ue representa
el o(2eto incluido en la li(rer-a
63
pu(lic class Li(raryItem 7
Li(raryItem*, 7889
CODIGO C++
00tools5$11
>enu
tools
El cdigo por defecto ue es generado para una relacin de delegacin ue
conecta con una clase declarada como 99interface:: en un diagrama de
clases de U(% consiste en una implementacin en la ue se declara ue la
clase origen de la relacin es amiga &friend' de la clase declarada como
99interface::. Pudiendo la clase origen usar el servicio ue ofrece el catlogo
de interfaces. 1dems# en la declaracin del catlog se declaran las funciones
ue se van a e0portar con el identificador friend para declarar las funciones ue
podrn ser utili*adas rompiendo la visi!ilidad de la clase. 2ecordar ue este
tipo de relaciones no tiene relacin de transitividad.
En la transparencia de arri!a# la clase U(% =!.ect,et se declara como
una su!clase de la clase U(% 1rray%ist y desarrolla la clase 99interface:: ,et.
%a!oratorio de ,istemas de Informacin
Facultad de Informtica
Universidad Politcnica de Valencia
A
Cdigo para las relaciones de delegacin
El cdigo es generado solamente para las relaciones de delegacin
entre una clase normal y una clase catalogada como de 00inter)aces115
La )uncin delegada es declarada como )riends * amiga,
#na clase puede tener un nBmero indeterminado de delegaciones
Si la inter)ace no pertenece al mismo pa.uete .ue la clase .ue lo
usa+ se de(e declarar la sentencia #include# para importarlo5
O(2ectSet
00Inter)ace11
Set
DC?ac@age
Cdigo para relaciones de delegacin - Ejemplo
334ic$ero )uente 553O(2ectSet5$
pu(lic class O(2ectSet 7
)riend rrayList""Set*,89
CODIGO C++
rray List
<e este modo# la clase C)) generada para implementar =!.ect,et -ereda de la
clase 1rray%ist e implementa la clase interface ,et.
Para cada atri!uto de una clase U(%# el generador de cdigo C)) crea
un campo con el mismo nom!re ue el atri!uto y cuyo tipo es el tipo
especificado para el atri!uto en el diagrama de clases.
%a visi!ilidad del campo en la clase C)) se determina por la visi!ilidad
del atri!uto en el diagrama de clases. %a visi!ilidad tiene ue ver con la
capacidad ue tienen otras clases diferentes a la clase ue posee el atri!uto de
acceder a l directamente. En U(%# la visi!ilidad de un atri!uto puede ser+
pu!lic > un atri!uto p5!lico puede ser accedido por cualuier clase
protected > un atri!uto protegido puede ser accedido solamente por las
su!lcase de la clase a la ue pertenece
private > un atri!uto privado no puede ser accedido por ninguna otra clase
ue no sea la clase a la ue pertenece
Estos tipos de visi!ilidad en U(% corresponden directamente a los
modificadores de visi!ilidad ue C)) soporta para campos de clase &y
mtodos' y de esta forma pueden ser implementados por estos modificadores.
,i el alcance de un atri!uto U(% es la clase a la ue pertenece &en oposicin a
las instancias de su clase'# el campo generado es modificado por el
modificador static. Este modificador indica ue el campo guarda un valor ue
se refiere a la clase como un todo o es com5n a todas las instancias de la
clase. En am!os casos# el campo slo puede ser accedido al nivel de la clase.
En la siguiente transparencia damos un e.emplo de cdigo generado
para implementar atri!utos U(%.
%a!oratorio de ,istemas de Informacin
Facultad de Informtica
Universidad Politcnica de Valencia
D
Cdigo para atributos
se crea un campo para cada atri(uto
la %isi(ilidad de un atri(uto en una clase #>L *e25 ?u(lic+ protected+
pri%ate, determina el modi)icador de %isi(ilidad del campo generado
un campo esttico es creado para un atri(uto de alcance de clase *e25
#n atri(uto con la marca static en Eose,
El e.emplo de la transparencia superior muestra el cdigo generado en C)) por
la clase BookCopy# la cul posee cuatro atri!utos. %a plantilla usada para la
generacin de cdigo sigue los siguientes patrones+
El campo privado code se codifica como un atri!uto private.
%os campos p5!licos shelfmark y lib_site son implementados como
atri!utos de tipo public.
El campo protegido esttico noOfItems corresponde a un atri!uto
static protected.

4ota+ El nom!re y el tipo del atri!tuo noOfItems -as sido su!rayado para
representar el -ec-o de ue es un atri!uto de clase y no de instancia como
reuiere U(%. 4o o!stante# 2ose no trata esta notacin de U(%. Un atri!uto de
clase es especificado usando la pala!ra reservada static en el cuadro de
especificaciones. Un atri!uto declarado como esttico corresponde a una
varia!le de clase.
%a!oratorio de ,istemas de Informacin
Facultad de Informtica
Universidad Politcnica de Valencia
F
Coo@Copy
Cdigo para atributos - Ejemplo
334ic$ero )uente 553Coo@Copy5$
class Coo@Copy 7
pri%ate"
String code9
pu(lic"
String sel)mar@9
String linGsite9
protected"
static Integer noO)Items9
CODIGO C++
Hcode"Li(raryCode
+sel)mar@"String
+li(Gsite"String
InoO)Items"Integer
Jaria(le de Clase
<ecir ue una asociacin en U(% es una relacin entre dos clases. Cada una
de ellas .uega un papel en la asociacin.
El cdigo por defecto generado en una asociacin en U(% consiste en
un campo por cada asociacin accesi!le. Este campo es generado en la
clase generada por C)) para implementar la cone0in con la case
asociada. El tipo del campo depende de la multiplicidad del papel de la
asociacin. ,i la cota superior de la multiplicidad es uno entonces la clase
en C)) es implementada con el tipo de la clase de la asociacin
apuntada. ,i la cota superior indica ue la multiplicidad es n entonces la
implementacin se reali*a como una lista. %a visi!ilidad del campo es
determinada por la visi!ilidad asociada al papel como en el caso de los
atri!utos.
Un ejemplo de cdigo generado por defecto en una asociacin es
mostrado en la transparencia superior.
El generador de cdigo C)) codifica el campo p5!lico book y el campo
privado publisher para representar los papeles de book y publisher de la
asociacin publication. El primer campo -a sido implementado con la clase
definida en C)) publisher. El campo posterior se -a definido en C)) con la
clase book. =!servar ue el tipo del campo book es una lista de identificadores
de tipo book ms ue un identificador 5nico. Esto -a sido necesario de!ido a
ue la multiplicidad del papel book es de ?..@.
%a!oratorio de ,istemas de Informacin
Facultad de Informtica
Universidad Politcnica de Valencia
1<
Cdigo para asociaciones - Ejemplo
334ic$ero )uente 553?u(lis$er5$
class ?u(lis$er 7
pu(lic"
Klist Coo@ 9
?u(lis$er*, 78 89
CODIGO C++
?u(lis$er Coo@
+ (oo@
1556 1551
H pu(lis$er
pu(lication
334ic$ero )uente 553 Coo@5$
class Coo@ 7
pri%ate"
?u(lis$er pu(lis$er 9
pu(lic" ?u(lis$er*, 78 89
Cdigo para la asociacin entre clases
Los campos .ue posee la asociacin son declarados con su propio
tipo en la clase5
#na clase en C++ resuel%e la asociacin entre clases apuntando a las
clases de la asociacin5
La multiplicidad de los roles determina el tipo e!acto de los campos
pero
El generador de Eose no trata la asociacin de clases5
Cdigo para las asociaciones
#n campo por cada asociacin accesi(le desde la clase )uente de la
asociacin5
La %isi(ilidad de un campo es determinada por la %isi(ilidad
indicada en la asociacin5*p5 e25 Private, public, protected,
#n campo esttico es creado por cada asociacin a una %aria(le de
clase5
La multiplicidad de la asociacin es n si el tipo del campo es un
%ector de elementos cuyo tipo es la clase apuntada por la asociacin5
Para implementar la asociacin entre clases el generador de cdigo C))
de!er/a crear+
Una clase en C)) para implementar la asociacin.
%os campos de la asociacin como campos de la clase ue apuntan.
Campos por cada clase apuntada.
4o o!stante# esto no lo -ace. 2ose solamente genera una plantilla para la
asociacin entre clases. %a clase en C)) ue implementa la asociacin
no tiene campos apuntando a las clases asociadas. %os campos son
creados en la asociacin de clases para implementar la asociacin como
si no estuvieran enla*ados a una asociacin entre clases.
El e.emplo de la transparencia superior muestra el cdigo ue de!er/a
-a!er sido generado para una asociacin entre clases. El generador de cdigo
de!er/a crear una clase en C)) para implementar la asociacin de la clase
oan y los campos en esta clase apuntando a las clases de la asociacin oan&
ver campos borro!er y book en la clase oan'. Aam!in de!er/a -a!er creado
los campos en las clases de la asociacin apuntando a la implementacin de la
clase. & ver campo oan de la clase Borro!erClass'.
1dvertir ue el generador de C)) de 2ose no crea este cdigo. En el
caso de ue lo -iciera slo generar/a la plantilla de la clase en C)) de oan
& sin lo campos para la asociacin de oan'.# un campo llamado book en la
clase borro!er# y un campo llamado borro!er en la clase BookCopy.
%a!oratorio de ,istemas de Informacin
Facultad de Informtica
Universidad Politcnica de Valencia
11
Ejemplo de cdigo para asociaciones
con clases asociacin
334ic$ero )uente 553CorroLerClass5$
class CorroLerClass 7
pu(lic"
Klist Loan9
CorroLerClass*, 89
Coo@Copy CorroLerClass
+ (orroLer
<551 <55n
+ (oo@
loan
334ic$ero )uente 553Coo@5$
class Loan 7
pu(lic"
CorroLerClass (orroLer9
Coo@Copy (oo@9
Loan*, 89
Loan
+ out" Date
+ due" Date
Para cada operacin de una clase en U(% el generador de C)) produce+
%a ca!ecera del mtodo en la clase C)) ue implementa la operacin.
%a declaracin del mtodo se !asa en la declaracin de la operacin.
El esueleto del cuerpo del mtodo. El fragmento de cdigo ue
implementa el mtodo lo codifica el programador.
%os comentarios se e0traen de la documentacin asociada a la
operacin.
%a visi!ilidad del mtodo generado depende de la visi!ilidad de la operacin# la
cual puede ser p5!lica# protegida y privada. %a visi!ilidad de estas operaciones
funciona de igual modo a la visi!ilidad de los atri!utos ya comentadas
anteriormente.
4otar ue el programador tiene ue definir las operaciones para acceder a los
valores de los campos privados y protegidos de la clase.
%a!oratorio de ,istemas de Informacin
Facultad de Informtica
Universidad Politcnica de Valencia
12
Cdigo para las operaciones
La ca(ecera de un mMtodo se (asa en la declaracin de la operacin5
La %isi(ilidad del mMtodo depende de la %isi(ilidad de la operacin5*
por de)ecto" pB(lica *+,+ protegida *I, y pri%ada *H,,5
El cuerpo del es.ueleto del mMtodo5 *es necesario .ue sea
completado por el usuario+ suministrando el cdigo necesario,5
Comentarios e!tra-dos de la documentacin de la operacin5
00 entity class 11
Li(raryItem
Cdigo para operaciones - Ejemplo 1
334ic$ero )uente 553Li(raryItem5$
class Li(raryItem 7
Li(raryItem*,
36
Esta operacin se in%oca en un elemento de (i(lioteca
.ue puede ser prestado cuando el sistema reci(e
una peticin para anali&ar este elemento5
63
%oid c$ec@Out*String cardNum+ Date outDate,
8
CODIGO C++
+c$ec@Out*cardNum"String+ outDate"Date,
Esta operacin se in%oca en un elemento de (i(lioteca
.ue puede ser prestado cuando el sistema reci(
una peticin para anali&ar este elemento5
Como muestra la transparencia superior# el cdigo generado por el generador
de C)) para el mtodo c-ecB=ut&,tring card4um# <ate out<ate' para
implementar la operacin en U(% c-ecB=ut&card4um+,tring# out<ate+<ate'. %a
visi!ilidad de los mtodos fue declarada como p5!lica para implementar la
visi!ilidad de la operacin definida en el diagrama de clases. Aam!in# la
anotacin asociada con la operacin en el diagrama de clases fue
transformada en un comentario en C)) dentro del cdigo.
%a operacin estimate"enalty declarada por la clase a!stracta Borro!ableItem
tiene declarada una operacin a!stracta&en U(% una operacin a!stracta se
denota poniendo la letra en cursiva' El significado de esta operacin es el
clculo de la penali*acin ue el solicitante del prstamo de un li!ro tiene ue
pagar si no devuelve el prstamo cuando es de!ido. %a penali*acin depende
de la tasa de penali*acin diaria del tipo de o!.eto del prstamo & por e.emplo#
li!ros y autos .udiciales'# llevando cada uno un tipo de penali*acin distinta. %a
implementacin de la operacin estimate"enalty se reali*a en las su!clases de
la clase Borro!ableItem.
Consecuentemente# el mtodo estimate"enalty generado para la
implementacin de esta operacin en la clase Borro!ableItem es declarada
como un mtodo a!stracto y no posee el esueleto del cuerpo para introducir el
cdigo de la implementacin.
%a!oratorio de ,istemas de Informacin
Facultad de Informtica
Universidad Politcnica de Valencia
1'
Cdigo para operaciones - Ejemplo 2
class Coo@Copy" pu(lic CorroLa(leItem 7
O
Eeal estimate?enalty*, 8
class ?roceedings" pu(lic CorroLa(leItem 7
O
Eeal estimate?enalty*, 8
class CorroLa(leItem 7
%irtual Eeal estimate?enalty*,;< 8
CODIGO C++
?roceedings
+ estimate?enalty*,7)inal8
Coo@Copy
+ estimate?enalty*,7)inal8
00 entity class11
CorroLa(leItem
+ estimate?enalty*,
(stract
%as dos su!clases de Borro!ableItem & en este caso BookCopy y
"roceedings' en la transparencia superior redefinen la operacin
estimate"enalty para indicar ue ellas proveen la implementacin y se declaran
con la marca final. & o euivalente a no polimrfica' Para implementar esas
operaciones# el generador de cdigo de C)) produce unas nuevas ca!eceras y
cuerpos para ellas en las su!clases BokkCopy y "roceedings. 4otar ue
am!os mtodos son marcados con la notacin final y su implementacin no
puede ser so!recargada por ninguna su!clase de las clases BokkCopy y
"roceedings.
En la transparencia superior# la clase Borro!ableItem tiene dos operaciones+
%a operacin reserve&until+<ate' y la operacin noOfItems&'+Integer.
%a operacin reserve&until+<ate' puede ser invocada por un o!.eto presta!le
para reservarlo durante un cierto per/odo de tiempo. Una reserva puede ser
-ec-a solamente si el o!.eto actualmente no est prestado y no tiene una
reserva previa ue se solape con el per/odo de reserva solicitado. ,i ms de un
flu.o de control puede invocar esta operacin al mismo o!.eto simultneamente
entonces es en estos casos cuando las reservas pueden solaparse. Para evitar
esto# la operacin es declarada como concurrente. ,e de!e o!servar ue en
U(%# la restriccin concurrente -a sido anotada .unto a la declaracin para
marcarla como concurrente. En C)) la concurrencia no es implementada.
%a operacin noOfItems&'+Integer puede ser invocada para contar los o!.etos
cuyas instancias de la clase Borro!ableItem -an sido creadas. Esta operacin
%a!oratorio de ,istemas de Informacin
Facultad de Informtica
Universidad Politcnica de Valencia
1/
Cdigo para operaciones - Ejemplo 3
class CorroLa(leItem 7
%oid reser%e*Date until,
static Integer noO)Items*,
8
CODIGO C++
00 entity class11
CorroLa(leItem
+ reser%e*until"Date,7concurrent8
+ noO)Items*,"Integer
Sync$roni&ed
Static
es declarada como una varia!le de clase & en U(% una operacin con una
operacin de clase se marca su!rayndola'. <e este modo el mtodo generado
en C)) es declarado como un mtodo esttico.
%a!oratorio de ,istemas de Informacin
Facultad de Informtica
Universidad Politcnica de Valencia
1:

También podría gustarte