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