modelar la visibilidad de los atributos y las operaciones. La visibilidad pública se indica mediante la colocación
de un signo más (
+
) antes de una operación o atributo, mientras que un signo menos (
-
) indica una visibilidad
privada. La fi gura 8.24 muestra nuestro diagrama de clases actualizado, en el cual se incluyen los marcadores de
visibilidad. [
Nota: no incluimos parámetros de operación en la fi gura 8.24; esto es perfectamente normal. Agregar
los marcadores de visibilidad no afecta a los parámetros que ya están modelados en los diagramas de clases de las
fi guras 6.22 a 6.25].
Navegabilidad
Antes de empezar a implementar nuestro diseño en Java, presentaremos una notación adicional de UML. El
diagrama de clases de la fi gura 8.25 refi na aún más las relaciones entre las clases del sistema ATM, al agregar
fl echas de navegabilidad a las líneas de asociación. Las
fl echas de navegabilidad
(representadas como fl echas con
puntas delgadas en el diagrama de clases) indican en qué dirección puede recorrerse una asociación. Al imple-
mentar un sistema diseñado mediante el uso de UML, los programadores utilizan fl echas de navegabilidad para
ayudar a determinar cuáles objetos necesitan referencias a otros objetos. Por ejemplo, la fl echa de navegabilidad
que apunta de la clase
ATM
a la clase
BaseDatosBanco
indica que podemos navegar de una a la otra, con lo cual se
permite a la clase
ATM
invocar a las operaciones de
BaseDatosBanco
. No obstante, como la fi gura 8.25 no contie-
ne una fl echa de navegabilidad que apunte de la clase
BaseDatosBanco
a la clase
ATM
, la clase
BaseDatosBanco
no puede acceder a las operaciones de la clase
ATM
. Observe que las asociaciones en un diagrama de clases que
tienen fl echas de navegabilidad en ambos extremos, o que no tienen ninguna fl echa, indican una
navegabilidad
bidireccional
: la navegación puede proceder en cualquier dirección a lo largo de la asociación.
Figura 8.24
| Diagrama de clases con marcadores de visibilidad.
ATM
– usuarioAutenticado : Boolean = false
SolicitudSaldo
– numeroCuenta : Integer
DispensadorEfectivo
– cuenta : Integer = 500
RanuraDeposito
Pantalla
Teclado
Retiro
– numeroCuenta : Integer
– monto : Double
BaseDatosBanco
Deposito
– numeroCuenta : Integer
– monto : Double
+ autenticarUsuario() : Boolean
+ obtenerSaldoDisponible() : Double
+ obtenerSaldoTotal() : Double
+ abonar()
+ cargar()
Cuenta
– numeroCuenta : Integer
– nip : Integer
– saldoDisponible : Double
– saldoTotal : Double
+ validarNIP() : Boolean
+ obtenerSaldoDisponible() : Double
+ obtenerSaldoTotal() : Double
+ abonar()
+ cargar()
+ ejecutar()
+ ejecutar()
+ mostrarMensaje()
+ dispensarEfectivo()
+ haySuficienteEfectivoDisponible() : Boolean
+ obtenerEntrada() : Integer
+ ejecutar()
+ seRecibioSobreDeposito() : Boolean
8.19 Ejemplo práctico de Ingeniería de Software: inicio de la programación de las clases del sistema ATM
365
08_MAQ_CAP_08.indd365
4/19/081:24:01AM